/*---------------------------------------------------------* | Author: Maurizio Loreti, aka MLO or I3NOO. | | Address: University of Padova - Department of Physics | | Via F. Marzolo, 8 - 35131 PADOVA - Italy | | Phone: (39)(49) 844-313 FAX: (39)(49) 844-245 | | E-Mail: LORETI at IPDINFN (BITNET); or VAXFPD::LORETI | | (DECnet) - VAXFPD is node 38.257 i.e. 39169; or | | LORETI@PADOVA.INFN.IT (INTERNET). | | Home: Via G. Donizetti 6 - 35010 CADONEGHE (PD) - Italy | *---------------------------------------------------------*/ /*--------------------------------* | PF.c - Short for PRINTFILES.c | | See the Read.Me file for help. | *--------------------------------*/ #include #include #include #include #include #include #include #include #include "mlo.h" #include "pf2.h" #include "global.h" main( int argc, char **argv ){ /** | Main program: after having opened intuition library, look | if we were started from CLI or Workbench; then process printer | parameters; last, print selected files. **/ Boolean select = False; /* 'Some file selected' flag */ struct ESStructure *pESS; /* 'Extended selection' pointer */ char fileName[FIL_MAX]; /* File name */ char dirName[DIR_MAX]; /* Directory name */ char target[TOT_MAX]; /* Complete name */ int i; IntuitionBase = LibOpen("intuition.library", REVISION); if (argc) { FromCLI = True; argv = Setup(&argc, argv); } else { FromCLI = False; SetupWB(); /** | Set file requester parameters **/ fr.Title = "File(s) to print:"; fr.Dir = dirName; fr.File = fileName; fr.Flags = FRQSHOWINFOM | FRQCACHINGM | FRQINFOGADGETM | FRQEXTSELECTM | FRQSAVINGM; fr.MaxExtendedSelect = MAX_FILES; fr.dirnamescolor = fr.devicenamescolor = RED_PEN; fr.stringnamecolor = fr.stringgadgetcolor = BLACK_PEN; fr.boxbordercolor = fr.gadgetboxcolor = BLACK_PEN; } InitPrinter(); bufferLength -= nBlanks; if (FromCLI) { for (; argc--; argv++) { DoOutput(*argv); } } else { if (PageMode != SINGLE_PAGE) SetSpecialMode(); FOREVER { fileName[0] = NIHIL; if (FileRequester(&fr)) { select = True; strcpy(target, dirName); if ((i = strlen(target)) && target[i-1] != ':') { target[i++] = '/'; } if ((pESS = fr.ExtendedSelect) == NULL) { strcpy(target+i, fileName); DoOutput(target); } else { do { strcpy(target+i, pESS->thefilename); DoOutput(target); } while ( (pESS = pESS->NextFile) != NULL); } } else { break; } } if (!select) { SimpleRequest("Printer initialised ... Good bye!"); Cleanup(SYS_NORMAL_CODE); } } FlushBuffers(); ExitProgram(); } void ErrMes( char *mForm, /* Format */ ... /* Optional arguments */ ){ /** | Print an error message: on stdout if started from CLI, | in a requester if started from Workbench. **/ char message[LINE_LENGTH]; /* Internal buffer */ va_list vl; /* Input argument pointer */ va_start(vl, mForm); vsprintf(message, mForm, vl); va_end(vl); if (FromCLI) { puts(message); } else { SimpleRequest(message); } }