1 /* EJG - 02-Jul-1996 */
2 /* fix processing of filter qualifier */
3 /* add secure qualifier */
4 /* add oddpages qualifier */
5 /* add evenpages qualifier */
6 /* set sendcontrold only if qualifier present, not if merely negated */
7 /* check for setting or resetting disablecomments was cli$_negated in both cases - fix */
8 /* add downloadps (as PK) fonts qualifier */
9 /* add hyperps qualifier */
10 /* EJG - 07-Jul-1996 */
11 /* test for INC_COM was looking for negated in both cases, so fixed */
12 #ifdef __GNUC__
13 #include "ssdef.h"
14 #else
15 #include ssdef
16 #endif
17 /* this code is included into dvips.c; don't compile it separately. */
vmscli()18 int vmscli()
19     {long int k,scnt;
20     int length,status,maxdrift,jext;
21     float offset,conversion;
22     char *u;
23     static char dummy[100],prtr[20];
24     static $DESCRIPTOR(qual1,"copies");
25     static $DESCRIPTOR(qual2,"debug");
26     static $DESCRIPTOR(qual3,"maxdrift");
27     static $DESCRIPTOR(qual4,"filter");
28     static $DESCRIPTOR(qual5,"last");
29     static $DESCRIPTOR(qual6,"manual");
30     static $DESCRIPTOR(qual7,"number");
31     static $DESCRIPTOR(qual8,"output");
32     static $DESCRIPTOR(qual9,"start");
33     static $DESCRIPTOR(qual10,"quiet");
34     static $DESCRIPTOR(qual11,"reverse");
35     static $DESCRIPTOR(qual12,"sav_res");
36     static $DESCRIPTOR(qual13,"mode");
37     static $DESCRIPTOR(qual14,"magnification");
38     static $DESCRIPTOR(qual15,"collate");
39     static $DESCRIPTOR(qual16,"dpi");
40     static $DESCRIPTOR(qual17,"ctrld");
41     static $DESCRIPTOR(qual18,"inc_com");
42     static $DESCRIPTOR(qual19,"comment");
43     static $DESCRIPTOR(qual20,"vm_save");
44     static $DESCRIPTOR(qual21,"h_dpi");
45     static $DESCRIPTOR(qual22,"v_dpi");
46     static $DESCRIPTOR(qual23,"compress");
47     static $DESCRIPTOR(qual24,"printer");
48     static $DESCRIPTOR(qual25,"header");
49     static $DESCRIPTOR(qual26,"absolute");
50     static $DESCRIPTOR(qual27,"epsf");
51     static $DESCRIPTOR(qual28,"prescan");
52     static $DESCRIPTOR(qual29,"pagecopies");
53     static $DESCRIPTOR(qual30,"separate");
54     static $DESCRIPTOR(qual31,"cropmarks");
55     static $DESCRIPTOR(qual32,"sec_size");
56     static $DESCRIPTOR(qual33,"help");
57     static $DESCRIPTOR(qual34,"makefont");
58     static $DESCRIPTOR(qual35,"psize");
59     static $DESCRIPTOR(qual36,"poffset");
60     static $DESCRIPTOR(qual37,"secure");	/* EJG 02-Jul-1996 */
61     static $DESCRIPTOR(qual38,"oddpages");	/* EJG 02-Jul-1996 */
62     static $DESCRIPTOR(qual39,"evenpages");	/* EJG 02-Jul-1996 */
63     static $DESCRIPTOR(qual40,"downloadps");	/* EJG 02-Jul-1996 */
64     static $DESCRIPTOR(qual41,"hyperps");	/* EJG 02-Jul-1996 */
65     static $DESCRIPTOR(dumdum,dummy);
66     static $DESCRIPTOR(dvi_file,"dvifile");
67     static $DESCRIPTOR(input_file,infnme);
68     scnt=0;
69     status = cli$present(&dvi_file);
70 
71     if(status == CLI$_PRESENT)
72     {status = cli$get_value(&dvi_file,&input_file,&jext);
73       length=0;
74       for(k=0;k<252;k++)
75       { if(infnme[k] == ':' || infnme[k] == ']')
76           scnt=k+1;
77       }
78       for(k=scnt;k<252;k++)
79     {if(infnme[k]=='.')
80       {length=k;
81        jext=k;
82        }
83      else
84       {if(infnme[k]=='/' || infnme[k]==' ' || infnme[k]=='\0')
85          infnme[k]='\0';
86        }
87     }
88     if(length==0)
89      {jext= strlen(infnme);
90      strcat(infnme,".DVI");}
91 
92     iname = &infnme[0] ;
93     length = 0;         /* Initialize length...VAX C bug? */
94 
95    }
96     status = cli$present(&qual1);
97 
98     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
99         {status = cli$get_value(&qual1,&dumdum,&length);
100 
101         if(sscanf(&dummy[0],"%d",&numcopies) == 0)
102          error("!Bad copies option");
103         }
104 #ifdef DEBUG
105     status = cli$present(&qual2);
106 
107     if(status == CLI$_PRESENT)
108         {
109         status = cli$get_value(&qual2,&dumdum,&length);
110 
111         if(sscanf(&dummy[0],"%d",&debug_flag) == 0)
112          error("!Bad debug option");
113         }
114 #else
115          error("not compiled in debug mode");
116 #endif
117     status = cli$present(&qual3);
118 
119     if(status == CLI$_PRESENT)
120         {status = cli$get_value(&qual3,&dumdum,&length);
121 
122         if(sscanf(&dummy[0],"%d",&maxdrift) == 0 ||maxdrift <0)
123             error("bad maxdrift option");
124         vmaxdrift=maxdrift;
125         }
126 
127 
128     status = cli$present(&qual5);
129 
130     if(status == CLI$_PRESENT)
131         {status = cli$get_value(&qual5,&dumdum,&length);
132 
133 #ifdef SHORTINT
134             switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) {
135 #else	/* ~SHORTINT */
136             switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) {
137 #endif	/* ~SHORTINT */
138 case 1:        lastseq = 0 ;
139 case 2:        break ;
140 default:
141                error("! Bad last page option.") ;
142             }
143             notlast = 1 ;
144         }
145     status = cli$present(&qual6);
146 
147     if(status == CLI$_PRESENT)
148      manualfeed=1;
149      else
150      if(status == CLI$_NEGATED)
151       manualfeed=0;
152 
153     status = cli$present(&qual7);
154      if(status == CLI$_PRESENT)
155      {status = cli$get_value(&qual7,&dumdum,&length);
156 #ifdef SHORTINT
157             if (sscanf(&dummy[0], "%ld", &maxpages)==0)
158 #else	/* ~SHORTINT */
159             if (sscanf(&dummy[0], "%d", &maxpages)==0)
160 #endif	/* ~SHORTINT */
161                error("! Bad number of pages option.") ;
162       }
163 
164     status = cli$present(&qual8);
165      if(status == CLI$_PRESENT)
166      {status = cli$get_value(&qual8,&dumdum,&length);
167      sscanf(&dummy[0],"%s",ofnme);
168      }
169      else
170      {for(k=scnt;k<jext;k++)ofnme[k-scnt]=infnme[k];
171         strcat(ofnme,".PS");}
172      oname = &ofnme[0] ;
173 
174     status = cli$present(&qual4);
175 
176     if(status == CLI$_PRESENT)
177         {oname="";
178          filter=1;		/* EJG 02-Jul-1996 */
179          noenv=(1==1);
180         }
181     else		/* EJG 02-Jul-1996 */
182       filter=0;		/* EJG 02-Jul-1996 */
183 
184     status = cli$present(&qual9);
185      if(status == CLI$_PRESENT)
186      {status = cli$get_value(&qual9,&dumdum,&length);
187 #ifdef SHORTINT
188             switch(sscanf(&dummy[0], "%ld.%ld", &firstpage, &firstseq)) {
189 #else	/* ~SHORTINT */
190             switch(sscanf(&dummy[0], "%ld.%ld", &firstpage, &firstseq)) {
191 #endif	/* ~SHORTINT */
192 case 1:        firstseq = 0 ;
193 case 2:        break ;
194 default:
195                error("! Bad first page option.") ;
196             }
197             notfirst = 1 ;
198      }
199 
200     status = cli$present(&qual10);
201 
202     if(status == CLI$_PRESENT)
203      quiet=(1==1);
204     else
205     if(status == CLI$_NEGATED)
206      quiet=(1==0);
207 
208     status = cli$present(&qual11);
209 
210     if(status == CLI$_PRESENT)
211      reverse=1;
212     else
213     if(status == CLI$_NEGATED)
214      reverse=0;
215 
216     status = cli$present(&qual12);
217 
218     if(status == CLI$_PRESENT)
219      safetyenclose=1;
220     else
221     if(status == CLI$_NEGATED)
222      safetyenclose=0;
223 
224     status = cli$present(&qual13);
225      if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
226      {status = cli$get_value(&qual13,&dumdum,&length);
227      sscanf(&dummy[0],"%s",pap);
228      if (strcmp(&pap[0], "landscape") == 0)
229          { if (hpapersize || vpapersize)
230               error( "both landscape and papersize specified; ignoring landscape") ;
231            else
232               landscape = 1 ;
233          	/* The following lines have been added by G.Bonacci */
234          	if ((status=cli$get_value(&qual13,&dumdum,&length))==1)
235          	{
236          		sscanf(&dummy[0],"%s",pap);
237 
238          		paperfmt = &pap[0] ;
239          	}
240          	/* end G.Bonacci 20.3.92 */
241          }
242          else
243          paperfmt = &pap[0] ;
244      }
245 
246     status = cli$present(&qual14);
247 
248     if(status == CLI$_PRESENT)
249         {status = cli$get_value(&qual14,&dumdum,&length);
250 
251         if(sscanf(&dummy[0],"%d",&mag) == 0 || mag < 10 || mag >100000)
252          error("!Bad magnification parameter.");
253          overridemag=1;
254         }
255     status = cli$present(&qual15);
256 
257     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
258         {status = cli$get_value(&qual15,&dumdum,&length);
259 
260         if(sscanf(&dummy[0],"%d",&collatedcopies) == 0)
261          error("!Bad number of collated copies");
262         }
263     status = cli$present(&qual16);
264 
265     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
266         {status = cli$get_value(&qual16,&dumdum,&length);
267 
268         if(sscanf(&dummy[0],"%d",&actualdpi) == 0 ||
269            actualdpi < 10 || actualdpi >10000)
270 	 error("!Bad dpi parameter.");
271   	 vactualdpi=actualdpi;
272         }
273 
274     status = cli$present(&qual17);
275 
276     if(status == CLI$_PRESENT)		/* EJG 02-Jul-1996 */
277       sendcontrolD =1;
278     else
279     if(status == CLI$_NEGATED | status==CLI$_DEFAULTED)	/* EJG 02-Jul-1996 */
280       sendcontrolD =0;
281 
282     status = cli$present(&qual18);
283 
284     if(status == CLI$_PRESENT)		/* EJG 07-Jul-1996 */
285      removecomments =0;
286     else
287     if(status == CLI$_NEGATED)
288      removecomments =1;
289 
290     status = cli$present(&qual19);
291 
292     if(status == CLI$_PRESENT)		/* EJG 02-JUL-1996 */
293       disablecomments = 0;
294     else
295     if(status == CLI$_NEGATED)
296       disablecomments = 1;
297 
298     status = cli$present(&qual20);
299 
300     if(status == CLI$_PRESENT)
301       nosmallchars=1;
302     else
303     if(status == CLI$_NEGATED)
304       nosmallchars=0;
305 
306     status = cli$present(&qual21);
307 
308     if(status == CLI$_PRESENT)
309         {status = cli$get_value(&qual21,&dumdum,&length);
310 
311         if(sscanf(&dummy[0],"%d",&actualdpi) == 0 ||
312            actualdpi < 10 || actualdpi >10000)
313          error("!Bad dpi parameter in X.");
314         }
315 
316     status = cli$present(&qual22);
317 
318     if(status == CLI$_PRESENT)
319         {status = cli$get_value(&qual22,&dumdum,&length);
320 
321         if(sscanf(&dummy[0],"%d",&vactualdpi) == 0 ||
322            vactualdpi < 10 || vactualdpi >10000)
323          error("!Bad dpi parameter in Y.");
324         }
325 
326     status = cli$present(&qual23);
327 
328     if(status == CLI$_PRESENT)
329       compressed=1;
330     else
331     if(status == CLI$_NEGATED)
332       compressed=0;
333 
334     status = cli$present(&qual24);
335      if(status == CLI$_PRESENT)
336      {status = cli$get_value(&qual24,&dumdum,&length);
337      sscanf(&dummy[0],"%s",prtr);
338      u = &dummy[0] ;
339      strcpy(u,"config.");
340      strcat(u,&prtr[0]);
341      getdefaults("");
342      noenv=1;
343      getdefaults(u);
344      }
345 
346     status = cli$present(&qual25);
347      if(status == CLI$_PRESENT) {
348        while (status != SS$_NORMAL) {
349        status = cli$get_value(&qual25,&dumdum,&length);
350        dummy[length] = '\0';
351        if (strcmp(dummy, "-") == 0)
352           headers_off = 1;
353        else
354           (void)add_header(dummy) ;
355        }
356      }
357      else {
358        if(status == CLI$_NEGATED)
359           headers_off = 1;
360      }
361 
362     status = cli$present(&qual26);
363     if(status == CLI$_PRESENT) abspage = 1;
364 
365     status = cli$present(&qual27);
366     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) tryepsf = 1;
367     else
368     if(status == CLI$_NEGATED) tryepsf = 0;
369 
370     status = cli$present(&qual28);
371     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) dopprescan = 1;
372     else
373     if(status == CLI$_NEGATED) dopprescan = 0;
374 
375     status = cli$present(&qual29);
376 
377     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
378         {status = cli$get_value(&qual29,&dumdum,&length);
379 
380         if(sscanf(&dummy[0],"%d",&pagecopies) == 0)
381          error("!Bad number of page copies option /PAGECOPIES");
382         if (pagecopies < 1 || pagecopies > 1000)
383                error("! can only print one to a thousand page copies") ;
384         }
385 
386     status = cli$present(&qual30);
387     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) sepfiles = 1;
388     else
389     if(status == CLI$_NEGATED) sepfiles = 0;
390 
391     status = cli$present(&qual31);
392     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) cropmarks = 1;
393     else
394     if(status == CLI$_NEGATED) cropmarks = 0;
395 
396     status = cli$present(&qual32);
397      if(status == CLI$_PRESENT)
398      {status = cli$get_value(&qual32,&dumdum,&length);
399 #ifdef SHORTINT
400             if (sscanf(&dummy[0], "%ld", &maxsecsize)==0)
401 #else	/* ~SHORTINT */
402             if (sscanf(&dummy[0], "%d", &maxsecsize)==0)
403 #endif	/* ~SHORTINT */
404                error("! Bad section size arg (/SEC_SIZE).") ;
405      }
406 
407     status = cli$present(&qual33);
408      if(status == CLI$_PRESENT)
409      {  (void)fprintf(stderr, banner) ;
410         help() ;
411      }
412 
413     status = cli$present(&qual34);
414     if(status == CLI$_NEGATED) dontmakefont = 1;
415 /*-----------------------------------------------------------------------
416  * Currently one uses /PSIZE="5mm,10mm" This way CASE is preserved
417  * Should I convert the PSIZE to allow a LIST => /PSIZE=(5mm,10mm) and
418  * convert the case back to lowercase in here.
419  *-----------------------------------------------------------------------*/
420     status = cli$present(&qual35);
421      if(status == CLI$_PRESENT) {
422        status = cli$get_value(&qual35,&dumdum,&length);
423        dummy[length] = '\0';
424        handlepapersize(&dummy[0], &hpapersize, &vpapersize) ;
425        if (landscape) {
426           error("both landscape and papersize specified; ignoring landscape") ;
427           landscape = 0 ;
428        }
429      }
430 
431     status = cli$present(&qual36);
432      if(status == CLI$_PRESENT) {
433        status = cli$get_value(&qual36,&dumdum,&length);
434        dummy[length] = '\0';
435        handlepapersize(&dummy[0], &hoff, &voff) ;
436      }
437 
438     status = cli$present(&qual37);		/* EJG 02-Jul-1996 */
439     if(status == CLI$_PRESENT) secure = 1;	/* EJG 02-Jul-1996 */
440     else					/* EJG 02-Jul-1996 */
441     if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) secure = 0;	/* EJG 02-Jul-1996 */
442 
443     status = cli$present(&qual38);		/* EJG 02-Jul-1996 */
444     if(status == CLI$_PRESENT) oddpages = 1;	/* EJG 02-Jul-1996 */
445     else					/* EJG 02-Jul-1996 */
446     if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) oddpages = 0;	/* EJG 02-Jul-1996 */
447 
448     status = cli$present(&qual39);		/* EJG 02-Jul-1996 */
449     if(status == CLI$_PRESENT) evenpages = 1;	/* EJG 02-Jul-1996 */
450     else					/* EJG 02-Jul-1996 */
451     if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) evenpages = 0; /* EJG 02-Jul-1996 */
452 
453     status = cli$present(&qual40);		/* EJG 02-Jul-1996 */
454     if(status == CLI$_PRESENT) downloadpspk = 1; /* EJG 02-Jul-1996 */
455     else					/* EJG 02-Jul-1996 */
456     if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) downloadpspk = 0; /* EJG 02-Jul-1996 */
457 
458 #ifdef HPS		/* EJG 02-Jul-1996 */
459 
460     status = cli$present(&qual41);		/* EJG 02-Jul-1996 */
461     if(status == CLI$_PRESENT) HPS_FLAG = 1;	/* EJG 02-Jul-1996 */
462     else					/* EJG 02-Jul-1996 */
463     if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) HPS_FLAG = 0; /* EJG 02-Jul-1996 */
464 #endif			/* EJG 02-Jul-1996 */
465 
466 }
467