int cmd_loadtab ( int argc, char ** argv, mpd_Connection * conn ) { mpd_InfoEntity * entity; char * sp; mpd_PlaylistFile * pl; mpd_sendLsInfoCommand(conn,""); printErrorAndExit(conn); while((entity = mpd_getNextInfoEntity(conn))) { if(entity->type==MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { pl = entity->info.playlistFile; sp = pl->path; while((sp = strchr(sp,' '))) *sp = '_'; if(argc==1) { if(strncmp(pl->path,argv[0], strlen(argv[0]))==0) { printf("%s\n", charset_from_utf8(pl->path)); } } } mpd_freeInfoEntity(entity); } my_finishCommand(conn); return 0; }
int cmd_lsplaylists ( int argc, char ** argv, mpd_Connection * conn ) { mpd_InfoEntity * entity; const char * ls = ""; int i = 0; if(argc>0) ls = charset_to_utf8(argv[i]); do { mpd_sendLsInfoCommand(conn,ls); printErrorAndExit(conn); while((entity = mpd_getNextInfoEntity(conn))) { if(entity->type== MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { mpd_PlaylistFile * pl = entity->info.playlistFile; printf("%s\n", charset_from_utf8(pl->path)); } mpd_freeInfoEntity(entity); } my_finishCommand(conn); } while (++i < argc && (ls = charset_to_utf8(argv[i])) != NULL); return 0; }
int cmd_ls ( int argc, char ** argv, mpd_Connection * conn ) { mpd_InfoEntity * entity; const char *ls; int i = 0; if (argc > 0) ls = charset_to_utf8(argv[i]); else ls = strdup(""); do { mpd_sendLsInfoCommand(conn,ls); printErrorAndExit(conn); while((entity = mpd_getNextInfoEntity(conn))) { if(entity->type==MPD_INFO_ENTITY_TYPE_DIRECTORY) { mpd_Directory * dir = entity->info.directory; printf("%s\n", charset_from_utf8(dir->path)); } else if(entity->type==MPD_INFO_ENTITY_TYPE_SONG) { struct mpd_song *song = entity->info.song; printf("%s\n", charset_from_utf8(song->file)); } mpd_freeInfoEntity(entity); } my_finishCommand(conn); } while (++i < argc && (ls = charset_to_utf8(argv[i])) != NULL); return 0; }
static TWidget *populate_playlists() { mpd_InfoEntity entity; TWidget *ret; if (mpdc_tickle() < 0) return NULL; ret = ttk_new_menu_widget(NULL, ttk_menufont, ttk_screen->w - ttk_screen->wx, ttk_screen->h - ttk_screen->wy); mpd_sendLsInfoCommand(mpdz, ""); while ((mpd_getNextInfoEntity_st(&entity, mpdz))) { mpd_PlaylistFile *playlist; ttk_menu_item *item; if (entity.type != MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { continue; } playlist = entity.info.playlistFile; item = (ttk_menu_item *)calloc(1, sizeof(ttk_menu_item)); item->name = (char *)strdup(playlist->path); item->free_name = 1; item->makesub = open_playlist; ttk_menu_append(ret, item); } ttk_menu_set_i18nable(ret, 0); mpd_finishCommand(mpdz); return ret; }
MpdData * mpd_database_get_directory(MpdObj *mi,char *path) { MpdData *data = NULL; mpd_InfoEntity *ent = NULL; if(!mpd_check_connected(mi)) { debug_printf(DEBUG_WARNING,"not connected\n"); return NULL; } if(path == NULL) { path = "/"; } if(mpd_lock_conn(mi)) { debug_printf(DEBUG_WARNING,"lock failed\n"); return NULL; } mpd_sendLsInfoCommand(mi->connection,path); while (( ent = mpd_getNextInfoEntity(mi->connection)) != NULL) { data = mpd_new_data_struct_append(data); if(ent->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) { data->type = MPD_DATA_TYPE_DIRECTORY; data->directory = ent->info.directory->path; ent->info.directory->path = NULL; } else if (ent->type == MPD_INFO_ENTITY_TYPE_SONG) { data->type = MPD_DATA_TYPE_SONG; data->song = ent->info.song; ent->info.song = NULL; } else if (ent->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { data->type = MPD_DATA_TYPE_PLAYLIST; data->playlist = ent->info.playlistFile->path; ent->info.playlistFile->path = NULL; } mpd_freeInfoEntity(ent); } mpd_finishCommand(mi->connection); /* unlock */ mpd_unlock_conn(mi); if(data == NULL) { return NULL; } return mpd_data_get_first(data); }
int cmd_load ( int argc, char ** argv, mpd_Connection * conn ) { int i; char * sp; char * dp; mpd_InfoEntity * entity; mpd_PlaylistFile * pl; for(i=0;i<argc;i++) { sp = argv[i]; while((sp = strchr(sp,' '))) *sp = '_'; } mpd_sendLsInfoCommand(conn,""); printErrorAndExit(conn); while((entity = mpd_getNextInfoEntity(conn))) { if(entity->type==MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { pl = entity->info.playlistFile; dp = sp = strdup(charset_from_utf8(pl->path)); while((sp = strchr(sp,' '))) *sp = '_'; for(i=0;i<argc;i++) { if(strcmp(dp,argv[i])==0) strcpy(argv[i], charset_from_utf8(pl->path)); } free(dp); mpd_freeInfoEntity(entity); } } my_finishCommand(conn); mpd_sendCommandListBegin(conn); printErrorAndExit(conn); for(i=0;i<argc;i++) { printf("loading: %s\n",argv[i]); mpd_sendLoadCommand(conn,charset_to_utf8(argv[i])); printErrorAndExit(conn); } mpd_sendCommandListEnd(conn); my_finishCommand(conn); return 0; }