int B_login(int argc,char *argv[],void *extra) { struct checkpt *pp; register struct login *logp=0; register Shell_t *shp; const char *pname; if(argc) shp = ((Shbltin_t*)extra)->shp; else { logp = (struct login*)extra; shp = logp->sh; } pp = (struct checkpt*)shp->jmplist; if(sh_isoption(SH_RESTRICTED)) errormsg(SH_DICT,ERROR_exit(1),e_restricted,argv[0]); else { register struct argnod *arg=shp->envlist; register Namval_t* np; register char *cp; if(shp->subshell && !shp->subshare) sh_subfork(); if(logp && logp->clear) { #ifdef _ENV_H env_close(shp->env); shp->env = env_open((char**)0,3); #else nv_scan(shp->var_tree,noexport,0,NV_EXPORT,NV_EXPORT); #endif } while(arg) { if((cp=strchr(arg->argval,'=')) && (*cp=0,np=nv_search(arg->argval,shp->var_tree,0))) { nv_onattr(np,NV_EXPORT); sh_envput(shp->env,np); } if(cp) *cp = '='; arg=arg->argnxt.ap; } pname = argv[0]; if(logp && logp->arg0) argv[0] = logp->arg0; #ifdef JOBS if(job_close(shp) < 0) return(1); #endif /* JOBS */ /* force bad exec to terminate shell */ pp->mode = SH_JMPEXIT; sh_sigreset(2); sh_freeup(shp); path_exec(pname,argv,NIL(struct argnod*)); sh_done(shp,0); } return(1); }
int main(int argc, char *argv[]) { int i; for (i = 1; i < argc; i++) { long n; char junk; if (strncmp(argv[i], "--benchmarks=", 13) == 0) { FLAGS_benchmarks = argv[i] + strlen("--benchmarks="); } else if (sscanf(argv[i], "--cache_size=%ld%c", &n, &junk) == 1) { FLAGS_cache_size = n; } else if (sscanf(argv[i], "--num=%ld%c", &n, &junk) == 1) { FLAGS_num = n; } else if (strncmp(argv[i], "--compress=", 11) == 0) { if (strcmp(argv[i] + strlen("--compress="), "snappy") == 0) FLAGS_method = NESS_SNAPPY_METHOD; else if (strcmp(argv[i] + strlen("--compress="), "no") == 0) FLAGS_method = NESS_NO_COMPRESS; } else { fprintf(stderr, "invalid flag %s\n", argv[i]); exit(1); } } srand(time(NULL)); rnd = rnd_new(); if (!dbopen()) exit(1); if (!run()) exit(1); rnd_free(rnd); db_close(db); env_close(e); return 1; }