aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/config/pswrap/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/config/pswrap/main.c')
-rw-r--r--nx-X11/config/pswrap/main.c225
1 files changed, 225 insertions, 0 deletions
diff --git a/nx-X11/config/pswrap/main.c b/nx-X11/config/pswrap/main.c
new file mode 100644
index 000000000..0f7227a6c
--- /dev/null
+++ b/nx-X11/config/pswrap/main.c
@@ -0,0 +1,225 @@
+/*
+ * main.c
+ *
+ * (c) Copyright 1988-1994 Adobe Systems Incorporated.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, distribute, and sublicense this software
+ * and its documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notices appear in all copies and that
+ * both those copyright notices and this permission notice appear in
+ * supporting documentation and that the name of Adobe Systems Incorporated
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. No trademark license
+ * to use the Adobe trademarks is hereby granted. If the Adobe trademark
+ * "Display PostScript"(tm) is used to describe this software, its
+ * functionality or for any other purpose, such use shall be limited to a
+ * statement that this software works in conjunction with the Display
+ * PostScript system. Proper trademark attribution to reflect Adobe's
+ * ownership of the trademark shall be given whenever any such reference to
+ * the Display PostScript system is made.
+ *
+ * ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
+ * ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+ * ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON- INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE
+ * TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT
+ * PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
+ *
+ * Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
+ * Incorporated which may be registered in certain jurisdictions
+ *
+ * Author: Adobe Systems Incorporated
+ */
+/* $XFree86: xc/config/pswrap/main.c,v 1.4 2000/06/07 19:50:47 tsi Exp $ */
+
+#include <stdio.h>
+
+#ifdef XENVIRONMENT
+#include <X11/Xos.h>
+#else
+#include <string.h>
+#endif
+
+#define SLASH '/'
+#include <ctype.h>
+#include <stdlib.h>
+#include "pswpriv.h"
+
+#define MIN_MAXSTRING 80 /* min allowable value of maxstring */
+
+/* global data */
+char *prog; /* program name */
+char *special_h = NULL; /* -f option */
+char *hfile = NULL; /* name of -h file */
+char *ofile = NULL; /* name of -o file */
+char *ifile = NULL; /* name of input file */
+int gotInFile = 0; /* got an explicit input file name */
+int doANSI = 0; /* got -a (ansi) flag for -h file */
+int pad = 0; /* got -p (padding) flag */
+boolean noUserNames = false; /* got -n (don't use usernames) flag */
+int reentrant = 0; /* automatic vars for generated BOS */
+int bigFile = 0; /* got -b flag => call free */
+FILE *header; /* stream for -h file output */
+char headid[200]; /* id for header file #include */
+int maxstring = 2000; /* -s max string length to scan */
+char *string_temp; /* string buffer of above size */
+int outlineno = 1; /* output line number */
+int nWraps = 0; /* total number of wraps */
+#ifdef __MACH__
+char *shlibInclude = NULL; /* special file to be #included at top of */
+ /* file. Used only when building shlibs */
+#endif /* __MACH__ */
+
+static void Usage(void)
+{
+ fprintf(stderr,"Usage: pswrap [options] [input-file]\n");
+ fprintf(stderr," -a produce ANSI C procedure prototypes\n");
+ fprintf(stderr," -b process a big file\n");
+ fprintf(stderr," -f filename include special header\n");
+ fprintf(stderr," -h filename specify header filename\n");
+ fprintf(stderr," -o filename specify output C filename\n");
+ fprintf(stderr," -r make wraps re-entrant\n");
+ fprintf(stderr," -s length set maximum string length\n");
+ exit(1);
+}
+
+static void ScanArgs(int argc, char *argv[])
+{
+ char *slash; /* index of last / in hfile */
+ char *c; /* pointer into headid for conversion */
+ int i = 0;
+
+ prog = argv[i++];
+ slash = rindex(prog,SLASH);
+ if (slash)
+ prog = slash + 1;
+ while (i < argc) {
+ if (*argv[i] != '-') {
+ if (ifile != NULL) {
+ fprintf(stderr, "%s: Only one input file can be specified.\n", prog);
+ Usage();
+ } else {
+ ifile = argv[i];
+ }
+ } else {
+ switch (*(argv[i]+1)) {
+ case 'a':
+ doANSI++;
+ reentrant++;
+ break;
+ case 'b':
+ bigFile++;
+ break;
+#ifdef PSWDEBUG
+ case 'd':
+ lexdebug++;
+ break;
+#endif /* PSWDEBUG */
+ case 'f':
+ special_h = argv[++i];
+ break;
+ case 'h':
+ hfile = argv[++i];
+ slash = rindex(hfile,SLASH);
+ strcpy(headid, slash ? slash+1 : hfile);
+ for (c = headid; *c != '\0'; c++) {
+ if (*c == '.') *c = '_';
+ else if (isascii(*c) && islower(*c)) *c = toupper(*c);
+ }
+ break;
+ case 'o':
+ ofile = argv[++i];
+ break;
+ case 'r':
+ reentrant++;
+ break;
+ case 's':
+ if ((maxstring = atoi(argv[++i])) < MIN_MAXSTRING) {
+ fprintf(stderr,"%s: -s %d is the minimum\n", prog, MIN_MAXSTRING);
+ maxstring = MIN_MAXSTRING;
+ }
+ break;
+ case 'w':
+ break;
+#ifdef __MACH__
+ case 'S':
+ shlibInclude = argv[++i];
+ break;
+#endif /* __MACH__ */
+ case 'n':
+ noUserNames = true;
+ break;
+ case 'p':
+ pad++;
+ break;
+ default:
+ fprintf(stderr, "%s: bad option '-%c'\n", prog, *(argv[i]+1));
+ Usage();
+ break;
+ } /* switch */
+ } /* else */
+ i++;
+ } /* while */
+} /* ScanArgs */
+
+int main(int argc, char *argv[])
+{
+ int retval; /* return from yyparse */
+
+ ScanArgs(argc, argv);
+
+ if (ifile == NULL)
+ ifile = "stdin";
+ else {
+ gotInFile = 1;
+ if (freopen(ifile,"r",stdin) == NULL) {
+ fprintf(stderr, "%s: can't open %s for input\n", prog, ifile);
+ exit(1);
+ }
+ }
+ if ((string_temp = (char *) malloc((unsigned) (maxstring+1))) == 0) {
+ fprintf(stderr, "%s: can't allocate %d char string; try a smaller -s value\n", prog, maxstring);
+ exit(1);
+ }
+ if (ofile == NULL)
+ ofile = "stdout";
+ else {
+#ifdef __MACH__
+ (void)unlink(ofile);
+#endif /* __MACH__ */
+ if (freopen(ofile,"w",stdout) == NULL) {
+ fprintf(stderr, "%s: can't open %s for output\n", prog, ofile);
+ exit(1);
+ }
+ }
+ InitOFile();
+
+ if (hfile != NULL) {
+#ifdef __MACH__
+ (void)unlink(hfile);
+#endif /* __MACH__ */
+ if ((header = fopen(hfile,"w")) == NULL) {
+ fprintf(stderr, "%s: can't open %s for output\n", prog, hfile);
+ exit(1);
+ }
+ }
+ if (header != NULL) InitHFile();
+
+ InitWellKnownPSNames();
+
+ if ((retval = yyparse()) != 0)
+ fprintf(stderr,"%s: error in parsing %s\n",prog,ifile);
+ else if (errorCount != 0) {
+ fprintf(stderr,"%s: errors were encountered\n",prog);
+ retval = errorCount;
+ }
+
+ if (hfile != NULL) FinishHFile();
+
+ exit (retval);
+}