Last active
          October 23, 2025 20:48 
        
      - 
      
- 
        Save mwender/49609a18be41b45b2ae4 to your computer and use it in GitHub Desktop. 
Revisions
- 
        mwender renamed this gist Feb 13, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewingFile renamed without changes.
- 
        mwender created this gist Feb 13, 2015 .There are no files selected for viewingThis file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,45 @@ #import <Foundation/Foundation.h> #import <Cocoa/Cocoa.h> #import <unistd.h> BOOL copy_to_clipboard(NSString *path) { // http://stackoverflow.com/questions/2681630/how-to-read-png-image-to-nsimage NSImage * image; if([path isEqualToString:@"-"]) { // http://caiustheory.com/read-standard-input-using-objective-c NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput]; image = [[NSImage alloc] initWithData:[input readDataToEndOfFile]]; }else { image = [[NSImage alloc] initWithContentsOfFile:path]; } // http://stackoverflow.com/a/18124824/148668 BOOL copied = false; if (image != nil) { NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; [pasteboard clearContents]; NSArray *copiedObjects = [NSArray arrayWithObject:image]; copied = [pasteboard writeObjects:copiedObjects]; [pasteboard release]; } [image release]; return copied; } int main(int argc, char * const argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; if(argc<2) { printf("Usage:\n\n" "Copy file to clipboard:\n ./impbcopy path/to/file\n\n" "Copy stdin to clipboard:\n cat /path/to/file | ./impbcopy -"); return EXIT_FAILURE; } NSString *path= [NSString stringWithUTF8String:argv[1]]; BOOL success = copy_to_clipboard(path); [pool release]; return (success?EXIT_SUCCESS:EXIT_FAILURE); }