/* load files onto the Network Walkman */ #include #include #include #include #include #include #include void usage( void ) { if ( errno ) { perror( "nw-rm" ); } else { fprintf( stderr, "usage: %s /device/path tracknum\n", "nw-rm" ); } exit( 1 ); } int main( int argc, char *argv[] ) { nw_device_t *dev; guint16 newtrack = 1; errno = 0; /* safety clown says ... */ if ( argc < 2 ) { usage(); } if ( argc == 2 ) { /* Go for auto-probe */ GList *devs; guint32 d = 0; fprintf( stderr, "no device specified, auto-probing..." ); devs = nw_get_devs( NULL ); if ( g_list_length( devs ) == 0 ) { fprintf( stderr, "no device found\n" ); exit( 1 ); } else { fprintf( stderr, "done\n" ); } if ( g_list_length( devs ) > 1 ) { fprintf( stderr, "More than one device found, please be more specific : \n" ); while( g_list_nth( devs, d )) { nw_device_t *dv = g_list_nth_data( devs, d ); fprintf( stderr, " %s", (gchar *)nw_get_attr( dv , "device" )); if ( nw_get_attr( dv , "mountpoint" ) != NULL ) { fprintf( stderr, " (mounted at %s)", (gchar *)nw_get_attr( dv , "mountpoint" )); } fprintf( stderr, "\n" ); nw_dev_free( dv ); d++; } g_list_free( devs ); exit( 1 ); } else { dev = g_list_nth_data( devs, d ); fprintf( stderr, "Using device %s", (gchar *)nw_get_attr( dev , "device" )); if ( nw_get_attr( dev , "mountpoint" ) != NULL ) { fprintf( stderr, " (mounted at %s)", (gchar *)nw_get_attr( dev , "mountpoint" )); } fprintf( stderr, "\n" ); } newtrack = atoi( argv[1] ); } else { dev = nw_dev_init( argv[1], NW_GUESS ); newtrack = atoi( argv[2] ); } if ( !newtrack ) { usage(); } if ( dev != NULL ) { fprintf( stderr, "trying to delete track %d\n", newtrack ); newtrack = nw_del_track( dev, newtrack ); if ( newtrack ) { fprintf( stderr, "deleted %d\n", newtrack ); } else { fprintf( stderr, "failed: %s\n", strerror( errno )); } /* check the device for empty folders */ STARTOVER: { GList *node = nw_get_folderlist( dev ); guint16 folder = 0; while( node ) { nw_folder_t *fptr = node->data; folder++; if ( g_list_length( nw_get_folder_tracklist( fptr )) == 0 ) { fprintf( stderr, "deleting empty folder\n" ); nw_del_folder( dev, folder ); goto STARTOVER; /* index will be out of whack otherwise */ } node = g_list_next( node ); } } nw_dev_free( dev ); } return 0; }