Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / local / tmp / mh-6.8-bsdi.patch
1 From somewhere!bsdi-users-request@bsdi.com  Mon Mar  1 11:50:20 1993
2 Received: by IEDVB.acd.com (5.57/Ultrix2.3-C)
3         id AA10693; Mon, 1 Mar 93 11:50:20 -0500
4 Received: by acd4.acd.com (5.57/Ultrix2.4-C)
5         id AA15842; Mon, 1 Mar 93 11:51:42 EST
6 Received: from banjo.concert.net by relay1.UU.NET with SMTP 
7         (5.61/UUNET-internet-primary) id AA01965; Sun, 28 Feb 93 03:24:30 -0500
8 Received: by banjo.concert.net (5.59/tas-concert/6-19-91)
9         id AA28168; Sun, 28 Feb 93 02:07:16 -0500
10 Message-Id: <199302280705.AA26812@misc.glarp.com>
11 To: sgd@tfm.tfm.com (Stephen Diercouff)
12 Cc: bsdi-users@bsdi.com
13 Subject: Re: BSDI MH patches 
14 In-Reply-To: <m0nSYkB-0007ZEC@tfm.tfm.com> 
15 Mime-Version: 1.0
16 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
17 Date: Sun, 28 Feb 1993 00:05:40 -0700
18 From: Brad Huntting <huntting@glarp.com>
19 Errors-To: bsdi-users-request@bsdi.com
20 Sender: bsdi-users-request@bsdi.com
21 Precedence: bulk
22 X-Loop: bsdi-users@bsdi.com
23 Status: RO
24
25
26
27 ------- =_aaaaaaaaaa0
28 Content-Type: text/plain; charset="us-ascii"
29
30 I seemed to have jumped the gun with respect to the mh patches...
31 This batch has been tested (really!).
32
33
34 brad
35
36 ------- =_aaaaaaaaaa0
37 Content-Type: text/plain; charset="us-ascii"
38 Content-Description: mh-6.8-patch
39
40 diff -c /dev/null mh/conf/MH.bsd386:1.2
41 *** /dev/null   Tue Feb  9 07:41:52 1993
42 --- mh/conf/MH.bsd386   Tue Feb  9 07:41:54 1993
43 ***************
44 *** 0 ****
45 --- 1,26 ----
46 + # a BSD386 system running SendMail
47 + cc    cc
48 + bin   /usr/contrib/mh/bin
49 + etc   /usr/contrib/mh/lib
50 + mandir        /usr/contrib/man
51 + mail  /var/mail
52 + chown /usr/sbin/chown
53 + manuals       gen
54 + mts   sendmail/smtp
55
56 + sprintf       int
57 + signal        void
58 + options       BIND BSD42 BSD43 DBMPWD MORE='"/usr/bin/more"'
59 + options SYS5DIR NTOHLSWAP OVERHEAD VSPRINTF WHATNOW ZONEINFO 
60 + options MHE MHRC MIME FLOCK
61 + options POSIX
62
63 + #
64 + # POP
65 + #
66 + pop   on
67 + popdir        /usr/local/lib/mh
68 + #options APOP='"/etc/pop.auth"'
69 + #options DPOP
70 + #options MPOP
71 + options RPOP
72 diff -c mh/conf/config/mtstailor:1.1.1.1 mh/conf/config/mtstailor:1.2
73 *** mh/conf/config/mtstailor:1.1.1.1    Tue Feb  9 07:41:56 1993
74 --- mh/conf/config/mtstailor    Tue Feb  9 07:41:56 1993
75 ***************
76 *** 2,4 ****
77 --- 2,6 ----
78   mmdflfil:     @(MHDROPFIL)
79   hostable:     @(MHETCPATH)/hosts
80   servers:      localhost \01localnet
81 + sendmail:     /usr/sbin/sendmail
82 + lockstyle:    0
83 diff -c mh/conf/makefiles/sbr:1.1.1.1 mh/conf/makefiles/sbr:1.2
84 *** mh/conf/makefiles/sbr:1.1.1.1       Tue Feb  9 07:42:05 1993
85 --- mh/conf/makefiles/sbr       Tue Feb  9 07:42:06 1993
86 ***************
87 *** 2,8 ****
88   #    Instructions to Make, for compilation of MH modules
89   #
90   #     @(MHWARNING)
91 ! # @(#)$Id: sbr,v 2.19 1992/11/12 22:47:24 jromine Exp $
92   ##############################################################################
93   
94   OPTIONS       =       @(MHOPTIONS)
95 --- 2,8 ----
96   #    Instructions to Make, for compilation of MH modules
97   #
98   #     @(MHWARNING)
99 ! # @(#)$Id: sbr,v 1.1.1.1 1993/01/30 04:40:16 jtc Exp $
100   ##############################################################################
101   
102   OPTIONS       =       @(MHOPTIONS)
103 ***************
104 *** 47,53 ****
105                 makedir.c path.c peekc.c pidwait.c pidstatus.c \
106                 printsw.c push.c putenv.c pwd.c refile.c remdir.c r1bindex.c \
107                 showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \
108 !               uleq.c uprf.c vfgets.c formatdef.c m_msgdef.c
109   
110   
111   OFILES        =       add.o adios.o admonish.o addrsbr.o advertise.o advise.o \
112 --- 47,53 ----
113                 makedir.c path.c peekc.c pidwait.c pidstatus.c \
114                 printsw.c push.c putenv.c pwd.c refile.c remdir.c r1bindex.c \
115                 showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \
116 !               uleq.c uprf.c vfgets.c formatdef.c m_msgdef.c ruserpass.c
117   
118   
119   OFILES        =       add.o adios.o admonish.o addrsbr.o advertise.o advise.o \
120 ***************
121 *** 63,69 ****
122                 makedir.o path.o peekc.o pidwait.o pidstatus.o \
123                 printsw.o push.o putenv.o pwd.o refile.o remdir.o r1bindex.o \
124                 showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \
125 !               uleq.o uprf.o vfgets.o formatdef.o m_msgdef.o
126   
127   @BEGIN: SHAREDLIB
128   ODEFS =       formatdef.o m_msgdef.o
129 --- 63,69 ----
130                 makedir.o path.o peekc.o pidwait.o pidstatus.o \
131                 printsw.o push.o putenv.o pwd.o refile.o remdir.o r1bindex.o \
132                 showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \
133 !               uleq.o uprf.o vfgets.o formatdef.o m_msgdef.o ruserpass.o
134   
135   @BEGIN: SHAREDLIB
136   ODEFS =       formatdef.o m_msgdef.o
137 diff -c mh/conf/makefiles/zotnet/tws:1.1.1.1 mh/conf/makefiles/zotnet/tws:1.2
138 *** mh/conf/makefiles/zotnet/tws:1.1.1.1        Tue Feb  9 07:42:11 1993
139 --- mh/conf/makefiles/zotnet/tws        Tue Feb  9 07:42:11 1993
140 ***************
141 *** 2,8 ****
142   #    Instructions to Make, for compilation of ZOT UIP/utility processes
143   #
144   #     @(MHWARNING)
145 ! # @(#)$Id: tws,v 1.15 1992/11/18 16:54:16 jromine Exp $
146   ##############################################################################
147   
148   # The following entries were inserted during MH configuration
149 --- 2,8 ----
150   #    Instructions to Make, for compilation of ZOT UIP/utility processes
151   #
152   #     @(MHWARNING)
153 ! # @(#)$Id: tws,v 1.1.1.1 1993/01/30 04:40:19 jtc Exp $
154   ##############################################################################
155   
156   # The following entries were inserted during MH configuration
157 ***************
158 *** 71,76 ****
159 --- 71,78 ----
160   
161   dtimep.c:     dtimep.lex
162                 $(LEX) dtimep.lex | sed -f lexedit.sed > dtimep.c
163 +               len=`wc -l dtimep.c | awk ' { print $$1 } '`; \
164 +                   if [ $$len -eq 1 ]; then cp dtimep.c-lexed dtimep.c; fi
165   
166   lexstring.o:  lexstring.c
167                 $(CC) $(CFLAGS) -c -DONECASE lexstring.c
168 diff -c mh/dist/Makefile:1.1.1.1 mh/dist/Makefile:1.2
169 *** mh/dist/Makefile:1.1.1.1    Tue Feb  9 07:42:15 1993
170 --- mh/dist/Makefile    Tue Feb  9 07:42:15 1993
171 ***************
172 *** 2,8 ****
173   #    Instructions to Make, for generation of MH documentation sets
174   #
175   #     This file is automatically generated.  Do not edit!
176 ! # @(#)$Id: dist,v 2.7 1992/12/02 22:21:43 jromine Exp $
177   ##############################################################################
178   
179   MAKE  =       make DESTDIR=$(DESTDIR) $(MFLAGS) -k
180 --- 2,8 ----
181   #    Instructions to Make, for generation of MH documentation sets
182   #
183   #     This file is automatically generated.  Do not edit!
184 ! # @(#)$Id: dist,v 1.1.1.1 1993/01/30 04:40:16 jtc Exp $
185   ##############################################################################
186   
187   MAKE  =       make DESTDIR=$(DESTDIR) $(MFLAGS) -k
188 diff -c mh/h/mh.h:1.1.1.1 mh/h/mh.h:1.2
189 *** mh/h/mh.h:1.1.1.1   Tue Feb  9 07:42:20 1993
190 --- mh/h/mh.h   Tue Feb  9 07:42:20 1993
191 ***************
192 *** 1,5 ****
193   /* mh.h - main header file for all of MH */
194 ! /* @(#)$Id: mh.h,v 2.18 1992/12/14 17:10:43 jromine Exp $ */
195   
196   
197   /* Well-used constants */
198 --- 1,5 ----
199   /* mh.h - main header file for all of MH */
200 ! /* @(#)$Id: mh.h,v 1.1.1.1 1993/01/30 04:40:24 jtc Exp $ */
201   
202   
203   /* Well-used constants */
204 ***************
205 *** 332,338 ****
206   
207   /* should be in <stdio.h> */
208   
209 ! #if   !defined(SYS5) && !defined(ncr) && !defined(_AIX) && !defined(OSF1) && !defined(__convex__)
210   typedef struct _iobuf  *FP;
211   FP   popen ();
212   #else /* SYS5 */
213 --- 332,338 ----
214   
215   /* should be in <stdio.h> */
216   
217 ! #if   !defined(SYS5) && !defined(ncr) && !defined(_AIX) && !defined(OSF1) && !defined(__convex__) && !defined(__386BSD__) && !defined(__bsdi__)
218   typedef struct _iobuf  *FP;
219   FP   popen ();
220   #else /* SYS5 */
221 diff -c mh/h/strings.h:1.1.1.1 mh/h/strings.h:1.2
222 *** mh/h/strings.h:1.1.1.1      Tue Feb  9 07:42:21 1993
223 --- mh/h/strings.h      Tue Feb  9 07:42:21 1993
224 ***************
225 *** 1,5 ****
226   /* strings.h - define standard string functions */
227 ! /* @(#)$Id: strings.h,v 1.18 1992/11/12 19:34:05 jromine Exp $ */
228   
229   #ifndef       _STRINGS                /* once-only... */
230   #define       _STRINGS
231 --- 1,5 ----
232   /* strings.h - define standard string functions */
233 ! /* @(#)$Id: strings.h,v 1.1.1.1 1993/01/30 04:40:24 jtc Exp $ */
234   
235   #ifndef       _STRINGS                /* once-only... */
236   #define       _STRINGS
237 ***************
238 *** 25,31 ****
239   #endif /* SYS5 */
240   
241   #if   defined(BSD42) || defined(SVR4)
242 ! #ifndef       SVR4
243   #include <strings.h>
244   #else
245   #include <string.h>
246 --- 25,31 ----
247   #endif /* SYS5 */
248   
249   #if   defined(BSD42) || defined(SVR4)
250 ! #if !defined(SVR4) && !defined(__386BSD__) && !defined(__bsdi__)
251   #include <strings.h>
252   #else
253   #include <string.h>
254 ***************
255 *** 51,57 ****
256   char   *strncpy ();
257   #endif
258   
259 ! #ifndef       SVR4
260   char   *getenv ();
261   char   *calloc (), *malloc (), *realloc ();
262   #endif        /* SVR4 */
263 --- 51,57 ----
264   char   *strncpy ();
265   #endif
266   
267 ! #if !defined(SVR4) && !defined(__386BSD__) && !defined(__bsdi__)
268   char   *getenv ();
269   char   *calloc (), *malloc (), *realloc ();
270   #endif        /* SVR4 */
271 diff -c mh/sbr/discard.c:1.1.1.1 mh/sbr/discard.c:1.2
272 *** mh/sbr/discard.c:1.1.1.1    Tue Feb  9 07:43:22 1993
273 --- mh/sbr/discard.c    Tue Feb  9 07:43:22 1993
274 ***************
275 *** 1,13 ****
276   /* discard.c - discard output on a file pointer */
277   #ifndef       lint
278 ! static char ident[] = "@(#)$Id: discard.c,v 1.6 1992/12/15 00:20:22 jromine Exp $";
279   #endif        /* lint */
280   
281   #include "../h/mh.h"
282   #include <stdio.h>
283   #ifndef       SYS5
284   #include <sgtty.h>
285 ! #else /* SYS5 */
286   #include <sys/types.h>
287   #include <termio.h>
288   #ifndef       NOIOCTLH
289 --- 1,16 ----
290   /* discard.c - discard output on a file pointer */
291   #ifndef       lint
292 ! static char ident[] = "@(#)$Id: discard.c,v 1.1.1.1 1993/01/30 04:41:24 jtc Exp $";
293   #endif        /* lint */
294   
295   #include "../h/mh.h"
296   #include <stdio.h>
297 + #ifdef POSIX
298 + #include <termios.h>
299 + #else
300   #ifndef       SYS5
301   #include <sgtty.h>
302 ! #else
303   #include <sys/types.h>
304   #include <termio.h>
305   #ifndef       NOIOCTLH
306 ***************
307 *** 14,33 ****
308   #include <sys/ioctl.h>
309   #endif        /* NOIOCTLH */
310   #endif        /* SYS5 */
311
312   
313   void  discard (io)
314   FILE   *io;
315   {
316   #ifndef       SYS5
317       struct sgttyb   sg;
318   #else /* SYS5 */
319       struct termio   sg;
320   #endif        /* SYS5 */
321   
322       if (io == NULL)
323         return;
324   
325   #ifndef       SYS5
326       if (ioctl (fileno (io), TIOCGETP, (char *) &sg) != NOTOK)
327         (void) ioctl (fileno (io), TIOCSETP, (char *) &sg);
328 --- 17,41 ----
329   #include <sys/ioctl.h>
330   #endif        /* NOIOCTLH */
331   #endif        /* SYS5 */
332 ! #endif        /* POSIX */
333   
334   void  discard (io)
335   FILE   *io;
336   {
337 + #ifndef POSIX
338   #ifndef       SYS5
339       struct sgttyb   sg;
340   #else /* SYS5 */
341       struct termio   sg;
342   #endif        /* SYS5 */
343 + #endif        /* POSIX */
344   
345       if (io == NULL)
346         return;
347   
348 + #ifdef POSIX
349 +     tcflush (fileno (io), TCOFLUSH);
350 + #else
351   #ifndef       SYS5
352       if (ioctl (fileno (io), TIOCGETP, (char *) &sg) != NOTOK)
353         (void) ioctl (fileno (io), TIOCSETP, (char *) &sg);
354 ***************
355 *** 35,41 ****
356 --- 43,54 ----
357       if (ioctl (fileno (io), TCGETA, &sg) != NOTOK)
358         (void) ioctl (fileno (io), TCSETA, &sg);
359   #endif        /* SYS5 */
360 + #endif        /* POSIX */
361   
362 + #ifdef _FSTDIO
363 +     fpurge (io);
364 + #else
365       if (io -> _ptr = io -> _base)
366         io -> _cnt = 0;
367 + #endif
368   }
369 diff -c mh/sbr/m_getfld.c:1.1.1.1 mh/sbr/m_getfld.c:1.2
370 *** mh/sbr/m_getfld.c:1.1.1.1   Tue Feb  9 07:43:25 1993
371 --- mh/sbr/m_getfld.c   Tue Feb  9 07:43:25 1993
372 ***************
373 *** 1,6 ****
374   /* m_getfld.c - read/parse a message */
375   #ifndef       lint
376 ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.14 1992/10/31 07:44:56 jromine Exp $";
377   #endif /* lint */
378   
379   #include "../h/mh.h"
380 --- 1,6 ----
381   /* m_getfld.c - read/parse a message */
382   #ifndef       lint
383 ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.1.1.1 1993/01/30 04:41:26 jtc Exp $";
384   #endif /* lint */
385   
386   #include "../h/mh.h"
387 ***************
388 *** 170,175 ****
389 --- 170,181 ----
390   static int  edelimlen;
391   
392   static int  (*eom_action) () = NULL;
393
394 + #ifdef _FSTDIO
395 + #define       _ptr    _p              /* Gag */
396 + #define       _cnt    _r              /* Retch */
397 + #define       _filbuf __srget         /* Puke */
398 + #endif
399   
400   /* \f */
401   
402 diff -c /dev/null mh/sbr/ruserpass.c:1.1
403 *** /dev/null   Tue Feb  9 07:43:26 1993
404 --- mh/sbr/ruserpass.c  Tue Feb  9 07:43:27 1993
405 ***************
406 *** 0 ****
407 --- 1,216 ----
408 + /*
409 +  * Copyright (c) 1985 Regents of the University of California.
410 +  * All rights reserved.
411 +  *
412 +  * Redistribution and use in source and binary forms are permitted
413 +  * provided that the above copyright notice and this paragraph are
414 +  * duplicated in all such forms and that any documentation,
415 +  * advertising materials, and other materials related to such
416 +  * distribution and use acknowledge that the software was developed
417 +  * by the University of California, Berkeley.  The name of the
418 +  * University may not be used to endorse or promote products derived
419 +  * from this software without specific prior written permission.
420 +  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
421 +  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
422 +  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
423 +  */
424
425 + #ifndef lint
426 + static char sccsid[] = "@(#)ruserpass.c       5.1 (Berkeley) 3/1/89";
427 + #endif /* not lint */
428
429 + #include <sys/types.h>
430 + #include <sys/stat.h>
431 + #include <stdio.h>
432 + #include <ctype.h>
433 + #include <pwd.h>
434 + #include <errno.h>
435
436 + char  *malloc(), *index(), *getenv(), *getpass(), *getlogin();
437 + char  *strcpy();
438 + static        FILE *cfile;
439
440 + #ifndef MAXHOSTNAMELEN
441 + #define MAXHOSTNAMELEN 64
442 + #endif
443
444 + #define       DEFAULT 1
445 + #define       LOGIN   2
446 + #define       PASSWD  3
447 + #define       ACCOUNT 4
448 + #define MACDEF  5
449 + #define       ID      10
450 + #define       MACH    11
451
452 + static int token();
453 + static char tokval[100];
454
455 + static struct toktab {
456 +       char *tokstr;
457 +       int tval;
458 + } toktab[]= {
459 +       "default",      DEFAULT,
460 +       "login",        LOGIN,
461 +       "password",     PASSWD,
462 +       "passwd",       PASSWD,
463 +       "account",      ACCOUNT,
464 +       "machine",      MACH,
465 +       "macdef",       MACDEF,
466 +       0,              0
467 + };
468
469 + ruserpass(host, aname, apass)
470 +      char *host, **aname, **apass;
471 + {
472 +       char *hdir, buf[BUFSIZ], *tmp;
473 +       char myname[MAXHOSTNAMELEN], *mydomain;
474 +       int t, i, c, usedefault = 0;
475 +       struct stat stb;
476 +       extern int errno;
477
478 +       hdir = getenv("HOME");
479 +       if (hdir == NULL)
480 +               hdir = ".";
481 +       (void) sprintf(buf, "%s/.netrc", hdir);
482 +       cfile = fopen(buf, "r");
483 +       if (cfile == NULL) {
484 +               if (errno != ENOENT)
485 +                       perror(buf);
486 +               goto done;
487 +       }
488
489 +       while ((t = token())) switch(t) {
490 +       case DEFAULT:
491 +               usedefault = 1;
492 +               /* FALL THROUGH */
493
494 +       case MACH:
495 +               if (!usedefault) {
496 +                       if (token() != ID)
497 +                               continue;
498 +                       /*
499 +                        * Allow match either for user's host name.
500 +                        */
501 +                       if (strcasecmp(host, tokval) == 0)
502 +                               goto match;
503 +                       continue;
504 +               }
505 +       match:
506 +               while ((t = token()) && t != MACH && t != DEFAULT) switch(t) {
507
508 +               case LOGIN:
509 +                       if (token() && *aname == 0) {
510 +                               *aname = malloc((unsigned) strlen(tokval) + 1);
511 +                               (void) strcpy(*aname, tokval);
512 +                       }
513 +                       break;
514 +               case PASSWD:
515 +                       if (fstat(fileno(cfile), &stb) >= 0 &&
516 +                           (stb.st_mode & 077) != 0) {
517 +       fprintf(stderr, "Error - .netrc file not correct mode.\n");
518 +       fprintf(stderr, "Remove password or correct mode.\n");
519 +                               goto bad;
520 +                       }
521 +                       if (token() && *apass == 0) {
522 +                               *apass = malloc((unsigned) strlen(tokval) + 1);
523 +                               (void) strcpy(*apass, tokval);
524 +                       }
525 +                       break;
526 +               case ACCOUNT:
527 +                       break;
528
529 +               case MACDEF:
530 +                       goto done_close;
531 +                       break;
532 +               default:
533 +       fprintf(stderr, "Unknown .netrc keyword %s\n", tokval);
534 +                       break;
535 +               }
536 +               goto done;
537 +       }
538
539 + done_close:
540 +       (void) fclose(cfile);
541
542 + done:
543 +       if (!*aname) {
544 +               char tmp[80];
545 +               char *myname;
546
547 +               if ((myname = getlogin()) == NULL) {
548 +                       struct passwd *pp;
549
550 +                       if ((pp = getpwuid (getuid())) != NULL)
551 +                               myname = pp->pw_name;
552 +               }
553 +               printf("Name (%s:%s): ", host, myname);
554
555 +               (void) fgets(tmp, sizeof(tmp) - 1, stdin);
556 +               tmp[strlen(tmp) - 1] = '\0';
557 +               if (*tmp != '\0') {
558 +                       myname = tmp;
559 +               }
560
561 +               *aname = malloc((unsigned) strlen(myname) + 1);
562 +               strcpy (*aname, myname);
563 +       }
564
565 +       if (!*apass) {
566 +               char prompt[256];
567 +               char *mypass;
568
569 +               sprintf(prompt, "Password (%s:%s): ", host, *aname);
570 +               mypass = getpass (prompt);
571 +       
572 +               if (*mypass == '\0') {
573 +                       mypass = *aname;
574 +               }
575
576 +               *apass = malloc((unsigned) strlen(mypass) + 1);
577 +               strcpy (*apass, mypass);
578 +       }
579
580 +       return(0);
581 + bad:
582 +       (void) fclose(cfile);
583 +       return(-1);
584 + }
585
586 + static int
587 + token()
588 + {
589 +       char *cp;
590 +       int c;
591 +       struct toktab *t;
592
593 +       if (feof(cfile))
594 +               return (0);
595 +       while ((c = getc(cfile)) != EOF &&
596 +           (c == '\n' || c == '\t' || c == ' ' || c == ','))
597 +               continue;
598 +       if (c == EOF)
599 +               return (0);
600 +       cp = tokval;
601 +       if (c == '"') {
602 +               while ((c = getc(cfile)) != EOF && c != '"') {
603 +                       if (c == '\\')
604 +                               c = getc(cfile);
605 +                       *cp++ = c;
606 +               }
607 +       } else {
608 +               *cp++ = c;
609 +               while ((c = getc(cfile)) != EOF
610 +                   && c != '\n' && c != '\t' && c != ' ' && c != ',') {
611 +                       if (c == '\\')
612 +                               c = getc(cfile);
613 +                       *cp++ = c;
614 +               }
615 +       }
616 +       *cp = 0;
617 +       if (tokval[0] == 0)
618 +               return (0);
619 +       for (t = toktab; t->tokstr; t++)
620 +               if (!strcmp(t->tokstr, tokval))
621 +                       return (t->tval);
622 +       return (ID);
623 + }
624 diff -c mh/uip/replsbr.c:1.1.1.1 mh/uip/replsbr.c:1.2
625 *** mh/uip/replsbr.c:1.1.1.1    Tue Feb  9 07:43:44 1993
626 --- mh/uip/replsbr.c    Tue Feb  9 07:43:45 1993
627 ***************
628 *** 1,6 ****
629   /* replsbr.c - routines to help repl along... */
630   #ifndef       lint
631 ! static char ident[] = "@(#)$Id: replsbr.c,v 1.13 1992/12/15 00:20:22 jromine Exp $";
632   #endif        /* lint */
633   
634   #include "../h/mh.h"
635 --- 1,6 ----
636   /* replsbr.c - routines to help repl along... */
637   #ifndef       lint
638 ! static char ident[] = "@(#)$Id: replsbr.c,v 1.1.1.1 1993/01/30 04:41:38 jtc Exp $";
639   #endif        /* lint */
640   
641   #include "../h/mh.h"
642 ***************
643 *** 422,427 ****
644 --- 422,431 ----
645             (void) dup2 (fileno (out), fileno (stdout));
646             closefds (3);
647   
648 + #ifdef _FSTDIO
649 +           /* <sigh> the code assumed that rewind does this. */
650 +           lseek (fileno(stdin), 0, SEEK_SET);
651 + #endif
652             execlp (mhlproc, mhl, "-form", filter, "-noclear", NULLCP);
653             fprintf (stderr, "unable to exec ");
654             perror (mhlproc);
655 diff -c mh/uip/scansbr.c:1.1.1.1 mh/uip/scansbr.c:1.2
656 *** mh/uip/scansbr.c:1.1.1.1    Tue Feb  9 07:43:46 1993
657 --- mh/uip/scansbr.c    Tue Feb  9 07:43:46 1993
658 ***************
659 *** 1,6 ****
660   /* scansbr.c - routines to help scan along... */
661   #ifndef       lint
662 ! static char ident[] = "@(#)$Id: scansbr.c,v 1.13 1992/12/15 00:20:22 jromine Exp $";
663   #endif        /* lint */
664   
665   #include "../h/mh.h"
666 --- 1,6 ----
667   /* scansbr.c - routines to help scan along... */
668   #ifndef       lint
669 ! static char ident[] = "@(#)$Id: scansbr.c,v 1.1.1.1 1993/01/30 04:41:39 jtc Exp $";
670   #endif        /* lint */
671   
672   #include "../h/mh.h"
673 ***************
674 *** 13,18 ****
675 --- 13,22 ----
676   #include <sys/types.h>
677   #include <sys/stat.h>
678   
679 + #ifdef _FSTDIO
680 + #define       _ptr    _p              /* Gag */
681 + #define       _cnt    _w              /* Wretch */
682 + #endif
683   
684   #define MAXSCANL 256          /* longest possible scan line */
685   #define SBUFSIZ 512           /* buffer size for content part of header
686 diff -c /dev/null mh/zotnet/tws/dtimep.c-lexed:1.1
687 *** /dev/null   Tue Feb  9 07:43:58 1993
688 --- mh/zotnet/tws/dtimep.c-lexed        Tue Feb  9 07:43:58 1993
689 ***************
690 *** 0 ****
691 --- 1,1346 ----
692 + # include "stdio.h"
693 + static int start_cond = 0;
694 + #define BEGIN start_cond =
695 + struct yysvf { 
696 +       struct yywork *yystoff;
697 +       struct yysvf *yyother;
698 +       int *yystops;};
699 + # define Z 2
700 + #ifndef       lint
701 + static char ident[] = "@(#)$Id: dtimep.lex,v 1.1 1991/04/26 21:51:10 sww Exp $";
702 + #endif
703 + #include "tws.h"
704 + #include "../h/strings.h"
705 + #include <ctype.h>
706 + #include <sys/types.h>
707 + #if !defined(SYS5) && !defined(ZONEINFO)
708 + #include <sys/timeb.h>
709 + #endif /* !defined(SYS5) && !defined(ZONEINFO) */
710
711 + #ifdef SYS5
712 + extern long timezone;
713 + #endif SYS5
714
715 + /*
716 +  * Patchable flag that says how to interpret NN/NN/NN dates. When
717 +  * true, we do it European style: DD/MM/YY. When false, we do it
718 +  * American style: MM/DD/YY.  Of course, these are all non-RFC822
719 +  * compliant.
720 +  */
721 + int europeandate = 0;
722
723 + /*
724 +  * Table to convert month names to numeric month.  We use the
725 +  * fact that the low order 5 bits of the sum of the 2nd & 3rd
726 +  * characters of the name is a hash with no collisions for the 12
727 +  * valid month names.  (The mask to 5 bits maps any combination of
728 +  * upper and lower case into the same hash value).
729 +  */
730 + static        int month_map[] = {
731 +       0,
732 +       6,      /* 1 - Jul */
733 +       3,      /* 2 - Apr */
734 +       5,      /* 3 - Jun */
735 +       0,
736 +       10,     /* 5 - Nov */
737 +       0,
738 +       1,      /* 7 - Feb */
739 +       11,     /* 8 - Dec */
740 +       0,
741 +       0,
742 +       0,
743 +       0,
744 +       0,
745 +       0,
746 +       0,      /*15 - Jan */
747 +       0,
748 +       0,
749 +       0,
750 +       2,      /*19 - Mar */
751 +       0,
752 +       8,      /*21 - Sep */
753 +       0,
754 +       9,      /*23 - Oct */
755 +       0,
756 +       0,
757 +       4,      /*26 - May */
758 +       0,
759 +       7       /*28 - Aug */
760 + };
761 + /*
762 +  * Same trick for day-of-week using the hash function
763 +  *  (c1 & 7) + (c2 & 4)
764 +  */
765 + static        int day_map[] = {
766 +       0,
767 +       0,
768 +       0,
769 +       6,      /* 3 - Sat */
770 +       4,      /* 4 - Thu */
771 +       0,
772 +       5,      /* 6 - Fri */
773 +       0,      /* 7 - Sun */
774 +       2,      /* 8 - Tue */
775 +       1       /* 9 - Mon */,
776 +       0,
777 +       3       /*11 - Wed */
778 + };
779 + #define SETDAY        { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
780 +               tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP;\
781 +               cp += 2; }
782 + #define SETMONTH { tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
783 +                cp += 2;\
784 +                SKIPD;}
785 + #define CVT2  (i=(*cp++ - '0'),isdigit(*cp)? i*10 + (*cp++ - '0') : i)
786 + #define SKIPD { while ( !isdigit(*cp++) ) ;  --cp; }
787 + #define EXPZONE       { tw.tw_flags &= ~TW_SZONE; tw.tw_flags |= TW_SZEXP; }
788 + #define ZONE(x)       { tw.tw_zone=(x); EXPZONE; }
789 + #define ZONED(x) { ZONE(x); tw.tw_flags |= TW_DST; }
790 + #define       LC(c)   (isupper (c) ? tolower (c) : (c))
791
792 + #ifdef        DSTXXX
793 + #ifndef       BSD42
794 + #include <time.h>
795 + #else BSD42
796 + #include <sys/time.h>
797 + #endif        BSD42
798
799 + static        zonehack (tw)
800 + register struct tws *tw;
801 + {
802 +     register struct tm *tm;
803
804 +     if (twclock (tw) == -1L)
805 +       return;
806
807 +     tm = localtime (&tw -> tw_clock);
808 +     if (tm -> tm_isdst) {
809 +       tw -> tw_flags |= TW_DST;
810 +       tw -> tw_zone -= 60;
811 +     }
812 + }
813 + #endif        DSTXXX
814 + struct tws *dparsetime (str)
815 +       char *str;
816 + {
817 +       register int i;
818 +       static struct tws tw;
819 +       register char *cp;
820 +       register int gotdate = 0;
821 + #ifndef SYS5
822 + #ifdef ZONEINFO
823 +       struct tm      *tm;
824 +       time_t          clock;
825 + #else
826 +       struct timeb    tb;
827 + #endif        /* ZONEINFO */
828 + #endif        /* not SYS5 */
829
830 +       start_cond = 0;
831
832 +       /* Zero out the struct. */
833 +       bzero( (char *) &tw, sizeof tw);
834
835 +       /* Set default time zone. */
836 + #ifdef SYS5
837 +       tzset( );
838 +       tw.tw_zone = -(timezone / 60);
839 + #else
840 + #ifdef ZONEINFO
841 +       time (&clock);
842 +       tm = localtime(&clock);
843 +       tw.tw_zone = tm->tm_gmtoff / 60;
844 +       if (tm -> tm_isdst)                     /* if DST is in effect */
845 +               tw.tw_zone -= 60;               /* reset to normal offset */
846 + #else
847 +       ftime( &tb );
848 +       tw.tw_zone = -tb.timezone;
849 + #endif        /* ZONEINFO */
850 + #endif        /* SYS5 */
851
852 +       while (isspace(*str))
853 +               str++;
854 +       while ( 1 )
855 +               switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) {
856
857 +               case -1:
858 +                       if (!gotdate || tw.tw_year == 0)
859 +                               return 0;
860 +                       /* fall through */
861 +               case 0:
862 +                       return &tw;
863
864 + case 1:
865 +                       SETDAY;
866 + break;
867 + case 2:
868 +               {
869 +                                       cp++;
870 +                                       SETDAY;
871 +                                       }
872 + break;
873 + case 3:
874 +       {
875 +                                       if (europeandate) {
876 +                                               /* European: DD/MM/YY */
877 +                                               tw.tw_mday = CVT2;
878 +                                               cp++;
879 +                                               tw.tw_mon  = CVT2 - 1;
880 +                                       } else {
881 +                                               /* American: MM/DD/YY */
882 +                                               tw.tw_mon  = CVT2 - 1;
883 +                                               cp++;
884 +                                               tw.tw_mday = CVT2;
885 +                                       }
886 +                                       cp++;
887 +                                       for (i = 0; isdigit(*cp); )
888 +                                               i = i*10 + (*cp++ - '0');
889 +                                       tw.tw_year = i % 100;
890 +                                       }
891 + break;
892 + case 4:
893 + {
894 +                                       tw.tw_mday = CVT2;
895 +                                       while ( !isalpha(*cp++) )
896 +                                               ;
897 +                                       SETMONTH;
898 +                                       for (i = 0; isdigit(*cp); )
899 +                                               i = i*10 + (*cp++ - '0');
900 +                                       tw.tw_year = i % 100;
901 +                                       }
902 + break;
903 + case 5:
904 +       {
905 +                                       cp++;
906 +                                       SETMONTH;
907 +                                       tw.tw_mday = CVT2;
908 +                                       SKIPD;
909 +                                       for (i = 0; isdigit(*cp); )
910 +                                               i = i*10 + (*cp++ - '0');
911 +                                       tw.tw_year = i % 100;
912 +                                       }
913 + break;
914 + case 6:
915 +               {
916 +                                       cp++;
917 +                                       SETMONTH;
918 +                                       tw.tw_mday = CVT2;
919 +                                       }
920 + break;
921 + case 7:
922 +       {       /* hack: ctime w/o TZ */
923 +                                       tw.tw_hour = CVT2; cp++;
924 +                                       tw.tw_min  = CVT2; cp++;
925 +                                       tw.tw_sec  = CVT2;
926 +                                       while( !isdigit(*cp++) )
927 +                                               ;
928 +                                       cp++;
929 +                                       tw.tw_year = CVT2;
930 +                                       }
931 + break;
932 + case 8:
933 +                       {
934 +                                       tw.tw_hour = CVT2; cp++;
935 +                                       tw.tw_min  = CVT2; cp++;
936 +                                       tw.tw_sec  = CVT2;
937 +                                       BEGIN Z;
938 +                                       }
939 + break;
940 + case 9:
941 +                       {
942 +                                       tw.tw_hour = CVT2; cp++;
943 +                                       tw.tw_min = CVT2;
944 +                                       BEGIN Z;
945 +                                       }
946 + break;
947 + case 10:
948 +                       {
949 +                                       tw.tw_hour = CVT2; cp++;
950 +                                       if (tw.tw_hour == 12)
951 +                                               tw.tw_hour = 0;
952 +                                       tw.tw_min  = CVT2;
953 +                                       BEGIN Z;
954 +                                       }
955 + break;
956 + case 11:
957 +                       {
958 +                                       tw.tw_hour = CVT2; cp++;
959 +                                       if (tw.tw_hour != 12)
960 +                                               tw.tw_hour += 12;
961 +                                       tw.tw_min  = CVT2;
962 +                                       BEGIN Z;
963 +                                       }
964 + break;
965 + case 12:
966 +               {
967 +                                       tw.tw_hour = CVT2;
968 +                                       tw.tw_min  = CVT2;
969 +                                       tw.tw_sec  = CVT2;
970 +                                       BEGIN Z;
971 +                                       }
972 + break;
973 + case 13:
974 +                       {
975 +                                       /*
976 +                                        * Luckly, 4 digit times in the range
977 +                                        * 1960-1999 aren't legal as hour
978 +                                        * and minutes.
979 +                                        */
980 +                                       cp += 2;
981 +                                       tw.tw_year = CVT2;
982 +                                       }
983 + break;
984 + case 14:
985 +               {
986 +                                       if (tw.tw_hour) {
987 +                                           cp += 2;
988 +                                           tw.tw_year = CVT2;
989 +                                           tw.tw_zone = 0;
990 +                                       } else {
991 +                                           tw.tw_hour = CVT2;
992 +                                           tw.tw_min  = CVT2;
993 +                                           BEGIN Z;
994 +                                       }
995 +                                       }
996 + break;
997 + case 15:
998 +                       ZONE(0 * 60);
999 + break;
1000 + case 16:
1001 +                       ZONE(0 * 60);
1002 + break;
1003 + case 17:
1004 +                       ZONE(2 * 60);
1005 + break;
1006 + case 18:
1007 +                       ZONED(2 * 60);
1008 + break;
1009 + case 19:
1010 +                       ZONE(-5 * 60);
1011 + break;
1012 + case 20:
1013 +                       ZONED(-5 * 60);
1014 + break;
1015 + case 21:
1016 +                       ZONE(-6 * 60);
1017 + break;
1018 + case 22:
1019 +                       ZONED(-6 * 60);
1020 + break;
1021 + case 23:
1022 +                       ZONE(-7 * 60);
1023 + break;
1024 + case 24:
1025 +                       ZONED(-7 * 60);
1026 + break;
1027 + case 25:
1028 +                       ZONE(-8 * 60);
1029 + break;
1030 + case 26:
1031 +                       ZONED(-8 * 60);
1032 + break;
1033 + case 27:
1034 +                       ZONE(-(3 * 60 + 30));
1035 + break;
1036 + case 28:
1037 +                       ZONE(-4 * 60);
1038 + break;
1039 + case 29:
1040 +                       ZONED(-4 * 60);
1041 + break;
1042 + case 30:
1043 +                       ZONE(-9 * 60);
1044 + break;
1045 + case 31:
1046 +                       ZONED(-9 * 60);
1047 + break;
1048 + case 32:
1049 +                       ZONE(-10 * 60);
1050 + break;
1051 + case 33:
1052 +                       ZONED(-10 * 60);
1053 + break;
1054 + case 34:
1055 +                       ZONED(0 * 60);
1056 + break;
1057 + case 35:
1058 +                       {
1059 +                                       tw.tw_zone = 60 * (('a'-1) - LC(*cp));
1060 +                                       EXPZONE; 
1061 +                                       }
1062 + break;
1063 + case 36:
1064 +                       {
1065 +                                       tw.tw_zone = 60 * ('a' - LC(*cp));
1066 +                                       EXPZONE; 
1067 +                                       }
1068 + break;
1069 + case 37:
1070 +                       {
1071 +                                       tw.tw_zone = 60 * (LC(*cp) - 'm');
1072 +                                       EXPZONE; 
1073 +                                       }
1074 + break;
1075 + case 38:
1076 +               {
1077 +                                       cp++;
1078 +                                       tw.tw_zone = ((cp[0] * 10 + cp[1])
1079 +                                                    -('0' * 10   + '0'))*60
1080 +                                                   +((cp[2] * 10 + cp[3])
1081 +                                                    -('0' * 10   + '0'));
1082 +                                       EXPZONE;
1083 + #ifdef        DSTXXX
1084 +                                       zonehack (&tw);
1085 + #endif        DSTXXX
1086 +                                       cp += 4;
1087 +                                       }
1088 + break;
1089 + case 39:
1090 +               {
1091 +                                       cp++;
1092 +                                       tw.tw_zone = (('0' * 10   + '0')
1093 +                                                    -(cp[0] * 10 + cp[1]))*60
1094 +                                                   +(('0' * 10   + '0')
1095 +                                                    -(cp[2] * 10 + cp[3]));
1096 +                                       EXPZONE;
1097 + #ifdef        DSTXXX
1098 +                                       zonehack (&tw);
1099 + #endif        DSTXXX
1100 +                                       cp += 4;
1101 +                                       }
1102 + break;
1103 + case 40:
1104 +               {
1105 +                                       while( !isdigit(*cp++) )
1106 +                                               ;
1107 +                                       cp++;
1108 +                                       tw.tw_year = CVT2;
1109 +                                       }
1110 + break;
1111 + case 41:
1112 + case 42:
1113 + ;
1114 + break;
1115 + default: return(0);
1116 + } }
1117 + /* end of yylex */
1118 + int yyvstop[] ={
1119 + 0,
1120
1121 + 42,
1122 + 0,
1123
1124 + 41,
1125 + 0,
1126
1127 + 42,
1128 + 0,
1129
1130 + 35,
1131 + 0,
1132
1133 + 35,
1134 + 0,
1135
1136 + 35,
1137 + 0,
1138
1139 + 35,
1140 + 0,
1141
1142 + 35,
1143 + 0,
1144
1145 + 35,
1146 + 0,
1147
1148 + 35,
1149 + 0,
1150
1151 + 35,
1152 + 0,
1153
1154 + 35,
1155 + 0,
1156
1157 + 36,
1158 + 0,
1159
1160 + 36,
1161 + 0,
1162
1163 + 37,
1164 + 0,
1165
1166 + 37,
1167 + 0,
1168
1169 + 37,
1170 + 0,
1171
1172 + 37,
1173 + 0,
1174
1175 + 37,
1176 + 0,
1177
1178 + 37,
1179 + 0,
1180
1181 + 37,
1182 + 0,
1183
1184 + 37,
1185 + 0,
1186
1187 + 37,
1188 + 0,
1189
1190 + 15,
1191 + 0,
1192
1193 + 9,
1194 + 0,
1195
1196 + 1,
1197 + 0,
1198
1199 + 1,
1200 + 0,
1201
1202 + 1,
1203 + 0,
1204
1205 + 1,
1206 + 0,
1207
1208 + 1,
1209 + 0,
1210
1211 + 1,
1212 + 0,
1213
1214 + 1,
1215 + 0,
1216
1217 + 29,
1218 + 0,
1219
1220 + 28,
1221 + 0,
1222
1223 + 34,
1224 + 0,
1225
1226 + 22,
1227 + 0,
1228
1229 + 21,
1230 + 0,
1231
1232 + 20,
1233 + 0,
1234
1235 + 19,
1236 + 0,
1237
1238 + 16,
1239 + 0,
1240
1241 + 33,
1242 + 0,
1243
1244 + 32,
1245 + 0,
1246
1247 + 18,
1248 + 0,
1249
1250 + 17,
1251 + 0,
1252
1253 + 24,
1254 + 0,
1255
1256 + 23,
1257 + 0,
1258
1259 + 27,
1260 + 0,
1261
1262 + 26,
1263 + 0,
1264
1265 + 25,
1266 + 0,
1267
1268 + 31,
1269 + 0,
1270
1271 + 30,
1272 + 0,
1273
1274 + 14,
1275 + 0,
1276
1277 + 9,
1278 + 0,
1279
1280 + 9,
1281 + 0,
1282
1283 + 13,
1284 + 14,
1285 + 0,
1286
1287 + 1,
1288 + 0,
1289
1290 + 2,
1291 + 0,
1292
1293 + 14,
1294 + 0,
1295
1296 + 8,
1297 + 0,
1298
1299 + 10,
1300 + 0,
1301
1302 + 11,
1303 + 0,
1304
1305 + 4,
1306 + 0,
1307
1308 + 4,
1309 + 0,
1310
1311 + 13,
1312 + 14,
1313 + 0,
1314
1315 + 6,
1316 + 0,
1317
1318 + 40,
1319 + 0,
1320
1321 + 38,
1322 + 0,
1323
1324 + 39,
1325 + 0,
1326
1327 + 2,
1328 + 0,
1329
1330 + 3,
1331 + 0,
1332
1333 + 3,
1334 + 0,
1335
1336 + 12,
1337 + 0,
1338
1339 + 8,
1340 + 0,
1341
1342 + 8,
1343 + 0,
1344
1345 + 4,
1346 + 0,
1347
1348 + 4,
1349 + 0,
1350
1351 + 4,
1352 + 0,
1353
1354 + 6,
1355 + 0,
1356
1357 + 6,
1358 + 0,
1359
1360 + 1,
1361 + 0,
1362
1363 + 4,
1364 + 0,
1365
1366 + 5,
1367 + 0,
1368
1369 + 5,
1370 + 0,
1371
1372 + 5,
1373 + 0,
1374
1375 + 5,
1376 + 0,
1377
1378 + 7,
1379 + 0,
1380 + 0};
1381 + # define YYTYPE int
1382 + struct yywork { YYTYPE verify, advance; } yycrank[] ={
1383 + 0,0,  0,0,    0,0,    0,0,    
1384 + 0,0,  0,0,    0,0,    0,0,    
1385 + 0,0,  0,0,    1,5,    1,6,    
1386 + 5,5,  0,0,    0,0,    0,0,    
1387 + 0,0,  0,0,    0,0,    0,0,    
1388 + 0,0,  21,21,  0,0,    0,0,    
1389 + 0,0,  0,0,    0,0,    0,0,    
1390 + 0,0,  0,0,    0,0,    0,0,    
1391 + 0,0,  1,5,    0,0,    5,5,    
1392 + 3,21, 3,6,    0,0,    0,0,    
1393 + 0,0,  1,7,    0,0,    0,0,    
1394 + 21,21,        0,0,    0,0,    0,0,    
1395 + 0,0,  1,8,    1,9,    1,8,    
1396 + 1,10, 1,10,   1,10,   1,10,   
1397 + 1,10, 1,10,   1,10,   3,21,   
1398 + 9,63, 21,82,  22,83,  22,83,  
1399 + 0,0,  0,0,    0,0,    3,7,    
1400 + 0,0,  0,0,    3,22,   0,0,    
1401 + 3,23, 0,0,    0,0,    3,8,    
1402 + 3,9,  3,8,    3,10,   3,10,   
1403 + 3,10, 3,10,   3,10,   3,10,   
1404 + 3,10, 10,64,  10,64,  10,64,  
1405 + 10,64,        10,64,  10,64,  10,64,  
1406 + 10,64,        10,64,  10,64,  0,0,    
1407 + 0,0,  0,0,    1,11,   15,72,  
1408 + 0,0,  1,12,   14,70,  1,13,   
1409 + 12,67,        13,68,  17,75,  1,14,   
1410 + 19,79,        20,81,  1,15,   1,16,   
1411 + 1,17, 15,73,  11,65,  16,74,  
1412 + 1,18, 1,19,   13,69,  11,66,  
1413 + 1,20, 19,80,  14,71,  25,99,  
1414 + 3,24, 3,25,   3,26,   3,27,   
1415 + 3,28, 3,29,   3,30,   3,31,   
1416 + 3,32, 3,33,   3,34,   3,34,   
1417 + 3,35, 3,36,   3,37,   3,38,   
1418 + 3,39, 3,39,   3,40,   3,41,   
1419 + 3,42, 3,39,   3,43,   3,39,   
1420 + 3,44, 7,45,   8,50,   18,76,  
1421 + 23,84,        23,84,  30,104, 18,77,  
1422 + 7,46, 24,97,  42,114, 45,117, 
1423 + 26,100,       28,102, 7,47,   7,48,   
1424 + 31,105,       33,70,  7,49,   38,112, 
1425 + 33,107,       24,65,  46,118, 18,78,  
1426 + 24,98,        8,50,   24,66,  26,101, 
1427 + 28,103,       36,74,  49,123, 31,106, 
1428 + 56,129,       36,111, 38,113, 33,108, 
1429 + 47,119,       33,71,  8,51,   57,130, 
1430 + 8,52, 8,53,   8,53,   8,53,   
1431 + 8,53, 8,53,   8,53,   8,53,   
1432 + 8,53, 8,53,   8,53,   8,54,   
1433 + 44,115,       23,85,  23,86,  23,87,  
1434 + 47,120,       23,88,  35,72,  23,89,  
1435 + 23,90,        35,109, 23,91,  59,133, 
1436 + 50,50,        23,92,  23,93,  44,116, 
1437 + 23,94,        48,121, 55,127, 58,131, 
1438 + 35,73,        23,95,  60,134, 55,128, 
1439 + 35,110,       23,96,  61,135, 62,136, 
1440 + 65,138,       64,52,  48,122, 51,51,  
1441 + 66,139,       67,140, 68,141, 50,50,  
1442 + 69,142,       70,143, 8,55,   58,132, 
1443 + 64,54,        8,56,   71,144, 8,57,   
1444 + 71,145,       73,148, 72,146, 8,58,   
1445 + 50,51,        74,149, 8,59,   8,60,   
1446 + 8,61, 72,147, 51,51,  75,150, 
1447 + 8,62, 52,124, 52,124, 52,124, 
1448 + 52,124,       52,124, 52,124, 52,124, 
1449 + 52,124,       52,124, 52,124, 53,125, 
1450 + 53,125,       53,125, 53,125, 53,125, 
1451 + 53,125,       53,125, 53,125, 53,125, 
1452 + 53,125,       54,126, 54,126, 54,126, 
1453 + 54,126,       54,126, 54,126, 54,126, 
1454 + 54,126,       54,126, 54,126, 63,125, 
1455 + 63,125,       63,125, 63,125, 63,125, 
1456 + 63,125,       63,137, 63,137, 63,137, 
1457 + 63,137,       76,151, 77,152, 78,153, 
1458 + 50,55,        79,154, 80,155, 50,56,  
1459 + 81,156,       50,57,  82,157, 93,111, 
1460 + 85,97,        50,58,  91,107, 92,109, 
1461 + 50,59,        50,60,  50,61,  97,160, 
1462 + 98,161,       99,162, 50,62,  51,55,  
1463 + 100,163,      101,164,        51,56,  85,98,  
1464 + 51,57,        91,108, 92,110, 102,165,        
1465 + 51,58,        103,166,        104,167,        51,59,  
1466 + 51,60,        51,61,  105,168,        106,169,        
1467 + 107,170,      51,62,  83,158, 83,158, 
1468 + 83,158,       83,158, 83,158, 83,158, 
1469 + 83,158,       83,158, 83,158, 83,158, 
1470 + 84,159,       84,159, 84,159, 84,159, 
1471 + 84,159,       84,159, 84,159, 84,159, 
1472 + 84,159,       84,159, 108,171,        109,172,        
1473 + 110,173,      111,174,        112,175,        113,176,        
1474 + 115,177,      116,178,        117,179,        118,180,        
1475 + 119,181,      120,182,        121,183,        122,184,        
1476 + 123,185,      124,186,        124,187,        124,187,        
1477 + 124,187,      124,187,        124,187,        124,187,        
1478 + 124,187,      124,187,        124,187,        124,187,        
1479 + 125,188,      125,188,        125,188,        125,188,        
1480 + 125,188,      125,188,        125,188,        125,188,        
1481 + 125,188,      125,188,        126,189,        127,194,        
1482 + 128,195,      129,196,        130,197,        131,198,        
1483 + 132,199,      133,201,        132,200,        134,203,        
1484 + 135,204,      136,205,        138,207,        139,207,        
1485 + 133,202,      140,207,        143,214,        145,147,        
1486 + 148,216,      149,217,        150,218,        152,220,        
1487 + 153,221,      126,189,        137,206,        137,206,        
1488 + 137,206,      137,206,        137,206,        137,206,        
1489 + 137,206,      137,206,        137,206,        137,206,        
1490 + 141,207,      138,207,        139,207,        142,212,        
1491 + 140,207,      126,190,        126,190,        126,190,        
1492 + 126,190,      126,190,        126,190,        126,190,        
1493 + 126,190,      126,190,        126,190,        126,191,        
1494 + 144,207,      146,207,        147,207,        180,230,        
1495 + 154,212,      151,212,        156,212,        141,207,        
1496 + 155,212,      182,232,        142,212,        157,225,        
1497 + 157,225,      157,225,        157,225,        179,228,        
1498 + 181,228,      183,228,        187,186,        184,228,        
1499 + 190,191,      192,241,        142,212,        144,207,        
1500 + 146,207,      147,207,        185,228,        154,212,        
1501 + 151,212,      156,212,        193,242,        155,212,        
1502 + 198,250,      200,202,        203,252,        204,253,        
1503 + 205,254,      208,147,        126,192,        154,212,        
1504 + 151,212,      156,212,        209,257,        155,212,        
1505 + 210,258,      211,259,        206,255,        212,212,        
1506 + 213,260,      214,261,        215,147,        216,262,        
1507 + 217,263,      126,193,        218,264,        219,265,        
1508 + 220,266,      140,210,        138,208,        158,226,        
1509 + 158,226,      158,226,        158,226,        158,226,        
1510 + 158,226,      158,226,        158,226,        158,226,        
1511 + 158,226,      206,255,        212,212,        139,209,        
1512 + 221,267,      222,268,        179,229,        223,269,        
1513 + 224,270,      228,274,        142,213,        159,227,        
1514 + 159,227,      159,227,        159,227,        159,227,        
1515 + 159,227,      159,227,        159,227,        159,227,        
1516 + 159,227,      141,211,        183,233,        146,215,        
1517 + 181,231,      184,234,        188,238,        185,235,        
1518 + 186,236,      186,237,        186,236,        186,236,        
1519 + 186,236,      186,236,        186,236,        186,236,        
1520 + 186,236,      186,236,        189,189,        156,224,        
1521 + 194,202,      154,222,        229,275,        230,276,        
1522 + 144,147,      151,219,        155,223,        231,277,        
1523 + 232,278,      188,238,        191,240,        191,240,        
1524 + 191,240,      191,240,        191,240,        191,240,        
1525 + 191,240,      191,240,        191,240,        191,240,        
1526 + 233,279,      189,189,        234,280,        194,202,        
1527 + 235,281,      188,239,        188,239,        188,239,        
1528 + 188,239,      188,239,        188,239,        188,239,        
1529 + 188,239,      188,239,        188,239,        195,202,        
1530 + 194,243,      237,283,        238,238,        194,244,        
1531 + 194,245,      194,244,        194,244,        194,244,        
1532 + 194,244,      194,244,        194,244,        194,244,        
1533 + 194,244,      241,241,        242,242,        245,290,        
1534 + 246,202,      247,291,        248,292,        249,293,        
1535 + 250,294,      251,202,        195,202,        252,295,        
1536 + 253,296,      238,238,        254,297,        257,147,        
1537 + 196,202,      255,255,        258,301,        259,302,        
1538 + 260,303,      261,304,        263,305,        195,243,        
1539 + 241,241,      242,242,        195,244,        195,245,        
1540 + 195,244,      195,244,        195,244,        195,244,        
1541 + 195,244,      195,244,        195,244,        195,244,        
1542 + 264,306,      265,307,        189,192,        196,202,        
1543 + 255,255,      266,308,        197,202,        268,309,        
1544 + 269,310,      270,311,        275,312,        277,313,        
1545 + 194,246,      279,314,        280,315,        281,316,        
1546 + 196,243,      189,193,        282,282,        196,244,        
1547 + 196,245,      196,244,        196,244,        196,244,        
1548 + 196,244,      196,244,        196,244,        196,244,        
1549 + 196,244,      197,202,        289,318,        291,202,        
1550 + 284,284,      286,285,        199,202,        288,288,        
1551 + 292,319,      293,320,        294,321,        295,322,        
1552 + 296,323,      282,282,        197,243,        297,324,        
1553 + 283,282,      197,244,        197,245,        197,244,        
1554 + 197,244,      197,244,        197,244,        197,244,        
1555 + 197,244,      197,244,        197,244,        284,284,        
1556 + 286,285,      199,202,        288,288,        195,247,        
1557 + 201,202,      300,299,        298,298,        301,326,        
1558 + 299,325,      302,327,        303,212,        283,282,        
1559 + 304,147,      305,328,        199,243,        306,147,        
1560 + 196,248,      199,244,        199,245,        199,244,        
1561 + 199,244,      199,244,        199,244,        199,244,        
1562 + 199,244,      199,244,        199,244,        201,202,        
1563 + 283,236,      298,298,        202,202,        299,325,        
1564 + 307,329,      308,330,        309,331,        311,332,        
1565 + 312,228,      313,333,        314,334,        285,285,        
1566 + 201,243,      207,207,        316,335,        201,244,        
1567 + 201,245,      201,244,        201,244,        201,244,        
1568 + 201,244,      201,244,        201,244,        201,244,        
1569 + 201,244,      202,202,        317,336,        197,249,        
1570 + 319,338,      320,339,        321,202,        322,340,        
1571 + 323,202,      324,341,        285,285,        330,344,        
1572 + 207,207,      332,345,        202,243,        335,346,        
1573 + 318,337,      202,244,        202,245,        202,244,        
1574 + 202,244,      202,244,        202,244,        202,244,        
1575 + 202,244,      202,244,        202,244,        285,317,        
1576 + 207,256,      207,256,        207,256,        207,256,        
1577 + 207,256,      207,256,        207,256,        207,256,        
1578 + 207,256,      207,256,        199,202,        318,337,        
1579 + 341,348,      343,350,        201,251,        225,271,        
1580 + 225,271,      225,271,        225,271,        225,271,        
1581 + 225,271,      225,271,        225,271,        225,271,        
1582 + 225,271,      226,272,        226,272,        226,272,        
1583 + 226,272,      226,272,        226,272,        226,272,        
1584 + 226,272,      226,272,        226,272,        227,273,        
1585 + 227,273,      227,273,        227,273,        227,273,        
1586 + 227,273,      227,273,        227,273,        227,273,        
1587 + 227,273,      236,282,        236,282,        236,282,        
1588 + 236,282,      236,282,        236,282,        236,282,        
1589 + 236,282,      236,282,        236,282,        239,284,        
1590 + 239,284,      239,284,        239,284,        239,284,        
1591 + 239,284,      239,284,        239,284,        239,284,        
1592 + 239,284,      240,285,        349,349,        287,287,        
1593 + 336,347,      336,347,        336,347,        336,347,        
1594 + 0,0,  0,0,    0,0,    243,243,        
1595 + 347,351,      347,351,        347,351,        347,351,        
1596 + 347,351,      347,351,        347,351,        347,351,        
1597 + 347,351,      347,351,        0,0,    0,0,    
1598 + 240,285,      349,349,        287,287,        0,0,    
1599 + 0,0,  0,0,    0,0,    0,0,    
1600 + 0,0,  0,0,    243,243,        0,0,    
1601 + 0,0,  244,287,        287,288,        0,0,    
1602 + 240,286,      240,286,        240,286,        240,286,        
1603 + 240,286,      240,286,        240,286,        240,286,        
1604 + 240,286,      240,286,        243,244,        243,245,        
1605 + 243,244,      243,244,        243,244,        243,244,        
1606 + 243,244,      243,244,        243,244,        243,244,        
1607 + 244,287,      0,0,    0,0,    256,298,        
1608 + 0,0,  0,0,    0,0,    0,0,    
1609 + 0,0,  0,0,    0,0,    0,0,    
1610 + 244,288,      0,0,    325,325,        0,0,    
1611 + 244,287,      244,287,        244,287,        244,287,        
1612 + 244,287,      244,287,        244,287,        244,287,        
1613 + 244,287,      244,287,        256,298,        0,0,    
1614 + 0,0,  290,287,        0,0,    287,289,        
1615 + 0,0,  0,0,    0,0,    0,0,    
1616 + 0,0,  325,325,        256,299,        0,0,    
1617 + 342,349,      0,0,    256,300,        256,300,        
1618 + 256,300,      256,300,        256,300,        256,300,        
1619 + 256,300,      256,300,        256,300,        256,300,        
1620 + 290,287,      325,342,        325,343,        325,342,        
1621 + 325,342,      325,342,        325,342,        325,342,        
1622 + 325,342,      325,342,        325,342,        342,349,        
1623 + 290,288,      244,289,        350,349,        0,0,    
1624 + 0,0,  290,244,        0,0,    0,0,    
1625 + 0,0,  0,0,    0,0,    0,0,    
1626 + 0,0,  0,0,    0,0,    342,349,        
1627 + 342,349,      342,349,        342,349,        342,349,        
1628 + 342,349,      342,349,        342,349,        342,349,        
1629 + 342,349,      350,349,        0,0,    0,0,    
1630 + 0,0,  0,0,    0,0,    0,0,    
1631 + 0,0,  0,0,    0,0,    0,0,    
1632 + 0,0,  0,0,    0,0,    0,0,    
1633 + 0,0,  0,0,    350,342,        0,0,    
1634 + 0,0,  0,0,    0,0,    0,0,    
1635 + 0,0,  0,0,    0,0,    0,0,    
1636 + 0,0,  290,289,        0,0,    0,0,    
1637 + 0,0};
1638 + struct yysvf yysvec[] ={
1639 + 0,    0,      0,
1640 + yycrank+1,    0,              0,      
1641 + yycrank+0,    yysvec+1,       0,      
1642 + yycrank+27,   0,              0,      
1643 + yycrank+0,    yysvec+3,       0,      
1644 + yycrank+3,    0,              yyvstop+1,
1645 + yycrank+0,    0,              yyvstop+3,
1646 + yycrank+47,   0,              0,      
1647 + yycrank+141,  0,              0,      
1648 + yycrank+3,    yysvec+8,       0,      
1649 + yycrank+37,   yysvec+8,       0,      
1650 + yycrank+2,    0,              0,      
1651 + yycrank+3,    0,              0,      
1652 + yycrank+4,    0,              0,      
1653 + yycrank+5,    0,              0,      
1654 + yycrank+2,    0,              0,      
1655 + yycrank+4,    0,              0,      
1656 + yycrank+7,    0,              0,      
1657 + yycrank+54,   0,              0,      
1658 + yycrank+4,    0,              0,      
1659 + yycrank+8,    0,              0,      
1660 + yycrank+12,   0,              yyvstop+5,
1661 + yycrank+14,   0,              0,      
1662 + yycrank+104,  0,              0,      
1663 + yycrank+57,   0,              yyvstop+7,
1664 + yycrank+8,    0,              yyvstop+9,
1665 + yycrank+60,   0,              yyvstop+11,
1666 + yycrank+0,    yysvec+12,      yyvstop+13,
1667 + yycrank+61,   0,              yyvstop+15,
1668 + yycrank+0,    yysvec+13,      yyvstop+17,
1669 + yycrank+45,   0,              yyvstop+19,
1670 + yycrank+64,   0,              yyvstop+21,
1671 + yycrank+0,    0,              yyvstop+23,
1672 + yycrank+68,   0,              0,      
1673 + yycrank+0,    0,              yyvstop+25,
1674 + yycrank+109,  0,              yyvstop+27,
1675 + yycrank+66,   0,              yyvstop+29,
1676 + yycrank+0,    yysvec+17,      yyvstop+31,
1677 + yycrank+67,   0,              yyvstop+33,
1678 + yycrank+0,    0,              yyvstop+35,
1679 + yycrank+0,    yysvec+18,      yyvstop+37,
1680 + yycrank+0,    yysvec+19,      yyvstop+39,
1681 + yycrank+42,   0,              yyvstop+41,
1682 + yycrank+0,    yysvec+20,      yyvstop+43,
1683 + yycrank+100,  0,              yyvstop+45,
1684 + yycrank+45,   0,              0,      
1685 + yycrank+59,   0,              0,      
1686 + yycrank+87,   0,              0,      
1687 + yycrank+113,  0,              0,      
1688 + yycrank+77,   0,              0,      
1689 + yycrank+203,  0,              0,      
1690 + yycrank+222,  0,              0,      
1691 + yycrank+209,  0,              0,      
1692 + yycrank+219,  yysvec+8,       0,      
1693 + yycrank+229,  0,              0,      
1694 + yycrank+106,  0,              0,      
1695 + yycrank+79,   0,              0,      
1696 + yycrank+86,   0,              0,      
1697 + yycrank+122,  0,              0,      
1698 + yycrank+114,  0,              0,      
1699 + yycrank+111,  0,              0,      
1700 + yycrank+127,  0,              0,      
1701 + yycrank+126,  0,              0,      
1702 + yycrank+239,  yysvec+8,       0,      
1703 + yycrank+182,  yysvec+50,      0,      
1704 + yycrank+114,  0,              0,      
1705 + yycrank+129,  0,              0,      
1706 + yycrank+134,  0,              0,      
1707 + yycrank+136,  0,              0,      
1708 + yycrank+131,  0,              0,      
1709 + yycrank+127,  0,              0,      
1710 + yycrank+134,  0,              0,      
1711 + yycrank+132,  0,              0,      
1712 + yycrank+135,  0,              0,      
1713 + yycrank+131,  0,              0,      
1714 + yycrank+139,  0,              0,      
1715 + yycrank+181,  0,              0,      
1716 + yycrank+186,  0,              0,      
1717 + yycrank+189,  0,              0,      
1718 + yycrank+184,  0,              0,      
1719 + yycrank+201,  0,              0,      
1720 + yycrank+204,  0,              0,      
1721 + yycrank+249,  0,              0,      
1722 + yycrank+290,  0,              0,      
1723 + yycrank+300,  0,              0,      
1724 + yycrank+208,  0,              0,      
1725 + yycrank+0,    yysvec+25,      0,      
1726 + yycrank+0,    yysvec+26,      0,      
1727 + yycrank+0,    yysvec+28,      0,      
1728 + yycrank+0,    yysvec+30,      0,      
1729 + yycrank+0,    yysvec+31,      0,      
1730 + yycrank+210,  0,              0,      
1731 + yycrank+211,  0,              0,      
1732 + yycrank+192,  0,              0,      
1733 + yycrank+0,    yysvec+38,      0,      
1734 + yycrank+0,    yysvec+42,      0,      
1735 + yycrank+0,    yysvec+44,      0,      
1736 + yycrank+199,  0,              0,      
1737 + yycrank+200,  0,              0,      
1738 + yycrank+201,  0,              0,      
1739 + yycrank+204,  0,              0,      
1740 + yycrank+205,  0,              0,      
1741 + yycrank+211,  0,              0,      
1742 + yycrank+213,  0,              0,      
1743 + yycrank+214,  0,              0,      
1744 + yycrank+218,  0,              0,      
1745 + yycrank+219,  0,              0,      
1746 + yycrank+220,  0,              0,      
1747 + yycrank+242,  0,              0,      
1748 + yycrank+243,  0,              0,      
1749 + yycrank+244,  0,              0,      
1750 + yycrank+245,  0,              0,      
1751 + yycrank+246,  0,              0,      
1752 + yycrank+247,  0,              0,      
1753 + yycrank+0,    0,              yyvstop+47,
1754 + yycrank+248,  0,              0,      
1755 + yycrank+249,  0,              0,      
1756 + yycrank+261,  0,              0,      
1757 + yycrank+257,  0,              0,      
1758 + yycrank+252,  0,              0,      
1759 + yycrank+259,  0,              0,      
1760 + yycrank+253,  0,              0,      
1761 + yycrank+270,  0,              0,      
1762 + yycrank+272,  0,              0,      
1763 + yycrank+326,  0,              0,      
1764 + yycrank+336,  0,              0,      
1765 + yycrank+385,  0,              yyvstop+49,
1766 + yycrank+281,  0,              0,      
1767 + yycrank+293,  0,              0,      
1768 + yycrank+298,  0,              0,      
1769 + yycrank+300,  0,              0,      
1770 + yycrank+289,  0,              0,      
1771 + yycrank+292,  0,              0,      
1772 + yycrank+287,  0,              0,      
1773 + yycrank+285,  0,              0,      
1774 + yycrank+288,  0,              0,      
1775 + yycrank+293,  0,              0,      
1776 + yycrank+370,  0,              0,      
1777 + yycrank+397,  0,              0,      
1778 + yycrank+398,  0,              0,      
1779 + yycrank+400,  0,              0,      
1780 + yycrank+419,  0,              0,      
1781 + yycrank+422,  0,              yyvstop+51,
1782 + yycrank+293,  yysvec+139,     0,      
1783 + yycrank+435,  0,              0,      
1784 + yycrank+310,  yysvec+140,     0,      
1785 + yycrank+436,  0,              0,      
1786 + yycrank+437,  0,              0,      
1787 + yycrank+312,  yysvec+142,     yyvstop+53,
1788 + yycrank+312,  yysvec+140,     0,      
1789 + yycrank+303,  yysvec+147,     0,      
1790 + yycrank+440,  0,              yyvstop+55,
1791 + yycrank+299,  yysvec+147,     0,      
1792 + yycrank+316,  yysvec+142,     yyvstop+57,
1793 + yycrank+439,  0,              yyvstop+59,
1794 + yycrank+443,  0,              yyvstop+61,
1795 + yycrank+441,  0,              yyvstop+63,
1796 + yycrank+401,  0,              0,      
1797 + yycrank+455,  0,              0,      
1798 + yycrank+475,  0,              0,      
1799 + yycrank+0,    0,              yyvstop+65,
1800 + yycrank+0,    0,              yyvstop+67,
1801 + yycrank+0,    0,              yyvstop+69,
1802 + yycrank+0,    0,              yyvstop+71,
1803 + yycrank+0,    0,              yyvstop+73,
1804 + yycrank+0,    0,              yyvstop+75,
1805 + yycrank+0,    0,              yyvstop+77,
1806 + yycrank+0,    0,              yyvstop+79,
1807 + yycrank+0,    0,              yyvstop+81,
1808 + yycrank+0,    0,              yyvstop+83,
1809 + yycrank+0,    0,              yyvstop+85,
1810 + yycrank+0,    0,              yyvstop+87,
1811 + yycrank+0,    0,              yyvstop+89,
1812 + yycrank+0,    0,              yyvstop+91,
1813 + yycrank+0,    0,              yyvstop+93,
1814 + yycrank+0,    0,              yyvstop+95,
1815 + yycrank+0,    0,              yyvstop+97,
1816 + yycrank+0,    0,              yyvstop+99,
1817 + yycrank+0,    0,              yyvstop+101,
1818 + yycrank+418,  0,              0,      
1819 + yycrank+347,  yysvec+179,     0,      
1820 + yycrank+419,  0,              0,      
1821 + yycrank+353,  yysvec+179,     0,      
1822 + yycrank+420,  0,              0,      
1823 + yycrank+422,  0,              0,      
1824 + yycrank+429,  0,              0,      
1825 + yycrank+492,  0,              0,      
1826 + yycrank+415,  0,              0,      
1827 + yycrank+529,  0,              yyvstop+103,
1828 + yycrank+541,  0,              yyvstop+105,
1829 + yycrank+406,  yysvec+189,     yyvstop+107,
1830 + yycrank+514,  0,              0,      
1831 + yycrank+356,  0,              0,      
1832 + yycrank+365,  0,              0,      
1833 + yycrank+543,  0,              0,      
1834 + yycrank+578,  0,              0,      
1835 + yycrank+607,  0,              0,      
1836 + yycrank+633,  0,              0,      
1837 + yycrank+359,  yysvec+195,     0,      
1838 + yycrank+661,  0,              0,      
1839 + yycrank+376,  yysvec+196,     0,      
1840 + yycrank+687,  0,              0,      
1841 + yycrank+713,  0,              0,      
1842 + yycrank+377,  yysvec+196,     0,      
1843 + yycrank+368,  yysvec+202,     0,      
1844 + yycrank+364,  yysvec+202,     0,      
1845 + yycrank+481,  yysvec+188,     yyvstop+109,
1846 + yycrank+724,  0,              0,      
1847 + yycrank+373,  0,              0,      
1848 + yycrank+371,  0,              0,      
1849 + yycrank+379,  0,              0,      
1850 + yycrank+372,  0,              0,      
1851 + yycrank+482,  0,              yyvstop+112,
1852 + yycrank+395,  0,              0,      
1853 + yycrank+396,  0,              0,      
1854 + yycrank+390,  0,              0,      
1855 + yycrank+398,  0,              0,      
1856 + yycrank+387,  0,              0,      
1857 + yycrank+400,  0,              0,      
1858 + yycrank+385,  0,              0,      
1859 + yycrank+399,  0,              0,      
1860 + yycrank+419,  0,              0,      
1861 + yycrank+402,  0,              0,      
1862 + yycrank+419,  0,              0,      
1863 + yycrank+419,  0,              0,      
1864 + yycrank+739,  0,              0,      
1865 + yycrank+749,  0,              0,      
1866 + yycrank+759,  0,              0,      
1867 + yycrank+477,  0,              yyvstop+114,
1868 + yycrank+457,  0,              0,      
1869 + yycrank+458,  0,              0,      
1870 + yycrank+445,  0,              0,      
1871 + yycrank+463,  0,              0,      
1872 + yycrank+457,  0,              0,      
1873 + yycrank+474,  0,              0,      
1874 + yycrank+475,  0,              0,      
1875 + yycrank+769,  0,              0,      
1876 + yycrank+532,  yysvec+236,     0,      
1877 + yycrank+581,  0,              yyvstop+116,
1878 + yycrank+779,  0,              0,      
1879 + yycrank+828,  0,              yyvstop+118,
1880 + yycrank+592,  0,              yyvstop+120,
1881 + yycrank+593,  0,              yyvstop+122,
1882 + yycrank+838,  0,              0,      
1883 + yycrank+864,  0,              yyvstop+124,
1884 + yycrank+546,  yysvec+244,     yyvstop+126,
1885 + yycrank+496,  0,              0,      
1886 + yycrank+490,  0,              0,      
1887 + yycrank+497,  0,              0,      
1888 + yycrank+490,  0,              0,      
1889 + yycrank+511,  0,              0,      
1890 + yycrank+505,  0,              0,      
1891 + yycrank+502,  0,              0,      
1892 + yycrank+514,  0,              0,      
1893 + yycrank+513,  0,              0,      
1894 + yycrank+608,  0,              yyvstop+128,
1895 + yycrank+890,  0,              yyvstop+131,
1896 + yycrank+499,  0,              0,      
1897 + yycrank+520,  0,              0,      
1898 + yycrank+522,  0,              0,      
1899 + yycrank+499,  0,              0,      
1900 + yycrank+507,  0,              0,      
1901 + yycrank+0,    yysvec+260,     0,      
1902 + yycrank+524,  0,              0,      
1903 + yycrank+535,  0,              0,      
1904 + yycrank+537,  0,              0,      
1905 + yycrank+532,  0,              0,      
1906 + yycrank+0,    yysvec+260,     0,      
1907 + yycrank+543,  0,              0,      
1908 + yycrank+547,  0,              0,      
1909 + yycrank+530,  0,              0,      
1910 + yycrank+0,    0,              yyvstop+133,
1911 + yycrank+0,    0,              yyvstop+135,
1912 + yycrank+0,    0,              yyvstop+137,
1913 + yycrank+0,    0,              yyvstop+139,
1914 + yycrank+525,  0,              0,      
1915 + yycrank+0,    yysvec+275,     0,      
1916 + yycrank+547,  0,              0,      
1917 + yycrank+0,    yysvec+275,     0,      
1918 + yycrank+549,  0,              0,      
1919 + yycrank+553,  0,              0,      
1920 + yycrank+536,  0,              0,      
1921 + yycrank+645,  0,              yyvstop+141,
1922 + yycrank+671,  yysvec+186,     yyvstop+143,
1923 + yycrank+659,  0,              yyvstop+145,
1924 + yycrank+722,  0,              yyvstop+147,
1925 + yycrank+660,  0,              yyvstop+149,
1926 + yycrank+830,  0,              yyvstop+151,
1927 + yycrank+662,  0,              yyvstop+153,
1928 + yycrank+550,  0,              0,      
1929 + yycrank+916,  yysvec+243,     yyvstop+155,
1930 + yycrank+551,  0,              0,      
1931 + yycrank+574,  0,              0,      
1932 + yycrank+576,  0,              0,      
1933 + yycrank+560,  0,              0,      
1934 + yycrank+577,  0,              0,      
1935 + yycrank+575,  0,              0,      
1936 + yycrank+570,  0,              0,      
1937 + yycrank+689,  0,              yyvstop+157,
1938 + yycrank+691,  0,              0,      
1939 + yycrank+653,  yysvec+298,     yyvstop+159,
1940 + yycrank+598,  0,              0,      
1941 + yycrank+587,  0,              0,      
1942 + yycrank+658,  yysvec+212,     yyvstop+161,
1943 + yycrank+583,  0,              0,      
1944 + yycrank+604,  0,              0,      
1945 + yycrank+593,  0,              0,      
1946 + yycrank+627,  0,              0,      
1947 + yycrank+627,  0,              0,      
1948 + yycrank+629,  0,              0,      
1949 + yycrank+0,    yysvec+260,     0,      
1950 + yycrank+627,  0,              0,      
1951 + yycrank+687,  0,              0,      
1952 + yycrank+632,  0,              0,      
1953 + yycrank+633,  0,              0,      
1954 + yycrank+0,    yysvec+275,     0,      
1955 + yycrank+634,  0,              0,      
1956 + yycrank+689,  0,              0,      
1957 + yycrank+751,  0,              0,      
1958 + yycrank+647,  0,              0,      
1959 + yycrank+635,  0,              0,      
1960 + yycrank+629,  0,              0,      
1961 + yycrank+650,  0,              0,      
1962 + yycrank+638,  0,              0,      
1963 + yycrank+655,  0,              0,      
1964 + yycrank+901,  0,              0,      
1965 + yycrank+0,    yysvec+306,     0,      
1966 + yycrank+0,    yysvec+304,     0,      
1967 + yycrank+0,    yysvec+306,     0,      
1968 + yycrank+0,    yysvec+260,     0,      
1969 + yycrank+654,  0,              0,      
1970 + yycrank+0,    yysvec+260,     0,      
1971 + yycrank+660,  0,              0,      
1972 + yycrank+0,    yysvec+275,     0,      
1973 + yycrank+0,    yysvec+275,     0,      
1974 + yycrank+662,  0,              0,      
1975 + yycrank+786,  0,              0,      
1976 + yycrank+0,    yysvec+318,     yyvstop+163,
1977 + yycrank+0,    yysvec+323,     0,      
1978 + yycrank+0,    yysvec+321,     0,      
1979 + yycrank+0,    yysvec+323,     0,      
1980 + yycrank+683,  0,              0,      
1981 + yycrank+927,  0,              yyvstop+165,
1982 + yycrank+728,  yysvec+342,     yyvstop+167,
1983 + yycrank+0,    yysvec+306,     0,      
1984 + yycrank+0,    yysvec+260,     0,      
1985 + yycrank+0,    yysvec+275,     0,      
1986 + yycrank+800,  0,              0,      
1987 + yycrank+0,    yysvec+323,     0,      
1988 + yycrank+829,  0,              yyvstop+169,
1989 + yycrank+953,  yysvec+325,     yyvstop+171,
1990 + yycrank+0,    0,              yyvstop+173,
1991 + 0,    0,      0};
1992 + struct yywork *yytop = yycrank+1013;
1993 + struct yysvf *yybgin = yysvec+1;
1994 + char yymatch[] ={
1995 + 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1996 + 01  ,011 ,01  ,01  ,01  ,01  ,01  ,01  ,
1997 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1998 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
1999 + 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2000 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2001 + '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'6' ,'6' ,
2002 + '6' ,'6' ,01  ,01  ,01  ,01  ,01  ,01  ,
2003 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2004 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2005 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2006 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2007 + 01  ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
2008 + 'a' ,'a' ,01  ,'k' ,'k' ,'k' ,'n' ,'n' ,
2009 + 'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,
2010 + 'n' ,'n' ,01  ,01  ,01  ,01  ,01  ,01  ,
2011 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2012 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2013 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2014 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2015 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2016 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2017 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2018 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2019 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2020 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2021 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2022 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2023 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2024 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2025 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2026 + 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
2027 + 0};
2028 + char yyextra[] ={
2029 + 0,0,0,0,0,0,0,0,
2030 + 0,0,0,0,0,0,0,0,
2031 + 0,0,0,0,0,0,0,0,
2032 + 0,0,0,0,0,0,0,0,
2033 + 0,0,0,0,0,0,0,0,
2034 + 0,0,0,0,0,0,0,0,
2035 + 0};
2036 + /*    ncform  4.1     83/08/11        */
2037
2038 diff -c mh/zotnet/tws/dtimep.lex:1.1.1.1 mh/zotnet/tws/dtimep.lex:1.2
2039 *** mh/zotnet/tws/dtimep.lex:1.1.1.1    Tue Feb  9 07:44:02 1993
2040 --- mh/zotnet/tws/dtimep.lex    Tue Feb  9 07:44:02 1993
2041 ***************
2042 *** 34,53 ****
2043   d     [0-9]
2044   %{
2045   #ifndef       lint
2046 ! static char ident[] = "@(#)$Id: dtimep.lex,v 2.14 1992/12/15 00:20:22 jromine Exp $";
2047   #endif
2048   #include "tws.h"
2049   #include "../h/strings.h"
2050   #include <ctype.h>
2051   #include <sys/types.h>
2052 ! #ifndef SYS5
2053   #include <sys/timeb.h>
2054 ! #endif /* not SYS5 */
2055   
2056   #ifdef SYS5
2057 - extern int  daylight;
2058   extern long timezone;
2059 - extern char *tzname[];
2060   #endif /* SYS5 */
2061   
2062   /*
2063 --- 34,51 ----
2064   d     [0-9]
2065   %{
2066   #ifndef       lint
2067 ! static char ident[] = "@(#)$Id: dtimep.lex,v 1.1.1.1 1993/01/30 04:41:48 jtc Exp $";
2068   #endif
2069   #include "tws.h"
2070   #include "../h/strings.h"
2071   #include <ctype.h>
2072   #include <sys/types.h>
2073 ! #if !defined(SYS5) && !defined(ZONEINFO)
2074   #include <sys/timeb.h>
2075 ! #endif /* !defined(SYS5) && !defined(ZONEINFO) */
2076   
2077   #ifdef SYS5
2078   extern long timezone;
2079   #endif /* SYS5 */
2080   
2081   /*
2082 ***************
2083 *** 168,175 ****
2084         register char *cp;
2085         register int gotdate = 0;
2086   #ifndef SYS5
2087         struct timeb    tb;
2088 ! #endif /* not SYS5 */
2089         long tclock;
2090   
2091         start_cond = 0;
2092 --- 166,178 ----
2093         register char *cp;
2094         register int gotdate = 0;
2095   #ifndef SYS5
2096 + #ifdef ZONEINFO
2097 +       struct tm      *tm;
2098 +       time_t          clock;
2099 + #else
2100         struct timeb    tb;
2101 ! #endif        /* ZONEINFO */
2102 ! #endif        /* not SYS5 */
2103         long tclock;
2104   
2105         start_cond = 0;
2106 ***************
2107 *** 178,190 ****
2108         bzero( (char *) &tw, sizeof tw);
2109   
2110         /* Set default time zone. */
2111 ! #ifndef SYS5
2112 !       ftime( &tb );
2113 !       tw.tw_zone = -tb.timezone;
2114 ! #else /* SYS5 */
2115         tzset( );
2116         tw.tw_zone = -(timezone / 60);
2117 ! #endif /* SYS5 */
2118   
2119         while (isspace(*str))
2120                 str++;
2121 --- 181,202 ----
2122         bzero( (char *) &tw, sizeof tw);
2123   
2124         /* Set default time zone. */
2125 ! #ifdef SYS5
2126         tzset( );
2127         tw.tw_zone = -(timezone / 60);
2128 ! #else
2129 ! #ifdef ZONEINFO
2130 !       time (&clock);
2131 !       tm = localtime(&clock);
2132 !       tw.tw_zone = tm->tm_gmtoff / 60;
2133 !       if (tm -> tm_isdst)                     /* if DST is in effect */
2134 !               tw.tw_zone -= 60;               /* reset to normal offset */
2135 ! #else
2136 !       ftime( &tb );
2137 !       tw.tw_zone = -tb.timezone;
2138 ! #endif        /* ZONEINFO */
2139 ! #endif        /* SYS5 */
2140
2141   
2142         while (isspace(*str))
2143                 str++;
2144
2145 ------- =_aaaaaaaaaa0--
2146
2147
2148