int b_exec(int argc,char *argv[], void *extra) { struct login logdata; register int n; logdata.clear = 0; logdata.arg0 = 0; logdata.sh = ((Shbltin_t*)extra)->shp; logdata.sh->st.ioset = 0; while (n = optget(argv, sh_optexec)) switch (n) { case 'a': logdata.arg0 = opt_info.arg; argc = 0; break; case 'c': logdata.clear=1; break; case ':': errormsg(SH_DICT,2, "%s", opt_info.arg); break; case '?': errormsg(SH_DICT,ERROR_usage(0), "%s", opt_info.arg); return(2); } argv += opt_info.index; if(error_info.errors) errormsg(SH_DICT,ERROR_usage(2),"%s",optusage((char*)0)); if(*argv) B_login(0,argv,(void*)&logdata); return(0); }
// // Builtin `exec`. // int b_exec(int argc, char *argv[], Shbltin_t *context) { UNUSED(argc); struct login logdata; int n; logdata.clear = 0; logdata.arg0 = NULL; logdata.sh = context->shp; logdata.sh->st.ioset = 0; while ((n = optget(argv, sh_optexec))) { switch (n) { case 'a': { logdata.arg0 = opt_info.arg; break; } case 'c': { logdata.clear = 1; break; } case ':': { errormsg(SH_DICT, 2, "%s", opt_info.arg); break; } case '?': { errormsg(SH_DICT, ERROR_usage(0), "%s", opt_info.arg); return 2; } default: { break; } } } argv += opt_info.index; if (error_info.errors) { errormsg(SH_DICT, ERROR_usage(2), "%s", optusage(NULL)); __builtin_unreachable(); } if (*argv) B_login(0, argv, (Shbltin_t *)&logdata); return 0; }