static void do_suspend_cmd (void) { pre_exec (); if (mc_global.tty.console_flag != '\0' && !mc_global.tty.use_subshell) handle_console (CONSOLE_RESTORE); #ifdef SIGTSTP { struct sigaction sigtstp_action; memset (&sigtstp_action, 0, sizeof (sigtstp_action)); /* Make sure that the SIGTSTP below will suspend us directly, without calling ncurses' SIGTSTP handler; we *don't* want ncurses to redraw the screen immediately after the SIGCONT */ sigaction (SIGTSTP, &startup_handler, &sigtstp_action); kill (getpid (), SIGTSTP); /* Restore previous SIGTSTP action */ sigaction (SIGTSTP, &sigtstp_action, NULL); } #endif /* SIGTSTP */ if (mc_global.tty.console_flag != '\0' && !mc_global.tty.use_subshell) handle_console (CONSOLE_SAVE); edition_post_exec (); }
/********************************************************************** * main */ int main( int argc, char *argv[] ) { char error[1024]; int i; init_thread_hook(); if (!getenv( "WINELOADERNOEXEC" )) /* first time around */ { static char noexec[] = "WINELOADERNOEXEC=1"; putenv( noexec ); check_command_line( argc, argv ); if (pre_exec()) { wine_init_argv0_path( argv[0] ); wine_exec_wine_binary( NULL, argv, getenv( "WINELOADER" )); fprintf( stderr, "wine: could not exec the wine loader\n" ); exit(1); } } #ifndef __APPLE__ if (wine_main_preload_info) #endif { for (i = 0; wine_main_preload_info[i].size; i++) reserve_area( wine_main_preload_info[i].addr, wine_main_preload_info[i].size ); } wine_init( argc, argv, error, sizeof(error) ); fprintf( stderr, "wine: failed to initialize: %s\n", error ); exit(1); }
int or_and(t_linez *l, t_sh *t) { t->pv2 = ++t->pv; if ((t->status && t->flag == '|') || (!t->status && t->flag == '&')) return (pre_exec(l, t)); else { t->flag = t->flag == '|' ? '&' : '|'; while (l->ep_l[t->pv2] && l->ep_l[t->pv2] != ';' && l->ep_l[t->pv2] != t->flag) t->pv2++; if (l->ep_l[t->pv2]) { t->flag = 0; return (pre_exec(l, t)); } } return (0); }
BOOL pre_exec(t_jobs *j, t_info *info, BOOL in) { t_jobs *next; if (!j) return (TRUE); if (and_or(j->exec, info, in) == FALSE) return (FALSE); next = j->next; nullify_jobs(j, 0); return (pre_exec(next, info, in)); }
static void proc_loop(t_env *e) { t_proc *proc; proc = e->proc_start; while (proc) { ++proc->live_exec; if (proc->wait_cycle > 0) --proc->wait_cycle; if (proc->inst.opc == 0) define_opc(proc, e->mem); if (proc->inst.opc != 0 && proc->wait_cycle == 0) pre_exec(e, proc); else if (proc->wait_cycle == 0) proc->pos = ++proc->pos % MEM_SIZE; proc = proc->next; } }
void check_dinredir(char **tab, int *i, int *v) { if (!tab[*i]) { pre_exec("cat"); _exit(0); } while (tab[*i]) { if (!ft_strcmp(tab[*i], "<<")) { if (*v != -1) { re_tab(tab, *v); *i -= 2; } *v = *i; } ++*i; } *i = 0; }
void do_executev (const char *shell, int flags, char *const argv[]) { #ifdef ENABLE_SUBSHELL vfs_path_t *new_dir_vpath = NULL; #endif /* ENABLE_SUBSHELL */ vfs_path_t *old_vfs_dir_vpath = NULL; if (!vfs_current_is_local ()) old_vfs_dir_vpath = vfs_path_clone (vfs_get_raw_current_dir ()); if (mc_global.mc_run_mode == MC_RUN_FULL) save_cwds_stat (); pre_exec (); if (mc_global.tty.console_flag != '\0') handle_console (CONSOLE_RESTORE); if (!mc_global.tty.use_subshell && *argv != NULL && (flags & EXECUTE_INTERNAL) == 0) { printf ("%s%s\n", mc_prompt, *argv); fflush (stdout); } #ifdef ENABLE_SUBSHELL if (mc_global.tty.use_subshell && (flags & EXECUTE_INTERNAL) == 0) { do_update_prompt (); /* We don't care if it died, higher level takes care of this */ invoke_subshell (*argv, VISIBLY, old_vfs_dir_vpath != NULL ? NULL : &new_dir_vpath); } else #endif /* ENABLE_SUBSHELL */ my_systemv_flags (flags, shell, argv); if ((flags & EXECUTE_INTERNAL) == 0) { if ((pause_after_run == pause_always || (pause_after_run == pause_on_dumb_terminals && !mc_global.tty.xterm_flag && mc_global.tty.console_flag == '\0')) && quit == 0 #ifdef ENABLE_SUBSHELL && subshell_state != RUNNING_COMMAND #endif /* ENABLE_SUBSHELL */ ) { printf (_("Press any key to continue...")); fflush (stdout); tty_raw_mode (); get_key_code (0); printf ("\r\n"); fflush (stdout); } if (mc_global.tty.console_flag != '\0' && output_lines != 0 && mc_global.keybar_visible) { putchar ('\n'); fflush (stdout); } } if (mc_global.tty.console_flag != '\0') handle_console (CONSOLE_SAVE); edition_post_exec (); #ifdef ENABLE_SUBSHELL if (new_dir_vpath != NULL) { do_possible_cd (new_dir_vpath); vfs_path_free (new_dir_vpath); } #endif /* ENABLE_SUBSHELL */ if (old_vfs_dir_vpath != NULL) { mc_chdir (old_vfs_dir_vpath); vfs_path_free (old_vfs_dir_vpath); } if (mc_global.mc_run_mode == MC_RUN_FULL) { update_panels (UP_OPTIMIZE, UP_KEEPSEL); update_xterm_title_path (); } do_refresh (); use_dash (TRUE); }
static void do_execute (const char *shell, const char *command, int flags) { #ifdef HAVE_SUBSHELL_SUPPORT char *new_dir = NULL; #endif /* HAVE_SUBSHELL_SUPPORT */ #ifdef USE_VFS char *old_vfs_dir = 0; if (!vfs_current_is_local ()) old_vfs_dir = g_strdup (vfs_get_current_dir ()); #endif /* USE_VFS */ save_cwds_stat (); pre_exec (); if (console_flag) handle_console (CONSOLE_RESTORE); if (!use_subshell && command && !(flags & EXECUTE_INTERNAL)) { printf ("%s%s\n", prompt, command); } #ifdef HAVE_SUBSHELL_SUPPORT if (use_subshell && !(flags & EXECUTE_INTERNAL)) { do_update_prompt (); /* We don't care if it died, higher level takes care of this */ #ifdef USE_VFS invoke_subshell (command, VISIBLY, old_vfs_dir ? 0 : &new_dir); #else invoke_subshell (command, VISIBLY, &new_dir); #endif /* !USE_VFS */ } else #endif /* HAVE_SUBSHELL_SUPPORT */ my_system (flags, shell, command); if (!(flags & EXECUTE_INTERNAL)) { if ((pause_after_run == pause_always || (pause_after_run == pause_on_dumb_terminals && !xterm_flag && !console_flag)) && !quit #ifdef HAVE_SUBSHELL_SUPPORT && subshell_state != RUNNING_COMMAND #endif /* HAVE_SUBSHELL_SUPPORT */ ) { printf (_("Press any key to continue...")); fflush (stdout); mc_raw_mode (); get_key_code (0); printf ("\r\n"); fflush (stdout); } if (console_flag) { if (output_lines && keybar_visible) { putchar ('\n'); fflush (stdout); } } } if (console_flag) handle_console (CONSOLE_SAVE); edition_post_exec (); #ifdef HAVE_SUBSHELL_SUPPORT if (new_dir) do_possible_cd (new_dir); #endif /* HAVE_SUBSHELL_SUPPORT */ #ifdef USE_VFS if (old_vfs_dir) { mc_chdir (old_vfs_dir); g_free (old_vfs_dir); } #endif /* USE_VFS */ update_panels (UP_OPTIMIZE, UP_KEEPSEL); update_xterm_title_path (); do_refresh (); use_dash (TRUE); }