void exec_cmd_low_level(t_param *param, t_cmd *cmd) { char *path; char *cmd_path; if (my_strstr(cmd->arg[0], "/") == 0) { while ((path = get_next_path(param->env))) { cmd_path = xsmalloc(my_strlen(path) + my_strlen(cmd->arg[0]) + 2); my_strcpy(cmd_path, path); my_strcat(cmd_path, "/"); my_strcat(cmd_path, cmd->arg[0]); xsfree(path); if (access(cmd_path, F_OK) != -1) execve(cmd_path, (cmd->arg), environ); xsfree(cmd_path); } my_fprintf(2, "%s: command not found\n", cmd->arg[0]); } else { execve(cmd->arg[0], cmd->arg, environ); my_fprintf(2, "%s: can't exec\n", cmd->arg[0]); } free_all(param); exit(1); }
/************************************************************************** * Set relative playlist position and play (Private) * * Sets the currently played item to the given relative play item position * (based on the currently playing item) and then begins the new item playback. * Lock must be held. **************************************************************************/ static void set_relative_playlist_position_and_play( libvlc_media_list_player_t * p_mlp, int i_relative_position, libvlc_exception_t * p_e) { assert_locked(p_mlp); if (!p_mlp->p_mlist) { libvlc_exception_raise(p_e); libvlc_printerr("No media list"); return; } libvlc_media_list_lock(p_mlp->p_mlist); libvlc_media_list_path_t path = p_mlp->current_playing_item_path; if(p_mlp->e_playback_mode != libvlc_playback_mode_repeat) { bool b_loop = (p_mlp->e_playback_mode == libvlc_playback_mode_loop); if(i_relative_position > 0) { do { path = get_next_path(p_mlp, b_loop); set_current_playing_item(p_mlp, path); --i_relative_position; } while(i_relative_position > 0); } else if(i_relative_position < 0) { do { path = get_previous_path(p_mlp, b_loop); set_current_playing_item(p_mlp, path); ++i_relative_position; } while (i_relative_position < 0); } } else { set_current_playing_item(p_mlp, path); } #ifdef DEBUG_MEDIA_LIST_PLAYER printf("Playing:"); libvlc_media_list_path_dump(path); #endif if (!path) { libvlc_media_list_unlock(p_mlp->p_mlist); stop(p_mlp, p_e); return; } libvlc_media_player_play(p_mlp->p_mi, p_e); libvlc_media_list_unlock(p_mlp->p_mlist); /* Send the next item event */ libvlc_event_t event; event.type = libvlc_MediaListPlayerNextItemSet; libvlc_media_t * p_md = libvlc_media_list_item_at_path(p_mlp->p_mlist, path); event.u.media_list_player_next_item_set.item = p_md; libvlc_event_send(p_mlp->p_event_manager, &event); libvlc_media_release(p_md); }