Commit | Line | Data |
---|---|---|
9a64e43b KB |
1 | From: ihnp4!gargoyle!oddjob!noao!arizona!naucse!jdc (John Campbell) |
2 | To: arizona!noao!oddjob!gargoyle!ihnp4!nsc!nscpdc!rgb | |
3 | Subject: VMS SC | |
4 | ||
5 | VMS USERS: | |
6 | ||
7 | Bob Bond has been generous enough to give me free rein in adding what I | |
8 | think is needed to make SC run on VMS. Any problems with VMS should be | |
9 | directed to me--they are not Bob's fault. | |
10 | ||
11 | The VMS SC is "SIMPLE" for the most part, except that the arrow keys | |
12 | (instead of hjkl) will move you around the cells. The VMS version of SC | |
13 | will not interact with the Bourne shell (obviously), which means that CRYPT | |
14 | and EXTERNAL FUNCTIONS will not be available. | |
15 | ||
16 | If you have a 'C' compiler and GNU Bison then you should be able to get | |
17 | SC running on VMS by following the instructions below. | |
18 | ||
19 | Step 1: Get all the files | |
20 | ||
21 | I've heard of a few sites that can unpack unix shar files directly on | |
22 | VMS. Most people, however, will need access to a unix machine to get | |
23 | the original distribution unpacked. At this time you should also build | |
24 | experres.h and statres.h and perhaps run the man pages off if you need | |
25 | to port the documentation. To build the two "missing" hearder files: | |
26 | sed <gram.y >experres.h -f eres.sed | |
27 | sed <gram.y >statres.h -f sres.sed | |
28 | ||
29 | Step 2: Cut out BUILD.COM and GETOPT.C | |
30 | ||
31 | At the end of this file are two other pieces: BUILD.COM and GETOPT.C. After | |
32 | you've moved everything to VMS, cut BUILD.COM and GETOPT.C out of here and | |
33 | put them in the same directory as the rest of the SC distribution. | |
34 | ||
35 | Step 3: Build it | |
36 | ||
37 | Theoretically all you now need to do is @BUILD and SC (as well as PSC) | |
38 | will be running on VMS. If you have problems feel free to contact me | |
39 | at ...!arizona!naucse!jdc (or even call at 602-523-6259). | |
40 | ||
41 | ---------------------cut here for BUILD.COM-------------------------- | |
42 | $! VMS command file to build SC and PSC (requires bison) | |
43 | $! SC: | |
44 | $ bison -d gram.y | |
45 | $ ren gram_tab.c gram.c | |
46 | $ cc /define=("SIMPLE","SIGVOID") sc.c | |
47 | $ cc /define=("SIMPLE","SIGVOID") gram.c | |
48 | $ cc /define=("SIMPLE","SIGVOID") lex.c | |
49 | $ cc /define=("SIMPLE","SIGVOID") interp | |
50 | $ cc /define=("SIMPLE","SIGVOID") cmds | |
51 | $ cc /define=("SIMPLE","SIGVOID") xmalloc | |
52 | $ cc /define=("SIMPLE","SIGVOID") range | |
53 | $ cc /define=("SIMPLE","SIGVOID") help | |
54 | $ link sc.obj,lex.obj,gram.obj,interp.obj,cmds.obj,xmalloc.obj,- | |
55 | range.obj,help.obj,sys$library:vaxcrtl.olb/lib | |
56 | $ ! | |
57 | $ ! Create VMS foreign command symbol to test SC | |
58 | $ ! | |
59 | $ sc == "$" + f$logical("SYS$DISK") + f$directory() + "SC.EXE" | |
60 | $! | |
61 | $! Now PSC | |
62 | $! | |
63 | $ cc psc.c | |
64 | $ cc getopt.c | |
65 | $ link psc,getopt,sys$library:vaxcrtl.olb/lib | |
66 | $ ! | |
67 | $ ! Create VMS foreign command symbol to test PSC (Note that | |
68 | $ ! PSC reads SYS$INPUT and writes to SYS$OUTPUT, so use | |
69 | $ ! DEFINE/USER to redirect.) | |
70 | $ ! | |
71 | $ psc == "$" + f$logical("SYS$DISK") + f$directory() + "PSC.EXE" | |
72 | ||
73 | ---------------------cut here for GETOPT.C------------------------ | |
74 | /* | |
75 | * getopt - get option letter from argv | |
76 | * This software is in the public domain | |
77 | * Originally written by Henry Spencer at the U. of Toronto | |
78 | */ | |
79 | ||
80 | #include <stdio.h> | |
81 | ||
82 | char *optarg; /* Global argument pointer. */ | |
83 | int optind = 0; /* Global argv index. */ | |
84 | ||
85 | static char *scan = NULL; /* Private scan pointer. */ | |
86 | ||
87 | /* extern char *index(); obsolete, used strchr (JDC). */ | |
88 | ||
89 | int | |
90 | getopt(argc, argv, optstring) | |
91 | int argc; | |
92 | char *argv[]; | |
93 | char *optstring; | |
94 | { | |
95 | register char c; | |
96 | register char *place; | |
97 | ||
98 | optarg = NULL; | |
99 | ||
100 | if (scan == NULL || *scan == '\0') { | |
101 | if (optind == 0) | |
102 | optind++; | |
103 | ||
104 | if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0') | |
105 | return(EOF); | |
106 | if (strcmp(argv[optind], "--")==0) { | |
107 | optind++; | |
108 | return(EOF); | |
109 | } | |
110 | ||
111 | scan = argv[optind]+1; | |
112 | optind++; | |
113 | } | |
114 | ||
115 | c = *scan++; | |
116 | place = strchr(optstring, c); | |
117 | ||
118 | if (place == NULL || c == ':') { | |
119 | fprintf(stderr, "%s: unknown option -%c\n", argv[0], c); | |
120 | return('?'); | |
121 | } | |
122 | ||
123 | place++; | |
124 | if (*place == ':') { | |
125 | if (*scan != '\0') { | |
126 | optarg = scan; | |
127 | scan = NULL; | |
128 | } else { | |
129 | optarg = argv[optind]; | |
130 | optind++; | |
131 | } | |
132 | } | |
133 | ||
134 | return(c); | |
135 | } |