void nemo_main() { int n; stream parstr, outstr; string molfile = getparam("mol"); string outfile = getparam("out"); string outdir = getparam("outdir"); string exefile = "radex"; string datfile = "mol.dat"; string parfile = "input.txt"; string logfile = "radex.txt"; char dname[256], cmd[256]; real fmin = getdparam("fmin"); real fmax = getdparam("fmax"); real tkin = getdparam("tkin"); int npartner; string *partner; real density[MAXPARTNER]; real tbg = getdparam("tbg"); real cdmol = getdparam("cdmol"); real deltav = getdparam("deltav"); partner = burststring(getparam("partner"),","); npartner = xstrlen(partner,sizeof(string))-1; if (npartner < 1 || npartner>MAXPARTNER) error("too few/many partners"); n = nemoinpr(getparam("density"),density,MAXPARTNER); if (n != npartner) error("need matching numbers for partner= and density="); run_mkdir(outdir); sprintf(dname,"%s/%s",outdir,parfile); parstr = stropen(dname,"w"); fprintf(parstr,"%s\n",molfile); fprintf(parstr,"%s\n",outfile); fprintf(parstr,"%g %g\n",fmin,fmax); fprintf(parstr,"%g\n",tkin); fprintf(parstr,"%d\n",npartner); for (n=0; n<npartner; n++) { fprintf(parstr,"%s\n",partner[n]); fprintf(parstr,"%g\n",density[n]); } fprintf(parstr,"%g\n",tbg); fprintf(parstr,"%g\n",cdmol); fprintf(parstr,"%g\n",deltav); fprintf(parstr,"0\n"); strclose(parstr); run_cd(outdir); sprintf(cmd,"%s < %s > %s ", exefile, parfile, logfile); run_sh(cmd); }
nemo_main() { string exefile = getparam("exe"); string rundir = getparam("outdir"); string infile = "bulgerot.in"; string datfile = "bulgerot.dat"; string logfile = "bulgerot.log"; real r[3]; int n; char dname[256]; static char *cmd = "#! /bin/sh\n" /* the lines for the "runme" */ "%s < %s >%s 2>&1\n"; /* script inside the rundir */ stream datstr; n = nemoinpr(getparam("r3"),r,3); if (n!=3) error("parsing error %s: r3 needs rmin,rstep,nradii",getparam("r3")); n = r[2]; run_mkdir(rundir); sprintf(dname,"%s/%s",rundir,infile); datstr = stropen(dname,"w"); fprintf(datstr,"%s\n",datfile); fprintf(datstr,"%s\n",getparam("galaxy")); fprintf(datstr,"%g %g %g\n", getrparam("mu0"),getrparam("r0"),getrparam("n")); fprintf(datstr,"%g %g %g %g\n", getrparam("inc"),getrparam("q"),1e6*getrparam("dist"),getrparam("ar")); fprintf(datstr,"%g %g %d\n",r[0],r[1],n); strclose(datstr); sprintf(dname,"%s/%s",rundir,"runme"); datstr = stropen(dname,"w"); dprintf(1, cmd,exefile,infile,logfile); fprintf(datstr,cmd,exefile,infile,logfile); strclose(datstr); run_cd(rundir); if (run_sh("sh runme")) error("Problem executing runme in %s",rundir); }
nemo_main() { int nbody, nfix, nrand, nnbmax, nrun, kstart; real etai, etar, rs0, deltat, tcrit, qe, eps, tcomp; int k, nkz, kz[KZ_MAX]; real alphas, body1, bodyn; real q, vxrot, vzrot, rbar, zmbar; string exefile = "nbody2"; string parfile = "nbody2.in"; string rundir = getparam("outdir"); string infile, fname; char dname[256], runcmd[256]; stream datstr, histr; kstart = getiparam("kstart"); tcomp = getdparam("tcomp"); nbody = getiparam("nbody"); nfix = getiparam("nfix"); nrand = getiparam("nrand"); nnbmax = getiparam("nnbmax"); nrun = getiparam("nrun"); etai = getdparam("etai"); etar = getdparam("etar"); rs0 = getdparam("rs0"); deltat = getdparam("deltat"); tcrit = getdparam("tcrit"); qe = getdparam("qe"); eps = getdparam("eps"); nkz = nemoinpi(getparam("kz"),kz,20); if (nkz < 0) error("%d Syntax error kz=%s",nkz,getparam("kz")); for (k=nkz; k<KZ_MAX; k++) kz[k]=0; for (k=0; k<KZ_MAX; k++) dprintf(1,"%d ",kz[k]); dprintf(1,"\n"); alphas = getdparam("alphas"); body1 = getdparam("body1"); bodyn = getdparam("bodyn"); q = getdparam("q"); vxrot = getdparam("vxrot"); vzrot = getdparam("vzrot"); rbar = getdparam("rbar"); zmbar = getdparam("zmbar"); infile = getparam("in"); fname = fullname(infile); run_mkdir(rundir); sprintf(dname,"%s/%s",rundir,parfile); datstr = stropen(dname,"w"); /* New Run */ if (kstart == 1) { fprintf(datstr,"%d %g\n",kstart,tcomp); fprintf(datstr,"%d %d %d %d %d\n",nbody,nfix,nrand,nnbmax,nrun); fprintf(datstr,"%g %g %g %g %g %g %g\n",etai,etar,rs0,deltat,tcrit,qe,eps); for (k=0; k<KZ_MAX; k++) fprintf(datstr,"%d ",kz[k]); fprintf(datstr,"\n"); if (kz[KZ_EXT-1] > 0) { /* external potential parameters */ if (kz[KZ_EXT-1]==1) fprintf(datstr,"%g %g\n",getdparam("xtpar1"),getdparam("xtpar2")); else fprintf(datstr,"%g %g\n",getdparam("zmgas"),getdparam("rgas")); } fprintf(datstr,"%g %g %g\n",alphas,body1,bodyn); fprintf(datstr,"%g %g %g %g %g\n",q,vxrot,vzrot,rbar,zmbar); if (kz[KZ_MER-1] > 0) fprintf(datstr,"%g %g\n",getdparam("xcm"), getdparam("ecc")); strclose(datstr); run_cd(rundir); histr = stropen("history","w"); put_history(histr); strclose(histr); if (hasvalue("in")) { if (*infile == '-') { /* do something special for pipes */ sprintf(runcmd,"stou4 %s",infile); } else { sprintf(runcmd,"stou4 %s nbody=%d",fname,nbody); } dprintf(0,"%s\n",runcmd); if (run_sh(runcmd)) error("Error converting input data"); } sprintf(runcmd,"%s < %s",exefile,parfile); run_sh(runcmd); } else { error("kstart=%d not yet supported",kstart); } }
int server_start(server_t *s) { if (!getuid()) { uid_t uid = 0; gid_t gid = 0; run_user(s, &uid, &gid); run_group(s, &gid); // runtime data directory if (run_mkdir(JOURNAL_RUNDIR) < 0) { log_error("Failed to create '%s' directory: %m", JOURNAL_RUNDIR); return -1; } if (chown(JOURNAL_RUNDIR, uid, gid) < 0) { log_error("Unable to change owner “%s” directory to %s(%s): %m", JOURNAL_RUNDIR, s->runuser, s->rungroup); return -1; } syslog_run(s); // variable data directory if (run_mkdir(JOURNAL_LOGDIR) < 0) log_warning("Failed to create '%s' directory: %m", JOURNAL_LOGDIR); else { if (errno != EEXIST && chown(JOURNAL_LOGDIR, uid, gid) < 0) log_warning("Unable to change owner “%s” directory to %s(%s): %m", JOURNAL_LOGDIR, s->runuser, s->rungroup); } // change user and group of process if (gid > 0 && run_chgroup(gid) < 0) { log_error("Unable change group to “%s”: %m", s->rungroup); return -1; } if (uid > 0 && run_chuser(uid) < 0) { log_error("Unable change user to “%s”: %m", s->runuser); return -1; } } if (epollfd_create(&s->epoll) < 0) { log_error("Failed to create event loop: %m"); return -1; } s->msg = msg_new(LINE_MAX); if (!s->msg) return -1; seqnum_load(JOURNAL_RUNDIR "/kernel-seqnum", &s->kseqnum); if (hostname_open(s) < 0) return -1; boot_get_id(&s->boot_id); return 0; }