Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: UTF-8 -*-
- require 'dl/import'
- module CoreFoundation
- extend DL::Importer
- dlload '/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation'
- extern 'void* CFStringCreateWithCString(void*, char*, int)'
- extern 'void* CFArrayCreateMutable(void*, int, void*)'
- extern 'void CFArrayAppendValue(void*, void*)'
- end
- class String
- def to_cf
- CoreFoundation.CFStringCreateWithCString(nil, self.frozen? ? dup : self, 0)
- end
- end
- class Array
- def to_cf
- CoreFoundation.CFArrayCreateMutable(nil, size, nil).tap do |array|
- each do |e|
- CoreFoundation.CFArrayAppendValue(array, e.to_cf)
- end
- end
- end
- end
- module MetaData
- extend DL::Importer
- dlload '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata'
- extern 'void* MDItemCreate(void*, void*)'
- extern 'void MDItemSetAttribute(void*, void*, void*)'
- class Item
- def where_froms=(args)
- set_attribute('kMDItemWhereFroms', args)
- end
- private
- def initialize(path)
- @item = MetaData.MDItemCreate(nil, path.to_cf)
- end
- def set_attribute(name, value)
- MetaData.MDItemSetAttribute(@item, name.to_cf, value.to_cf)
- end
- end
- end
- item = MetaData::Item.new(ARGV.shift)
- item.where_froms = ARGV
Add Comment
Please, Sign In to add comment