int mpd_database_update_dir(MpdObj *mi, char *path) { /* if(path == NULL || !strlen(path)) { debug_printf(DEBUG_ERROR, "path != NULL and strlen(path) > 0 failed"); return MPD_ARGS_ERROR; } */ if(!mpd_check_connected(mi)) { debug_printf(DEBUG_WARNING,"not connected\n"); return MPD_NOT_CONNECTED; } if(mpd_lock_conn(mi)) { debug_printf(DEBUG_ERROR,"lock failed\n"); return MPD_LOCK_FAILED; } mpd_sendUpdateCommand(mi->connection,path); mpd_finishCommand(mi->connection); /* I have no idea why do this ?? it even makes gmpc very very unhappy. * Because it doesnt trigger an signal anymore when updating starts * mi->CurrentState.updatingDb = mpd_getUpdateId(mi->connection); */ /* unlock */ mpd_unlock_conn(mi); /* What I think you should do is to force a direct status updated */ mpd_status_update(mi); return MPD_OK; }
int cmd_update ( int argc, char ** argv, mpd_Connection * conn) { const char * update = ""; int i = 0; mpd_sendCommandListBegin(conn); printErrorAndExit(conn); if(argc > 0) update = charset_to_utf8(argv[i]); do { mpd_sendUpdateCommand(conn, update); } while (++i < argc && (update = charset_to_utf8(argv[i])) != NULL); mpd_sendCommandListEnd(conn); printErrorAndExit(conn); mpd_finishCommand(conn); printErrorAndExit(conn); return 1; }