/* * get command line flags, initialize keywords & traps. * get values from environment. * set $pid, $cflag, $* * fabricate bootstrap code and start it (*=(argv);. /usr/lib/rcmain $*) * start interpreting code */ int main(int argc, char *argv[]) { code bootstrap[32]; char num[12], *rcmain; int i; /* needed for rcmain later */ putenv("PLAN9", unsharp("#9")); argc = getflags(argc, argv, "ftjSsrdiIlxepvVc:1m:1[command]", 1); if(argc==-1) usage("[file [arg ...]]"); if(argv[0][0]=='-') flag['l'] = flagset; if(flag['I']) flag['i'] = 0; else if(flag['i']==0 && argc==1 && Isatty(0)) flag['i'] = flagset; rcmain = flag['m'] ? flag['m'][0] : Rcmain(); err = openfd(2); kinit(); Trapinit(); Vinit(); inttoascii(num, mypid = getpid()); pathinit(); setvar("pid", newword(num, (word *)0)); setvar("cflag", flag['c']?newword(flag['c'][0], (word *)0) :(word *)0); setvar("rcname", newword(argv[0], (word *)0)); i = 0; bootstrap[i++].i = 1; bootstrap[i++].f = Xmark; bootstrap[i++].f = Xword; bootstrap[i++].s="*"; bootstrap[i++].f = Xassign; bootstrap[i++].f = Xmark; bootstrap[i++].f = Xmark; bootstrap[i++].f = Xword; bootstrap[i++].s="*"; bootstrap[i++].f = Xdol; bootstrap[i++].f = Xword; bootstrap[i++].s = rcmain; bootstrap[i++].f = Xword; bootstrap[i++].s="."; bootstrap[i++].f = Xsimple; bootstrap[i++].f = Xexit; bootstrap[i].i = 0; start(bootstrap, 1, (var *)0); /* prime bootstrap argv */ pushlist(); argv0 = strdup(argv[0]); for(i = argc-1;i!=0;--i) pushword(argv[i]); for(;;){ if(flag['r']) pfnc(err, runq); runq->pc++; (*runq->code[runq->pc-1].f)(); if(ntrap) dotrap(); } }
int interrupts_enabled(void) { ulong_t flag; flag = getflags(); return ((flag & PS_IE) == PS_IE); }
int main (int na, char **av) { struct xpr x; int i; char buffer[BUFF_SIZE]; struct xoutflags ofs; unsigned long n; FILE *fp; if (na != 2) { printf ("para: input_file\n"); exit (-1); } fp = fopen (*++av, "r"); printf (" Test of Special Printing Functions\n"); while (fgets (buffer, BUFF_SIZE, fp) != NULL) { for (i = 0; buffer[i] != '\0'; i++); if (i > 0 && buffer[i - 1] == '\n') buffer[i - 1] = '\0'; if (buffer[0] == '*') { getflags (buffer + 1, &ofs); printf ("* %hi %hi %hi %hi %c\n", ofs.notat, ofs.sf, ofs.mfwd, ofs.lim, ofs.padding); } else { printf ("buffer : %s\n", buffer); x = atox (buffer); printf ("\t\t <%2d>\n", xfout (stdout, ofs, x)); printf ("\t\t <%2d>\n", xout (ofs, x)); n = xsout (buffer, 20, ofs, x); printf ("%s\t\t <%2lu>\n", buffer, n); } } fclose (fp); return 0; }
// This method is the main work-horse of export. It iterates over the given paragraphs between start // and finish, invoking the callback for each and every requested event. bool MCField::doexport(MCFieldExportFlags p_flags, MCParagraph *p_paragraphs, int32_t p_start_index, int32_t p_finish_index, MCFieldExportCallback p_callback, void *p_context) { // If the null range is requested, there is nothing to do. if (p_start_index == p_finish_index) return true; // Fetch the paragraphs MCParagraph *t_paragraphs; t_paragraphs = p_paragraphs; // The first and last boundaries of the export. MCParagraph *t_first_paragraph; int32_t t_first_offset, t_last_offset; t_first_offset = p_start_index; t_last_offset = p_finish_index; // Fetch the paragraph and offset for the first index. if (t_first_offset != 0) t_first_paragraph = indextoparagraph(t_paragraphs, t_first_offset, t_last_offset); else t_first_paragraph = t_paragraphs; // Make sure the indices are rounded to the nearest char. verifyindex(t_first_paragraph, t_first_offset, false); // If we are collecting paragraph styles and flattening then fetch the inherited // styles. MCFieldParagraphStyle t_inherited_paragraph_style; if ((p_flags & kMCFieldExportParagraphStyles) != 0 && (p_flags & kMCFieldExportFlattenStyles) != 0) { memset(&t_inherited_paragraph_style, 0, sizeof(MCFieldParagraphStyle)); t_inherited_paragraph_style . text_align = (getflags() & F_ALIGNMENT) >> F_ALIGNMENT_SHIFT; t_inherited_paragraph_style . vgrid = getflag(F_VGRID) == True; t_inherited_paragraph_style . hgrid = getflag(F_HGRID) == True; t_inherited_paragraph_style . dont_wrap = getflag(F_DONT_WRAP) == True; t_inherited_paragraph_style . first_indent = indent; t_inherited_paragraph_style . tab_count = ntabs; t_inherited_paragraph_style . tabs = tabs; t_inherited_paragraph_style . border_color = getcoloraspixel(DI_BORDER); }
u_char * var_ipfwacc(struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { *write_method = 0; /* assume it isnt writable for the time being */ *var_len = sizeof(ret_val); /* assume an integer and change later if not */ if (header_simple_table(vp,name,length,exact,var_len,write_method,readrule(0))) return (NULL); if (readrule(name[*length-1])){ /* this is where we do the value assignments for the mib results. */ switch(vp->magic) { case IPFWACCINDEX: ret_val = name[*length-1]; return((u_char *) (&ret_val)); case IPFWACCSRCADDR: atoip(0); return((u_char *) (&ret_val)); case IPFWACCSRCNM: atoip(9); return((u_char *) (&ret_val)); case IPFWACCDSTADDR: atoip(19); return((u_char *) (&ret_val)); case IPFWACCDSTNM: atoip(28); return((u_char *) (&ret_val)); case IPFWACCVIANAME: { int i=37; /* position in the rule */ while (rule[i]!=' '&&i<IPFWRULELEN-1) i++; rule[i]=0; return (rule+37); } case IPFWACCVIAADDR: { int i=37; /* position in the rule */ while (rule[i]!=' '&&i<IPFWRULELEN-9) i++; atoip(i+1); return((u_char *) (&ret_val)); } case IPFWACCPROTO: switch (getflags()&IP_FW_F_KIND){ case IP_FW_F_ALL: ret_val=2; return ((u_char *) (&ret_val)); case IP_FW_F_TCP: ret_val=3; return ((u_char *) (&ret_val)); case IP_FW_F_UDP: ret_val=4; return ((u_char *) (&ret_val)); case IP_FW_F_ICMP: ret_val=5; return ((u_char *) (&ret_val)); default: ret_val=1; return((u_char *) (&ret_val)); } case IPFWACCBIDIR: ret_val=((getflags()&IP_FW_F_BIDIR)?2:1); return ((u_char *) (&ret_val)); case IPFWACCDIR: ret_val=(getflags()&(IP_FW_F_ACCTIN|IP_FW_F_ACCTOUT)); if (ret_val==IP_FW_F_ACCTIN) ret_val=2; else if (ret_val==IP_FW_F_ACCTOUT) ret_val=3; else ret_val=1; return ((u_char *) (&ret_val)); case IPFWACCBYTES: getnumeric(4); return ((u_char *) (&ret_val)); case IPFWACCPACKETS: getnumeric(3); return ((u_char *) (&ret_val)); case IPFWACCNSRCPRTS: getnumeric(1); return ((u_char *) (&ret_val)); case IPFWACCNDSTPRTS: getnumeric(2); return ((u_char *) (&ret_val)); case IPFWACCSRCISRNG: ret_val=((getflags()&IP_FW_F_SRNG)?1:2); return ((u_char *) (&ret_val)); case IPFWACCDSTISRNG: ret_val=((getflags()&IP_FW_F_DRNG)?1:2); return ((u_char *) (&ret_val)); case IPFWACCPORT1: case IPFWACCPORT2: case IPFWACCPORT3: case IPFWACCPORT4: case IPFWACCPORT5: case IPFWACCPORT6: case IPFWACCPORT7: case IPFWACCPORT8: case IPFWACCPORT9: case IPFWACCPORT10: getnumeric(5+(vp->magic)-IPFWACCPORT1); return ((u_char *) (&ret_val)); } } return NULL; }
static void rescan (GtkFileBrowser *file_browser) { gchar *path; gint row; GtkCTreeNode *child; DIR *dir = NULL; struct stat st; struct dirent *dirent; gchar *name; gchar *label[14]; gtk_clist_freeze (GTK_CLIST(file_browser)); gtk_clist_clear (GTK_CLIST(file_browser)); if (file_browser->path != NULL) dir = opendir(file_browser->path); if (dir) { while (dirent = readdir(dir)) { GdkPixmap *icon1,*icon2; GdkBitmap *mask1,*mask2; gchar buf_size[10]; gchar buf_nlink[10]; label[0] = NULL; label[1] = dirent->d_name; label[2] = buf_size; label[8] = buf_nlink; if ((dirent->d_name[0] == '.') && (dirent->d_name[1]==0)) continue; name = g_strconcat (file_browser->path, G_DIR_SEPARATOR_S, dirent->d_name, NULL); if (stat(name, &st)==0) { struct group *gr; struct passwd *pw; // TYPE if (S_ISDIR(st.st_mode)) { label[0] = "<DIR>"; } // NAME // SIZE g_snprintf (buf_size,10,"%d",st.st_size); // FLAGS label[3] = strmode(st.st_mode); // ATTR label[4] = strattr(getflags(name)); // access,modify,change label[5] = label[6] = label[7] = "10.10.1999 12:30"; // N LINKS g_snprintf (buf_nlink,10,"%d",st.st_nlink); pw = getpwuid (st.st_uid); gr = getgrgid (st.st_gid); label[9] = pw ? pw->pw_name : "?"; label[10] = gr ? gr->gr_name : "?"; //"INode", //"Device" label[11] = NULL; label[12] = NULL; row = gtk_clist_append (GTK_CLIST(file_browser),label); } g_free (name); } closedir(dir); // gtk_ctree_sort_node (GTK_CTREE(file_browser), GTK_CTREE_NODE(node)); // gtk_ctree_select (GTK_CTREE(ctree), GTK_CTREE_NODE(node)); } gtk_clist_thaw (GTK_CLIST(file_browser)); }
/* compute some isophotal parameters IN THE MEASUREMENT image. */ void examineiso(picstruct *field, picstruct *dfield, objstruct *obj, pliststruct *pixel) { checkstruct *check; pliststruct *pixt; int i,j,k,h, photoflag,area,errflag, cleanflag, pospeakflag, profflag, minarea, gainflag; double tv,sigtv, ngamma, esum, emx2,emy2,emxy, err,gain,backnoise2,dbacknoise2, xm,ym, x,y,var,var2, profflux,proffluxvar; float *heap,*heapt,*heapj,*heapk, swap; PIXTYPE pix, cdpix, tpix, peak,cdpeak, thresh,dthresh; static PIXTYPE threshs[NISO]; if (!dfield) dfield = field; /* Prepare computation of positional error */ esum = emx2 = emy2 = emxy = 0.0; if ((errflag=FLAG(obj.poserr_mx2))) { dbacknoise2 = dfield->backsig*dfield->backsig; xm = obj->mx; ym = obj->my; } else xm = ym = dbacknoise2 = 0.0; /* to avoid gcc -Wall warnings */ pospeakflag = FLAG(obj.peakx); profflag = FLAG(obj.flux_prof); gain = prefs.gain; ngamma = field->ngamma; photoflag = (prefs.detect_type==PHOTO); gainflag = PLISTEXIST(var) && prefs.weightgain_flag; h = minarea = prefs.ext_minarea; /* Prepare selection of the heap selection for CLEANing */ if ((cleanflag = prefs.clean_flag)) { if (obj->fdnpix < minarea) { obj->mthresh = 0.0; cleanflag = 0; heapt = heap = NULL; /* to avoid gcc -Wall warnings */ } else { QMALLOC(heap, float, minarea); heapt = heap; } } else { obj->mthresh = 0.0; heapt = heap = NULL; /* to avoid gcc -Wall warnings */ } /* Measure essential isophotal parameters in the measurement image... */ tv = sigtv = profflux = proffluxvar = 0.0; var = backnoise2 = field->backsig*field->backsig; peak = -BIG; cdpeak = -BIG; thresh = field->thresh; dthresh = dfield->dthresh; area = 0; for (pixt=pixel+obj->firstpix; pixt>=pixel; pixt=pixel+PLIST(pixt,nextpix)) { pix = PLIST(pixt,value); if (pix>peak) peak = pix; cdpix=PLISTPIX(pixt,cdvalue); if (pospeakflag && cdpix>cdpeak) { cdpeak=cdpix; obj->peakx = PLIST(pixt,x) + 1; obj->peaky = PLIST(pixt,y) + 1; } if (PLISTEXIST(var)) var = PLISTPIX(pixt, var); if (photoflag) { pix = exp(pix/ngamma); var2 = pix*pix*var; } else var2 = var; if (gainflag && pix>0.0 && gain>0.0) var2 += pix/gain*var/backnoise2; sigtv += var2; if (profflag && cdpix>0.0) { profflux += cdpix*pix; proffluxvar += cdpix*var2; } if (pix>thresh) area++; tv += pix; if (errflag) { err = dbacknoise2; if (gain>0.0 && cdpix>0.0) err += cdpix/gain; x = PLIST(pixt,x) - xm; y = PLIST(pixt,y) - ym; esum += err; emx2 += err*x*x; emy2 += err*y*y; emxy += err*x*y; } /*-- Find the minareath pixel in decreasing intensity for CLEANing */ if (cleanflag) { tpix = PLISTPIX(pixt, cdvalue) - (PLISTEXIST(dthresh)? PLISTPIX(pixt, dthresh):dthresh); if (h>0) *(heapt++) = (float)tpix; else if (h) { if ((float)tpix>*heap) { *heap = (float)tpix; for (j=0; (k=(j+1)<<1)<=minarea; j=k) { heapk = heap+k; heapj = heap+j; if (k != minarea && *(heapk-1) > *heapk) { heapk++; k++; } if (*heapj <= *(--heapk)) break; swap = *heapk; *heapk = *heapj; *heapj = swap; } } } else hmedian(heap, minarea); h--; } } /* Flagging from the flag-map */ if (PLISTEXIST(flag)) getflags(obj, pixel); if (cleanflag) { obj->mthresh = *heap; free(heap); } if (profflag) { obj->flux_prof = obj->fdflux>0.0? (float)(profflux/obj->fdflux) : 0.0; obj->fluxerr_prof = obj->fdflux>0.0? (float)(proffluxvar/obj->fdflux):0.0; } if (errflag) { double flux2; flux2 = obj->fdflux*obj->fdflux; /*-- Estimation of the error ellipse moments: we re-use previous variables */ emx2 /= flux2; /* variance of xm */ emy2 /= flux2; /* variance of ym */ emxy /= flux2; /* covariance */ /*-- Handle fully correlated profiles (which cause a singularity...) */ esum *= 0.08333/flux2; if (obj->singuflag && (emx2*emy2-emxy*emxy) < esum*esum) { emx2 += esum; emy2 += esum; } obj->poserr_mx2 = emx2; obj->poserr_my2 = emy2; obj->poserr_mxy = emxy; } if (photoflag) { tv = ngamma*(tv-obj->fdnpix*exp(obj->dbkg/ngamma)); sigtv /= ngamma*ngamma; } else { tv -= obj->fdnpix*obj->dbkg; if (!gainflag && gain > 0.0 && tv>0.0) sigtv += tv/gain; } obj->npix = area; obj->flux = tv; obj->fluxerr = sigtv; obj->peak = peak; obj->thresh -= obj->dbkg; obj->peak -= obj->dbkg; /* Initialize isophotal thresholds so as to sample optimally the full profile*/ if (FLAG(obj.iso[0])) { int *iso; PIXTYPE *thresht; memset(obj->iso, 0, NISO*sizeof(int)); if (prefs.detect_type == PHOTO) for (i=0; i<NISO; i++) threshs[i] = obj->thresh + (obj->peak-obj->thresh)*i/NISO; else { if (obj->peak>0.0 && obj->thresh>0.0) for (i=0; i<NISO; i++) threshs[i] = obj->thresh*pow(obj->peak/obj->thresh, (double)i/NISO); else for (i=0; i<NISO; i++) threshs[i] = 0.0; } for (pixt=pixel+obj->firstpix; pixt>=pixel; pixt=pixel+PLIST(pixt,nextpix)) for (i=NISO,iso=obj->iso,thresht=threshs; i-- && PLIST(pixt,value)>*(thresht++);) (*(iso++))++; } /* Put objects in "segmentation check-image" */ if ((check = prefs.check[CHECK_SEGMENTATION])) for (pixt=pixel+obj->firstpix; pixt>=pixel; pixt=pixel+PLIST(pixt,nextpix)) ((ULONG *)check->pix)[check->width*PLIST(pixt,y)+PLIST(pixt,x)] = (ULONG)obj->number; if ((check = prefs.check[CHECK_OBJECTS])) for (pixt=pixel+obj->firstpix; pixt>=pixel; pixt=pixel+PLIST(pixt,nextpix)) ((PIXTYPE *)check->pix)[check->width*PLIST(pixt,y)+PLIST(pixt,x)] = PLIST(pixt,value); /* Compute the FWHM of the object */ if (FLAG(obj.fwhm)) { PIXTYPE thresh0; thresh0 = obj->peak/5.0; if (thresh0<obj->thresh) thresh0 = obj->thresh; if (thresh0>0.0) { double mx,my, s,sx,sy,sxx,sxy, dx,dy,d2, lpix,pix, b, inverr2, sat, dbkg, d, bmax; mx = obj->mx; my = obj->my; dbkg = obj->dbkg; sat = (double)(prefs.satur_level - obj->bkg); s = sx = sy = sxx = sxy = 0.0; for (pixt=pixel+obj->firstpix;pixt>=pixel;pixt=pixel+PLIST(pixt,nextpix)) { pix = PLIST(pixt,value)-dbkg; if (pix>thresh0 && pix<sat) { dx = PLIST(pixt,x) - mx; dy = PLIST(pixt,y) - my; lpix = log(pix); inverr2 = pix*pix; s += inverr2; d2 = dx*dx+dy*dy; sx += d2*inverr2; sxx += d2*d2*inverr2; sy += lpix*inverr2; sxy += lpix*d2*inverr2; } } d = s*sxx-sx*sx; if (fabs(d)>0.0) { b = -(s*sxy-sx*sy)/d; if (b<(bmax = 1/(13*obj->a*obj->b))) /* to have FWHM # 6 sigma */ b = bmax; obj->fwhm = (float)(1.6651/sqrt(b)); /*----- correction for undersampling effects (established from simulations) */ if (obj->fwhm>0.0) obj->fwhm -= 1/(4*obj->fwhm); } else obj->fwhm = 0.0; } else obj->fwhm = 0.0; } return; }
int main(int argc, char **argv) { wchar_t t; int i, opt_end = 0; int sigs[] = {SIGHUP, SIGINT, SIGPIPE, 0}; #if defined(__lint) yydebug = 0; #endif for (i = 0; sigs[i]; ++i) { if (signal(sigs[i], SIG_IGN) != SIG_IGN) (void) signal(sigs[i], catchsig); } tempfile = mktemp(tmp_name); (void) close(creat(tempfile, 0)); (void) setlocale(LC_ALL, ""); #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ #define TEXT_DOMAIN "SYS_TEST" #endif (void) textdomain(TEXT_DOMAIN); if ((mb_cur_max = MB_CUR_MAX) > 1) wide = 1; procnam = argv[0]; getflags(&argc, &argv, &opt_end); initalloc(); setfname("-"); if (argc > 1) { --argc; ++argv; if (strcmp(argv[0], "-")) { ifile[ifx] = m4open(&argv, "r", &argc); setfname(argv[0]); } } for (;;) { token[0] = t = getchr(); token[1] = EOS; if (t == WEOF) { if (ifx > 0) { (void) fclose(ifile[ifx]); ipflr = ipstk[--ifx]; continue; } getflags(&argc, &argv, &opt_end); if (argc <= 1) /* * If dowrap() has been called, the m4wrap * macro has been processed, and a linked * list of m4wrap strings has been created. * The list starts at wrapstart. */ if (wrapstart) { /* * Now that EOF has been processed, * display the m4wrap strings. */ showwrap(); continue; } else break; --argc; ++argv; if (ifile[ifx] != stdin) (void) fclose(ifile[ifx]); if (strcmp(argv[0], "-")) ifile[ifx] = m4open(&argv, "r", &argc); else ifile[ifx] = stdin; setfname(argv[0]); continue; } if (is_alpha(t) || t == '_') { wchar_t *tp = token+1; int tlim = toksize; struct nlist *macadd; /* temp variable */ while ((*tp = getchr()) != WEOF && (is_alnum(*tp) || *tp == '_')) { tp++; if (--tlim <= 0) error2(gettext( "more than %d chars in word"), toksize); } putbak(*tp); *tp = EOS; macadd = lookup(token); *Ap = (wchar_t *)macadd; if (macadd->def) { if ((wchar_t *)(++Ap) >= astklm) { --Ap; error2(gettext( "more than %d items on " "argument stack"), stksize); } if (Cp++ == NULL) Cp = callst; Cp->argp = Ap; *Ap++ = op; puttok(token); stkchr(EOS); t = getchr(); putbak(t); if (t != '(') pbstr(L"()"); else /* try to fix arg count */ *Ap++ = op; Cp->plev = 0; } else { puttok(token); } } else if (match(t, lquote)) { int qlev = 1; for (;;) { token[0] = t = getchr(); token[1] = EOS; if (match(t, rquote)) { if (--qlev > 0) puttok(token); else break; } else if (match(t, lquote)) { ++qlev; puttok(token); } else { if (t == WEOF) error(gettext( "EOF in quote")); putchr(t); } } } else if (match(t, lcom) && ((lcom[0] != L'#' || lcom[1] != L'\0') || prev_char != '$')) { /* * Don't expand commented macro (between lcom and * rcom). * What we know so far is that we have found the * left comment char (lcom). * Make sure we haven't found '#' (lcom) immediately * preceded by '$' because we want to expand "$#". */ puttok(token); for (;;) { token[0] = t = getchr(); token[1] = EOS; if (match(t, rcom)) { puttok(token); break; } else { if (t == WEOF) error(gettext( "EOF in comment")); putchr(t); } } } else if (Cp == NULL) { putchr(t); } else if (t == '(') { if (Cp->plev) stkchr(t); else { /* skip white before arg */ while ((t = getchr()) != WEOF && is_space(t)) ; putbak(t); } ++Cp->plev; } else if (t == ')') { --Cp->plev; if (Cp->plev == 0) { stkchr(EOS); expand(Cp->argp, Ap-Cp->argp-1); op = *Cp->argp; Ap = Cp->argp-1; if (--Cp < callst) Cp = NULL; } else stkchr(t); } else if (t == ',' && Cp->plev <= 1) { stkchr(EOS); *Ap = op; if ((wchar_t *)(++Ap) >= astklm) { --Ap; error2(gettext( "more than %d items on argument stack"), stksize); } while ((t = getchr()) != WEOF && is_space(t)) ; putbak(t); } else { stkchr(t); } } if (Cp != NULL) error(gettext( "EOF in argument list")); delexit(exitstat, 1); return (0); }
/* This program must be able to operate in any of three modes: * * (1) As a "fast filter" for the UNIX System V "lp" subsystem; * (2) As a "printer-interface" agent for the UNIX BSD4 "lpr" subsystem; * (3) As a standalone program. * * In cases (1) and (2) above, we assume that our stdout is already connected * to the required serial-port, but that the port is in an unknown state (in * the POSIX 1003.1 "termios" sense). We also assume that the port may have * open()-ed in write-only mode, which is OK for some printers, but not for * the SLP protocol, which requires a full-duplex channel. Thus we may have * to use fcntl() to make it both readable and writable. */ INT main(UINT ac, CHAR **av) { FILE *file; SHORT numcopies = 1; CHAR *face = "areal-10"; CHAR *target = "-"; /* DO NOT CHANGE THIS INITIALISER! */ CHAR *p; BOOL identify = NO; FONT *font; CHAR *modelname = "auto"; CHAR *medianame = "std"; BOOL portrait = NO; BOOL squeeze = NO; LONG maxbaudval = 0; SHORT baud_mapping_scheme = BAUDMAP_POSIX; SESSION *sd; getflags(&ac, &av, "b##,c#,f*,l,m*,o*,portrait,p*,s,version,x#", "[files]", &maxbaudval, &numcopies, &face, &lp_messages, &medianame, &target, &portrait, &modelname, &squeeze, &identify, &baud_mapping_scheme); if (identify) { identity(); exit (EXIT_FAILURE); } if (!set_baud_mapping(baud_mapping_scheme)) Error("invalid baud-rate mapping scheme (-x%h)", baud_mapping_scheme); #ifndef PATH_MAX set_path_max(); #endif assert(target); sd = open_session(target, modelname, medianame, portrait, maxbaudval); p = (sd->drv.hres(sd->opd) > 7.0) ? "pro" : "plus"; if (!(font = locate_font(face, p))) { Error("cannot locate font: %s.%s", face, p); } if (!ac || !*av) { CHAR buf[BUFSIZ]; if (!(file = tmpfile())) Warning("cannot create temporary file"); else { while (fgets(buf, BUFSIZ, stdin)) fputs(buf, file); rewind(file); render(sd, file, numcopies, font, portrait, squeeze, NO); fclose(file); /* which also removes it */ } } for ( ; ac && *av; --ac, ++av) { if (!(file = fopen(*av, "r"))) Warning("cannot read input file: %s", *av); else { render(sd, file, numcopies, font, portrait, squeeze, NO); fclose(file); } } dropfont(font); close_session(sd); return (EXIT_SUCCESS); }