static int PSetIDR(int argc, char *argv[], int argt[], ARRAY *variables) { int idr, ndr, i; double *pdr; char *vg[MAXNARGS]; int ig[MAXNARGS]; if (argc < 1) return -1; if (argc > 2) return -1; if (argt[0] != NUMBER) return -1; if (argc == 2 && argt[1] != LIST && argt[1] != TUPLE) return -1; idr = atoi(argv[0]); ndr = DecodeArgs(argv[1], vg, ig, variables); if (ndr > 0) { pdr = (double *) malloc(sizeof(double)*ndr); for (i = 0; i < ndr; i++) { pdr[i] = atof(vg[i]); free(vg[i]); } } else { ndr = 0; pdr = NULL; } return SetIDR(idr, ndr, pdr); }
int main (int argc, char **argv) { double start, stop; dstring_t *portalfile = dstring_new (); QFile *f; start = Sys_DoubleTime (); this_program = argv[0]; DecodeArgs (argc, argv); if (!options.bspfile) { usage (1); Sys_Error ("%s: no bsp file specified.", this_program); } QFS_SetExtension (options.bspfile, ".bsp"); f = Qopen (options.bspfile->str, "rb"); if (!f) Sys_Error ("couldn't open %s for reading.", options.bspfile->str); bsp = LoadBSPFile (f, Qfilesize (f)); Qclose (f); visdata = dstring_new (); dstring_copystr (portalfile, options.bspfile->str); QFS_SetExtension (portalfile, ".prt"); LoadPortals (portalfile->str); uncompressed = calloc (bitbytes_l, portalclusters); CalcVis (); if (options.verbosity >= 0) printf ("c_chains: %i%s\n", c_chains, options.threads > 1 ? " (not reliable)" :""); BSP_AddVisibility (bsp, (byte *) visdata->str, visdata->size); if (options.verbosity >= 0) printf ("visdatasize:%ld compressed from %ld\n", (long) bsp->visdatasize, (long) originalvismapsize); CalcAmbientSounds (); f = Qopen (options.bspfile->str, "wb"); if (!f) Sys_Error ("couldn't open %s for writing.", options.bspfile->str); WriteBSPFile (bsp, f); Qclose (f); stop = Sys_DoubleTime (); if (options.verbosity >= 0) printf ("%5.1f seconds elapsed\n", stop - start); return 0; }
static int PPolarizationTable(int argc, char *argv[], int argt[], ARRAY *variables) { int i, n, k; char *ifn; char *vg[MAXNARGS]; int ig[MAXNARGS]; if (argc != 1 && argc != 2) return -1; if (argt[0] != STRING) return -1; ifn = NULL; n = 0; if (argc == 2) { if (argt[1] == STRING) { ifn = argv[1]; } else if (argt[1] == LIST) { n = DecodeArgs(argv[1], vg, ig, variables); } } i = PolarizationTable(argv[0], ifn, n, vg); for (k = 0; k < n; k++) { free(vg[k]); } return i; }