Mac-Pasteboard
view release on metacpan or search on metacpan
FREE ("pbl_free_all data", data);
}
#undef ROUTINE
#define ROUTINE "pbl_release"
OSStatus pbl_release (void * pbref) {
LOG_ENTRY;
LOG_ARG_P (pbref, ")\n");
if (pbref != NULL) CFRelease (pbref);
return (OSStatus) 0;
}
#undef ROUTINE
#define ROUTINE "pbl_retain"
OSStatus pbl_retain (void * pbref) {
LOG_ENTRY;
LOG_ARG_P (pbref, ")\n");
if (pbref != NULL) CFRetain (pbref);
return (OSStatus) 0;
}
#include "constant-h.inc"
#include "constant-c.inc"
#ifdef TEST
#define ARGUMENT(x) (argc > x ? argv[x] : NULL)
#define ARGUMENT_D(x,y) (argc > x ? argv[x] : y )
void help () {
fprintf( stderr, "Valid commands are:\n" );
fprintf( stderr, "clear [pasteboard_name]\n" );
fprintf( stderr, "copy data [flavor [pasteboard_name]]\n" );
fprintf( stderr, "create [pasteboard_name]\n" );
fprintf( stderr, "paste [pasteboard_name [flavor]]\n" );
fprintf( stderr, "pbl_all [pasteboard_name]\n" );
}
int main (int argc, char **argv) {
OSStatus stat = 1;
if (argc > 1) {
if (!strcmp (argv[1], "clear")) {
PasteboardRef pbref;
stat = pbl_create (ARGUMENT(2), (void **) &pbref, NULL);
if (!stat && pbref != NULL) {
stat = pbl_clear (pbref);
CFRelease (pbref);
}
} else if (!strcmp (argv[1], "copy")) {
if (ARGUMENT(2) == NULL) {
fprintf (stderr, "You must supply an argument to 'copy'\n");
} else {
PasteboardRef pbref;
stat = pbl_create(
ARGUMENT_D( 4, "com.apple.pasteboard.clipboard" ),
(void **) &pbref, NULL );
if (!stat && pbref != NULL) {
stat = pbl_clear (pbref);
if (!stat)
stat = pbl_copy (
pbref,
(const unsigned char *) ARGUMENT(2),
strlen (ARGUMENT(2)),
1, ARGUMENT(3), 0);
CFRelease (pbref);
}
}
} else if (!strcmp (argv[1], "create")) {
PasteboardRef pbref = NULL;
char *pbname = NULL;
stat = pbl_create (
ARGUMENT_D( 2, "com.apple.pasteboard.clipboard" ),
(void **) &pbref, &pbname);
if (pbname != NULL) {
fprintf (stderr, "Created pasteboard \"%s\"\n", pbname);
FREE ("main pbname", pbname);
}
if (pbref != NULL)
CFRelease (pbref);
} else if (!strcmp (argv[1], "paste")) {
PasteboardRef pbref;
stat = pbl_create(
ARGUMENT_D( 2, "com.apple.pasteboard.clipboard" ),
(void **) &pbref, NULL );
if (!stat && pbref != NULL) {
unsigned char* data;
size_t size;
PB_FLAVOR_FLAGS flags;
stat = pbl_paste( pbref, 1, 0UL, ARGUMENT( 3 ),
&data, &size, &flags );
if ( data != NULL ) {
data[size] = '\0';
printf( "data: '%s'\n", data );
printf( "size: %lu\n", size );
printf( "flags: %#lx\n", ( unsigned long ) flags );
}
CFRelease (pbref);
}
} else if (!strcmp (argv[1], "pbl_all")) {
PasteboardRef pbref;
stat = pbl_create(
ARGUMENT_D( 2, "com.apple.pasteboard.clipboard" ),
(void **) &pbref, NULL );
if (!stat && pbref != NULL) {
pbl_rqst_t rqst = {
1,
0,
NULL,
1,
};
pbl_resp_t *resp;
size_t num_resp;
int inx;
stat = pbl_all( pbref, &rqst, &resp, &num_resp );
for ( inx = 0; inx < num_resp; inx++ ) {
printf( "\nid: %lu\n", resp[inx].id );
printf( "flavor: %s\n", resp[inx].flavor );
printf( "flavor flags: %#lx\n", ( unsigned long ) resp[inx].flags );
if ( resp[inx].data != NULL ) {
printf( "data: %s\n", resp[inx].data );
printf( "size: %lu\n", resp[inx].size );
}
}
pbl_free_all( resp, num_resp );
CFRelease (pbref);
}
} else {
fprintf (stderr, "%s command %s not recognized.\n", argv[0],
argv[1]);
help ();
}
} else {
fprintf (stderr, "%s needs at least one argument.\n", argv[0]);
help ();
}
if (stat) {
fprintf (stderr, "Error - Status = %li\n", ( long ) stat);
}
return stat ? 1 : 0;
}
#endif
( run in 0.908 second using v1.01-cache-2.11-cpan-84e82930d8c )