Diffs for MicroEMACS and MSC

Diffs for MicroEMACS and MSC

Post by Daniel A. Nort » Sun, 02 Dec 1990 22:33:00



Archive-name: uemacs/msc-diffs

Here are the diffs that I mentioned for MSC and MicroEMACS.
If you have MSC 5.0, you can also use the Makefile that is
in this archive.  Make sure that you do not select intrinsic
function generation with MSC 5.0.

The file patch.msc contains context diffs suitable for input
to patch, with the exception that I have converted spaces to
tabs in the original where useful to reduce the size of this
shar.
--
Daniel A. Norton                                nort...@mosys.UUCP
c/o Momentum Systems Corporation             ...uunet!mosys!nortond
2 Keystone Avenue
Cherry Hill, NJ   08003                         609/424-0734
--------------------------Cut Here--------------------------
:
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#       Changes.msc
#       Makefile.msc
#       patch.msc
#
# This archive created: Sat Dec 19 15:24:22 1987
#
if test -f 'Changes.msc'
then
echo shar: will not over-write existing "'Changes.msc'"
else
echo extracting "'Changes.msc'"
sed 's/^X//' > Changes.msc <<'SHAR_EOF'
X       001 - Changed routines whose names conflict with standard
Xlibrary routines.  Apparently, the authors did not like the way
Xthe standard routines worked and created new ones with the same
Xnames.  This is a pet peeve of mine, since someone looking
Xthrough such code does not really know right-away that he is
Xlooking at a bastardized version of the function.  Functions
Xaffected are:
X               Old Name        New Name
X                 ltoa          fmtlong
X                 itoa          itods
X                 strncpy       xstrncpy
X                 atoi          dstoi
X
XThe diffs file is fairly large with these changes.  You may
Xprefer to do global substitutes on the original to the new names.
X
X
X       002 - For some odd reason, the "malloc" function is
Xdeclared throughout the sources.  Since it is already defined in
Xedef.h, I have removed the duplicate declarations.  Besides, the
Xredefinitions conflict with the definitions provided by the
Xstandard include file in MSC.
X
X
X       003 - For the MSC version, I have changed edef.h to
Xinclude the standard include files "stdlib.h" and "string.h".
X
X
X       004 - Have added a capability to create a backup file
Xwhen saving a file to disk.  The suffix of the old version of the
Xfile is changed to .BAK.  The environment variable "$backup" is
Xadded.  When it is set (non-zero), the backup file is created.
XWhen is reset (zero), the operation is as before.  On startup,
Xthe backup flag is turned off.  It may be turned on with the
X"emacs.rc" file.  This feature is enabled by the compile-time
Xflag DOSBAK.
X
X
X       005 - Unfortunately, the MSC compilers vary between
Xversions enough to warrant three additional compile-time
Xvariables: MSC3, MSC4, and MSC5, to indicate the version of the
XMSC compiler.
X
X
X       006 - EMACS seems to run faster in a network environment
Xif the file is opened in binary mode and CR characters are
Xappended manually by EMACS.  It is faster when the file is written,
Xthat is.
X
X       007 - Since MS-DOS does not distinguish between case in
Xfile names, EMACS is changed to do the same.  Previously, it was
Xforcing the name to lower case.  Now you can "emacs Makefile" and
Xthe name will display as "Makefile", rather than "makefile".
X
X
X       008 - The spawn.c routines did not even compile with the
Xregular release of 3.9e.  The changes here take advantage of what
Xis available with the MSC routines.  In particular, there is no
Xneed for the "execprog" routine.  Also, when invoking the shell,
Xthe SHELL environment variable is checked before checking the
XCOMSPEC variable for the name of the user shell.
X
X       009 - Some of the messages were inconsistent and
Xmisspelled in spawn.c.
X---
XDaniel A. Norton                               nort...@mosys.UUCP
Xc/o Momentum Systems Corporation            ...uunet!mosys!nortond
X2 Keystone Avenue
XCherry Hill, NJ   08003                        609/424-0734
SHAR_EOF
if test 2680 -ne "`wc -c < 'Changes.msc'`"
then
echo shar: error transmitting "'Changes.msc'" '(should have been 2680 characters)'
fi
fi
if test -f 'Makefile.msc'
then
echo shar: will not over-write existing "'Makefile.msc'"
else
echo extracting "'Makefile.msc'"
sed 's/^X//' > Makefile.msc <<'SHAR_EOF'
X# Makefile for MicroEMACS 3.9
X# MS-DOS and MSC 5.0
X
X# Enable the following two lines for debugging
X#CDEBUG = -Od -Zi -DDAN_DEBUG
X#LDEBUG = /co
X
X#CDEBUG = -DDAN_DEBUG
X
XCDEFS = -DLINT_ARGS
XCFLAGS=        -AL -Oalt -Gs $(CDEFS) $(CDEBUG)
XLFLAGS= /noi/st:16384$(LDEBUG)
X
XBIN = \usr\local\bin
X
XOBJS = ansi.obj basic.obj bind.obj buffer.obj crypt.obj dg10.obj \
X       display.obj eval.obj exec.obj file.obj fileio.obj \
X       hp110.obj hp150.obj ibmpc.obj input.obj isearch.obj line.obj \
X       lock.obj main.obj random.obj region.obj search.obj spawn.obj \
X       st520.obj tcap.obj termio.obj tipc.obj vmsvt.obj vt52.obj \
X       window.obj word.obj z309.obj
X
XSRCS = ansi.c basic.c bind.c buffer.c crypt.c dg10.c \
X       display.c eval.c exec.c file.c fileio.c \
X       hp110.c hp150.c ibmpc.c input.c isearch.c line.c \
X       lock.c main.c random.c region.c search.c spawn.c \
X       st520.c tcap.c termio.c tipc.c vmsvt.c vt52.c \
X       window.c word.c z309.c
X
XHDRS = estruct.h edef.h efunc.h epath.h ebind.h evar.h
X
Xemacs.exe: $(OBJS)
X       $(LINK) $(LFLAGS) @emacs.lnk
X       -del emacs.unp
X       ren emacs.exe emacs.unp
X       exepack emacs.unp emacs.exe
X#      copy emacs.exe $(BIN)
X
X$(OBJS): $(HDRS)
SHAR_EOF
if test 1115 -ne "`wc -c < 'Makefile.msc'`"
then
echo shar: error transmitting "'Makefile.msc'" '(should have been 1115 characters)'
fi
fi
if test -f 'patch.msc'
then
echo shar: will not over-write existing "'patch.msc'"
else
echo extracting "'patch.msc'"
sed 's/^X//' > patch.msc <<'SHAR_EOF'
XIndex: buffer.c
X*** archive/buffer.c   Sat Dec 19 15:20:41 1987
X--- msdos/buffer.c     Sat Dec 19 15:21:45 1987
X***************
X*** 336,338 ****
X               }
X!              ltoa(b, 7, nbytes);             /* 6 digit buffer size. */
X               cp2 = &b[0];
X
X--- 336,338 ----
X               }
X!              fmtlong(b, 7, nbytes);             /* 6 digit buffer size. */
X               cp2 = &b[0];
X***************
X*** 361,363 ****
X  
X! ltoa(buf, width, num)
X  
X
X--- 361,363 ----
X  
X! fmtlong(buf, width, num)
X  
X***************
X*** 443,445 ****
X       register LINE   *lp;
X-      char *malloc();
X  
X
X--- 443,444 ----
X       register LINE   *lp;
X  
XIndex: display.c
X*** archive/display.c  Sat Dec 19 15:20:43 1987
X--- msdos/display.c    Sat Dec 19 15:21:47 1987
X***************
X*** 45,47 ****
X      register VIDEO *vp;
X-     char *malloc();
X  
X
X--- 45,46 ----
X      register VIDEO *vp;
X  
XIndex: edef.h
X*** archive/edef.h     Sat Dec 19 15:20:46 1987
X--- msdos/edef.h       Sat Dec 19 15:21:48 1987
X***************
X*** 17,19 ****
X  char *gtusr();
X! char *itoa();
X  char *ltos();
X
X--- 17,19 ----
X  char *gtusr();
X! char *itods();
X  char *ltos();
X***************
X*** 19,20 ****
X  char *ltos();
X  char *malloc();
X
X--- 19,24 ----
X  char *ltos();
X+ #if  MSC
X+ #include <stdlib.h>
X+ #include <string.h>
X+ #else
X  char *malloc();
X***************
X*** 20,23 ****
X  char *malloc();
X- char *mklower();
X- char *mkupper();
X  char *strcat();
X
X--- 24,25 ----
X  char *malloc();
X  char *strcat();
X***************
X*** 24,26 ****
X  char *strcpy();
X! char *strncpy();
X  char *token();
X
X--- 26,31 ----
X  char *strcpy();
X! #endif
X! char *xstrncpy();
X! char *mklower();
X! char *mkupper();
X  char *token();
X***************
X*** 29,30 ****
X  unsigned int stock();
X  
X
X--- 34,36 ----
X  unsigned int stock();
X+ char *xtmpnam();
X  
X***************
X*** 87,88 ****
X  int  restflag = FALSE;       /* restricted use?              */
X  int  lastkey = 0;            /* last keystoke                */
X
X--- 93,97 ----
X  int  restflag = FALSE;       /* restricted use?              */
X+ #if  DOSBAK
X+ int  backupflag = FALSE;     /* create .BAK files?           */
X+ #endif
X  int  lastkey = 0;            /* last keystoke                */
X***************
X*** 227,228 ****
X  extern       int restflag;                   /* restricted use?              */
X  extern       int lastkey;                    /* last keystoke                */
X
X--- 236,240 ----
X  extern       int restflag;                   /* restricted use?              */
X+ #if  DOSBAK
X+ extern       int backupflag;                 /* create .BAK files?           */
X+ #endif
X  extern       int lastkey;                    /* last keystoke                */
XIndex: estruct.h
X*** archive/estruct.h  Sat Dec 19 15:20:51 1987
X--- msdos/estruct.h    Sat Dec 19 15:21:51 1987
X***************
X*** 54,57 ****
X  #define LATTICE 0    /* Lattice 2.14 thruough 3.0 compilers */
X! #define AZTEC        1       /* Aztec C 3.20e */
X! #define MSC  0       /* MicroSoft C compile version 3 & 4 */
X  #define TURBO        0       /* Turbo C/MSDOS */
X
X--- 54,60 ----
X  #define LATTICE 0    /* Lattice 2.14 thruough 3.0 compilers */
X! #define AZTEC        0       /* Aztec C 3.20e */
X! #define MSC3 0       /* MicroSoft C compiler version 3 */
X! #define MSC4 0       /* MicroSoft C compiler version 4 */
X! #define MSC5 1       /* MicroSoft C compiler version 5 */
X! #define MSC  (MSC3 | MSC4 | MSC5) /* MicroSoft C version 3, 4 or 5 */
X  #define TURBO        0       /* Turbo C/MSDOS */
X***************
X*** 92,94 ****
X  #define CTRLZ        0       /* add a ^Z at end of files under MSDOS only    */
X! #define ADDCR        0       /* ajout d'un CR en fin de chaque ligne (ST520) */
X  #define NBRACE       1       /* new style brace matching command             */
X
X--- 95,98 ----
X  #define CTRLZ        0       /* add a ^Z at end of files under MSDOS only    */
X! #define ADDCR        (1 & (ST520 | MSDOS)) /* add a CR at the end of each line
X!                                                      (ST520/MSDOS)   */
X  #define NBRACE       1       /* new style brace matching command             */
X***************
X*** 94,95 ****
X  #define NBRACE       1       /* new style brace matching command             */
X  
X
X--- 98,100 ----
X  #define NBRACE       1       /* new style brace matching command             */
X+ #define DOSBAK       (1 & MSDOS) /* create .BAK file on save (MSDOS)     */
X  
X***************
X*** 665,666 ****
X  #endif
X-
X
X--- 670,670 ----
X  #endif
XIndex: eval.c
X*** archive/eval.c     Sat Dec 19 15:20:53 1987
X--- msdos/eval.c       Sat Dec 19 15:21:52 1987
X***************
X*** 68,75 ****
X       switch (fnum) {
X!              case UFADD:     return(itoa(atoi(arg1) + atoi(arg2)));
X!              case UFSUB:     return(itoa(atoi(arg1) - atoi(arg2)));
X!              case UFTIMES:   return(itoa(atoi(arg1) * atoi(arg2)));
X!              case UFDIV:     return(itoa(atoi(arg1) / atoi(arg2)));
X!              case UFMOD:     return(itoa(atoi(arg1) % atoi(arg2)));
X!              case UFNEG:     return(itoa(-atoi(arg1)));
X               case UFCAT:     strcpy(result, arg1);
X
X--- 68,75 ----
X       switch (fnum) {
X!              case UFADD:     return(itods(dstoi(arg1) + dstoi(arg2)));
X!              case UFSUB:     return(itods(dstoi(arg1) - dstoi(arg2)));
X!              case UFTIMES:   return(itods(dstoi(arg1) * dstoi(arg2)));
X!              case UFDIV:     return(itods(dstoi(arg1) / dstoi(arg2)));
X!              case UFMOD:     return(itods(dstoi(arg1) % dstoi(arg2)));
X!              case UFNEG:     return(itods(-dstoi(arg1)));
X               case UFCAT:     strcpy(result, arg1);
X***************
X*** 76,78 ****
X                               return(strcat(result, arg2));
X!              case UFLEFT:    return(strncpy(result, arg1, atoi(arg2)));
X               case UFRIGHT:   return(strcpy(result,
X
X--- 76,78 ----
X                               return(strcat(result, arg2));
X!              case UFLEFT:    return(xstrncpy(result, arg1, dstoi(arg2)));
X               case UFRIGHT:   return(strcpy(result,
X***************
X*** 78,82 ****
X               case UFRIGHT:   return(strcpy(result,
X!                                      &arg1[(strlen(arg1) - atoi(arg2))]));
X!              case UFMID:     return(strncpy(result, &arg1[atoi(arg2)-1],
X!                                      atoi(arg3)));
X               case UFNOT:     return(ltos(stol(arg1) == FALSE));
X
X--- 78,82 ----
X               case UFRIGHT:   return(strcpy(result,
X!                                      &arg1[(strlen(arg1) - dstoi(arg2))]));
X!              case UFMID:     return(xstrncpy(result, &arg1[dstoi(arg2)-1],
X!                                      dstoi(arg3)));
X               case UFNOT:     return(ltos(stol(arg1) == FALSE));
X***************
X*** 82,86 ****
X               case UFNOT:     return(ltos(stol(arg1) == FALSE));
X!              case UFEQUAL:   return(ltos(atoi(arg1) == atoi(arg2)));
X!              case UFLESS:    return(ltos(atoi(arg1) < atoi(arg2)));
X!              case UFGREATER: return(ltos(atoi(arg1) > atoi(arg2)));
X               case UFSEQUAL:  return(ltos(strcmp(arg1, arg2) == 0));
X
X--- 82,86 ----
X               case UFNOT:     return(ltos(stol(arg1) == FALSE));
X!              case UFEQUAL:   return(ltos(dstoi(arg1) == dstoi(arg2)));
X!              case UFLESS:    return(ltos(dstoi(arg1) < dstoi(arg2)));
X!              case UFGREATER: return(ltos(dstoi(arg1) > dstoi(arg2)));
X               case UFSEQUAL:  return(ltos(strcmp(arg1, arg2) == 0));
X***************
X*** 91,93 ****
X               case UFOR:      return(ltos(stol(arg1) || stol(arg2)));
X!              case UFLENGTH:  return(itoa(strlen(arg1)));
X               case UFUPPER:   return(mkupper(arg1));
X
X--- 91,93 ----
X               case UFOR:      return(ltos(stol(arg1) || stol(arg2)));
X!              case UFLENGTH:  return(itods(strlen(arg1)));
X               case UFUPPER:   return(mkupper(arg1));
X***************
X*** 94,98 ****
X               case UFLOWER:   return(mklower(arg1));
X!              case UFTRUTH:   return(ltos(atoi(arg1) == 42));
X!              case UFASCII:   return(itoa((int)arg1[0]));
X!              case UFCHR:     result[0] = atoi(arg1);
X                               result[1] = 0;
X
X--- 94,98 ----
X               case UFLOWER:   return(mklower(arg1));
X!              case UFTRUTH:   return(ltos(dstoi(arg1) == 42));
X!              case UFASCII:   return(itods((int)arg1[0]));
X!              case UFCHR:     result[0] = dstoi(arg1);
X                               result[1] = 0;
X***************
X*** 102,106 ****
X                               return(result);
X!              case UFRND:     return(itoa((ernd() % abs(atoi(arg1))) + 1));
X!              case UFABS:     return(itoa(abs(atoi(arg1))));
X!              case UFSINDEX:  return(itoa(sindex(arg1, arg2)));
X               case UFENV:
X
X--- 102,106 ----
X                               return(result);
X!              case UFRND:     return(itods((ernd() % abs(dstoi(arg1))) + 1));
X!              case UFABS:     return(itods(abs(dstoi(arg1))));
X!              case UFSINDEX:  return(itods(sindex(arg1, arg2)));
X               case UFENV:
X***************
X*** 117,122 ****
X                               return(tsp == NULL ? "" : tsp);
X!              case UFBAND:    return(itoa(atoi(arg1) & atoi(arg2)));
X!              case UFBOR:     return(itoa(atoi(arg1) | atoi(arg2)));
X!              case UFBXOR:    return(itoa(atoi(arg1) ^ atoi(arg2)));
X!              case UFBNOT:    return(itoa(~atoi(arg1)));
X               case UFXLATE:   return(xlat(arg1, arg2, arg3));
X
X--- 117,122 ----
X                               return(tsp == NULL ? "" : tsp);
X!              case UFBAND:    return(itods(dstoi(arg1) & dstoi(arg2)));
X!              case UFBOR:     return(itods(dstoi(arg1) | dstoi(arg2)));
X!              case UFBXOR:    return(itods(dstoi(arg1) ^ dstoi(arg2)));
X!              case UFBNOT:    return(itods(~dstoi(arg1)));
X               case UFXLATE:   return(xlat(arg1, arg2, arg3));
X***************
X*** 166,172 ****
X       switch (vnum) {
X!              case EVFILLCOL: return(itoa(fillcol));
X!              case EVPAGELEN: return(itoa(term.t_nrow + 1));
X!              case EVCURCOL:  return(itoa(getccol(FALSE)));
X!              case EVCURLINE: return(itoa(getcline()));
X!              case EVRAM:     return(itoa((int)(envram / 1024l)));
X               case EVFLICKER: return(ltos(flickcode));
X
X--- 166,172 ----
X       switch (vnum) {
X!              case EVFILLCOL: return(itods(fillcol));
X!              case EVPAGELEN: return(itods(term.t_nrow + 1));
X!              case EVCURCOL:  return(itods(getccol(FALSE)));
X!              case EVCURLINE: return(itods(getcline()));
X!              case EVRAM:     return(itods((int)(envram / 1024l)));
X               case EVFLICKER: return(ltos(flickcode));
X***************
X*** 172,174 ****
X               case EVFLICKER: return(ltos(flickcode));
X!              case EVCURWIDTH:return(itoa(term.t_ncol));
X               case EVCBUFNAME:return(curbp->b_bname);
X
X--- 172,174 ----
X               case EVFLICKER: return(ltos(flickcode));
X!              case EVCURWIDTH:return(itods(term.t_ncol));
X               case EVCBUFNAME:return(curbp->b_bname);
X***************
X*** 179,183 ****
X               case EVPALETTE: return(palstr);
X!              case EVASAVE:   return(itoa(gasave));
X!              case EVACOUNT:  return(itoa(gacount));
X!              case EVLASTKEY: return(itoa(lastkey));
X               case EVCURCHAR:
X
X--- 179,183 ----
X               case EVPALETTE: return(palstr);
X!              case EVASAVE:   return(itods(gasave));
X!              case EVACOUNT:  return(itods(gacount));
X!              case EVLASTKEY: return(itods(lastkey));
X               case EVCURCHAR:
X***************
X*** 184,187 ****
X                       return(curwp->w_dotp->l_used ==
X!                                      curwp->w_doto ? itoa('\n') :
X!                              itoa(lgetc(curwp->w_dotp, curwp->w_doto)));
X               case EVDISCMD:  return(ltos(discmd));
X
X--- 184,187 ----
X                       return(curwp->w_dotp->l_used ==
X!                                      curwp->w_doto ? itods('\n') :
X!                              itods(lgetc(curwp->w_dotp, curwp->w_doto)));
X               case EVDISCMD:  return(ltos(discmd));
X***************
X*** 189,191 ****
X               case EVPROGNAME:return(PROGNAME);
X!              case EVSEED:    return(itoa(seed));
X               case EVDISINP:  return(ltos(disinp));
X
X--- 189,191 ----
X               case EVPROGNAME:return(PROGNAME);
X!              case EVSEED:    return(itods(seed));
X               case EVDISINP:  return(ltos(disinp));
X***************
X*** 191,194 ****
X               case EVDISINP:  return(ltos(disinp));
X!              case EVWLINE:   return(itoa(curwp->w_ntrows));
X!              case EVCWLINE:  return(itoa(getwpos()));
X               case EVTARGET:  saveflag = lastflag;
X
X--- 191,194 ----
X               case EVDISINP:  return(ltos(disinp));
X!              case EVWLINE:   return(itods(curwp->w_ntrows));
X!              case EVCWLINE:  return(itods(getwpos()));
X               case EVTARGET:  saveflag = lastflag;
X***************
X*** 194,196 ****
X               case EVTARGET:  saveflag = lastflag;
X!                              return(itoa(curgoal));
X               case EVSEARCH:  return(pat);
X
X--- 194,196 ----
X               case EVTARGET:  saveflag = lastflag;
X!                              return(itods(curgoal));
X               case EVSEARCH:  return(pat);
X***************
X*** 199,203 ****
X               case EVKILL:    return(getkill());
X!              case EVCMODE:   return(itoa(curbp->b_mode));
X!              case EVGMODE:   return(itoa(gmode));
X!              case EVTPAUSE:  return(itoa(term.t_pause));
X               case EVPENDING:
X
X--- 199,203 ----
X               case EVKILL:    return(getkill());
X!              case EVCMODE:   return(itods(curbp->b_mode));
X!              case EVGMODE:   return(itods(gmode));
X!              case EVTPAUSE:  return(itods(term.t_pause));
X               case EVPENDING:
X***************
X*** 208,210 ****
X  #endif
X!              case EVLWIDTH:  return(itoa(llength(curwp->w_dotp)));
X               case EVLINE:    return(getctext());
X
X--- 208,210 ----
X  #endif
X!              case EVLWIDTH:  return(itods(llength(curwp->w_dotp)));
X               case EVLINE:    return(getctext());
X***************
X*** 210,213 ****
X               case EVLINE:    return(getctext());
X!              case EVGFLAGS:  return(itoa(gflags));
X!              case EVRVAL:    return(itoa(rval));
X       }
X
X--- 210,216 ----
X               case EVLINE:    return(getctext());
X!              case EVGFLAGS:  return(itods(gflags));
X!              case EVRVAL:    return(itods(rval));
X! #if  DOSBAK
X!              case EVBACKUP:  return(ltos(backupflag));
X! #endif
X       }
X***************
X*** 231,233 ****
X                       size = NSTRING - 1;
X!              strncpy(value, kbufh->d_chunk, size);
X       }
X
X--- 234,236 ----
X                       size = NSTRING - 1;
X!              xstrncpy(value, kbufh->d_chunk, size);
X       }
X***************
X*** 274,276 ****
X       if (f == TRUE)
X!              strcpy(value, itoa(n));
X       else {
X
X--- 277,279 ----
X       if (f == TRUE)
X!              strcpy(value, itods(n));
X       else {
X***************
X*** 424,426 ****
X               switch (vnum) {
X!              case EVFILLCOL: fillcol = atoi(value);
X                               break;
X
X--- 427,429 ----
X               switch (vnum) {
X!              case EVFILLCOL: fillcol = dstoi(value);
X                               break;
X***************
X*** 426,428 ****
X                               break;
X!              case EVPAGELEN: status = newsize(TRUE, atoi(value));
X                               break;
X
X--- 429,431 ----
X                               break;
X!              case EVPAGELEN: status = newsize(TRUE, dstoi(value));
X                               break;
X***************
X*** 428,430 ****
X                               break;
X!              case EVCURCOL:  status = setccol(atoi(value));
X                               break;
X
X--- 431,433 ----
X                               break;
X!              case EVCURCOL:  status = setccol(dstoi(value));
X                               break;
X***************
X*** 430,432 ****
X                               break;
X!              case EVCURLINE: status = gotoline(TRUE, atoi(value));
X                               break;
X
X--- 433,435 ----
X                               break;
X!              case EVCURLINE: status = gotoline(TRUE, dstoi(value));
X                               break;
X***************
X*** 435,437 ****
X                               break;
X!              case EVCURWIDTH:status = newwidth(TRUE, atoi(value));
X                               break;
X
X--- 438,440 ----
X                               break;
X!              case EVCURWIDTH:status = newwidth(TRUE, dstoi(value));
X                               break;
X***************
X*** 449,451 ****
X                               break;
X!              case EVPALETTE: strncpy(palstr, value, 48);
X                               spal(palstr);
X
X--- 452,454 ----
X                               break;
X!              case EVPALETTE: xstrncpy(palstr, value, 48);
X                               spal(palstr);
X***************
X*** 452,454 ****
X                               break;
X!              case EVASAVE:   gasave = atoi(value);
X                               break;
X
X--- 455,457 ----
X                               break;
X!              case EVASAVE:   gasave = dstoi(value);
X                               break;
X***************
X*** 454,456 ****
X                               break;
X!              case EVACOUNT:  gacount = atoi(value);
X                               break;
X
X--- 457,459 ----
X                               break;
X!              case EVACOUNT:  gacount = dstoi(value);
X                               break;
X***************
X*** 456,458 ****
X                               break;
X!              case EVLASTKEY: lastkey = atoi(value);
X                               break;
X
X--- 459,461 ----
X                               break;
X!              case EVLASTKEY: lastkey = dstoi(value);
X                               break;
X***************
X*** 459,461 ****
X               case EVCURCHAR: ldelete(1L, FALSE);     /* delete 1 char */
X!                              c = atoi(value);
X                               if (c == '\n')
X
X--- 462,464 ----
X               case EVCURCHAR: ldelete(1L, FALSE);     /* delete 1 char */
X!                              c = dstoi(value);
X                               if (c == '\n')
X***************
X*** 470,472 ****
X               case EVPROGNAME:break;
X!              case EVSEED:    seed = atoi(value);
X                               break;
X
X--- 473,475 ----
X               case EVPROGNAME:break;
X!              case EVSEED:    seed = dstoi(value);
X                               break;
X***************
X*** 474,476 ****
X                               break;
X!              case EVWLINE:   status = resize(TRUE, atoi(value));
X                               break;
X
X--- 477,479 ----
X                               break;
X!              case EVWLINE:   status = resize(TRUE, dstoi(value));
X                               break;
X***************
X*** 477,479 ****
X               case EVCWLINE:  status = forwline(TRUE,
X!                                              atoi(value) - getwpos());
X                               break;
X
X--- 480,482 ----
X               case EVCWLINE:  status = forwline(TRUE,
X!                                              dstoi(value) - getwpos());
X                               break;
X***************
X*** 479,481 ****
X                               break;
X!              case EVTARGET:  curgoal = atoi(value);
X                               thisflag = saveflag;
X
X--- 482,484 ----
X                               break;
X!              case EVTARGET:  curgoal = dstoi(value);
X                               thisflag = saveflag;
X***************
X*** 492,494 ****
X               case EVKILL:    break;
X!              case EVCMODE:   curbp->b_mode = atoi(value);
X                               curwp->w_flag |= WFMODE;
X
X--- 495,497 ----
X               case EVKILL:    break;
X!              case EVCMODE:   curbp->b_mode = dstoi(value);
X                               curwp->w_flag |= WFMODE;
X***************
X*** 495,497 ****
X                               break;
X!              case EVGMODE:   gmode = atoi(value);
X                               break;
X
X--- 498,500 ----
X                               break;
X!              case EVGMODE:   gmode = dstoi(value);
X                               break;
X***************
X*** 497,499 ****
X                               break;
X!              case EVTPAUSE:  term.t_pause = atoi(value);
X                               break;
X
X--- 500,502 ----
X                               break;
X!              case EVTPAUSE:  term.t_pause = dstoi(value);
X                               break;
X***************
X*** 502,504 ****
X               case EVLINE:    putctext(value);
X!              case EVGFLAGS:  gflags = atoi(value);
X                               break;
X
X--- 505,507 ----
X               case EVLINE:    putctext(value);
X!              case EVGFLAGS:  gflags = dstoi(value);
X                               break;
X***************
X*** 505,506 ****
X               case EVRVAL:    break;
X               }
X
X--- 508,513 ----
X               case EVRVAL:    break;
X+ #if  DOSBAK
X+              case EVBACKUP:  backupflag = stol(value);
X+                              break;
X+ #endif
X               }
X***************
X*** 511,514 ****
X  
X! /*   atoi:   ascii string to integer......This is too
X!              inconsistant to use the system's        */
X  
X
X--- 518,521 ----
X  
X! /*   dstoi:  decimal ascii string to integer......This is too
X!              inconsistant to use the system's atoi function  */
X  
X***************
X*** 514,516 ****
X  
X! atoi(st)
X  
X
X--- 521,523 ----
X  
X! dstoi(st)
X  
X***************
X*** 548,551 ****
X  
X! /*   itoa:   integer to ascii string.......... This is too
X!              inconsistant to use the system's        */
X  
X
X--- 555,558 ----
X  
X! /*   itods:  integer to decimal ascii string.......... This is too
X!              inconsistant to use the system itoa function    */
X  
X***************
X*** 551,553 ****
X  
X! char *itoa(i)
X  
X
X--- 558,560 ----
X  
X! char *itods(i)
X  
X***************
X*** 553,555 ****
X  
X! int i;       /* integer to translate to a string */
X  
X
X--- 560,562 ----
X  
X! int i;       /* integer to translate to a decimal string */
X  
X***************
X*** 666,668 ****
X                                       blen = NSTRING;
X!                              strncpy(buf, bp->b_dotp->l_text + bp->b_doto,
X                                       blen);
X
X--- 673,675 ----
X                                       blen = NSTRING;
X!                              xstrncpy(buf, bp->b_dotp->l_text + bp->b_doto,
X                                       blen);
X***************
X*** 707,709 ****
X       /* check for numeric truth (!= 0) */
X!      return((atoi(val) != 0));
X  }
X
X--- 714,716 ----
X       /* check for numeric truth (!= 0) */
X!      return((dstoi(val) != 0));
X  }
X***************
X*** 753,754 ****
X  
X  int abs(x)   /* take the absolute value of an integer */
X
X--- 760,762 ----
X  
X+ #if  !MSC5
X  int abs(x)   /* take the absolute value of an integer */
X***************
X*** 760,761 ****
X  }
X  
X
X--- 768,770 ----
X  }
X+ #endif
X  
X***************
X*** 767,768 ****
X  }
X  
X
X--- 776,778 ----
X  }
X+
X  
XIndex: evar.h
X*** archive/evar.h     Sat Dec 19 15:20:53 1987
X--- msdos/evar.h       Sat Dec 19 15:21:53 1987
X***************
X*** 59,60 ****
X       "rval",               /* child process return value */
X  };
X
X--- 59,63 ----
X       "rval",               /* child process return value */
X+ #if  DOSBAK
X+      "backup",             /* Create .BAK files when saving        */
X+ #endif
X  };
X***************
X*** 102,103 ****
X  #define EVRVAL               36
X  
X
X--- 105,109 ----
X  #define EVRVAL               36
X+ #if  DOSBAK
X+ #define EVBACKUP     37
X+ #endif
X  
XIndex: exec.c
X*** archive/exec.c     Sat Dec 19 15:20:55 1987
X--- msdos/exec.c       Sat Dec 19 15:21:55 1987
X***************
X*** 515,517 ****
X               }
X!              strncpy(eline, lp->l_text, linlen);
X               eline[linlen] = 0;      /* make sure it ends */
X
X--- 515,517 ----
X               }
X!              xstrncpy(eline, lp->l_text, linlen);
X               eline[linlen] = 0;      /* make sure it ends */
X***************
X*** 539,541 ****
X                       /* debug if levels */
X!                      strcat(outline, itoa(execlevel));
X                       strcat(outline, ":");
X
X--- 539,541 ----
X                       /* debug if levels */
X!                      strcat(outline, itods(execlevel));
X                       strcat(outline, ":");
XIndex: file.c
X*** archive/file.c     Sat Dec 19 15:20:56 1987
X--- msdos/file.c       Sat Dec 19 15:21:56 1987
X***************
X*** 143,145 ****
X  
X! #if  MSDOS
X       mklower(fname);         /* msdos isn't case sensitive */
X
X--- 143,145 ----
X  
X! #if  MSDOS & !MSC
X       mklower(fname);         /* msdos isn't case sensitive */
X***************
X*** 147,148 ****
X       for (bp=bheadp; bp!=NULL; bp=bp->b_bufp) {
X               if ((bp->b_flag&BFINVS)==0 && strcmp(bp->b_fname, fname)==0) {
X
X--- 147,151 ----
X       for (bp=bheadp; bp!=NULL; bp=bp->b_bufp) {
X+ #if  MSDOS & MSC         /* neither are we             */
X+              if ((bp->b_flag&BFINVS)==0 && strcmpi(bp->b_fname, fname)==0) {
X+ #else
X               if ((bp->b_flag&BFINVS)==0 && strcmp(bp->b_fname, fname)==0) {
X***************
X*** 148,149 ****
X               if ((bp->b_flag&BFINVS)==0 && strcmp(bp->b_fname, fname)==0) {
X                       swbuffer(bp);
X
X--- 151,153 ----
X               if ((bp->b_flag&BFINVS)==0 && strcmp(bp->b_fname, fname)==0) {
X+ #endif
X                       swbuffer(bp);
X***************
X*** 455,456 ****
X       register int    nline;
X  
X
X--- 459,463 ----
X       register int    nline;
X+ #if  DOSBAK
X+      char fntemp[NFILEN], fnback[NFILEN];
X+ #endif
X  
X***************
X*** 464,466 ****
X  
X!      if ((s=ffwopen(fn)) != FIOSUC) {        /* Open writes message. */
X               TTkopen();
X
X--- 471,479 ----
X  
X! #if  DOSBAK
X!      if (backupflag)
X!              s = fftopen(fntemp, fn);
X!      else
X! #endif
X!              s = ffwopen(fn);
X!      if (s != FIOSUC) {        /* Open writes message. */
X               TTkopen();
X***************
X*** 479,480 ****
X               s = ffclose();
X               if (s == FIOSUC) {              /* No close error.      */
X
X--- 492,518 ----
X               s = ffclose();
X+ #if  DOSBAK
X+              if (backupflag) { register char *p, *q;
X+                      strcpy(fnback, fn);
X+                      p = q = &fnback[strlen(fnback)];
X+                      while (--q >= &fnback[0]) {
X+                              if (*q == '.')
X+                                      p = q;
X+                              if ((*q == '.')
X+                               || (*q == '/')
X+                               || (*q == '\\')
X+                               || (*q == ':') )
X+                                      break;
X+                      }
X+                      strcpy(p, ".BAK");
X+                      unlink(fnback);
X+ #if  MSC3
X+                      rename(fnback, fn);
X+                      if(rename(fn, fntemp))
X+ #else
X+                      rename(fn, fnback);
X+                      if(rename(fntemp, fn))
X+ #endif
X+                              s = FIOERR;
X+              }
X+ #endif
X               if (s == FIOSUC) {              /* No close error.      */
XIndex: fileio.c
X*** archive/fileio.c   Sat Dec 19 15:20:56 1987
X--- msdos/fileio.c     Sat Dec 19 15:21:56 1987
X***************
X*** 8,9 ****
X  #include     "edef.h"
X  
X
X--- 8,12 ----
X  #include     "edef.h"
X+ #if  DOSBAK
X+ #include     <string.h>
X+ #endif
X  
X***************
X*** 37,38 ****
X  #else
X       if ((ffp=fopen(fn, "w")) == NULL) {
X
X--- 40,44 ----
X  #else
X+ #if  MSDOS
X+      if ((ffp=fopen(fn, "wb")) == NULL) {
X+ #else
X       if ((ffp=fopen(fn, "w")) == NULL) {
X***************
X*** 39,40 ****
X  #endif
X               mlwrite("Cannot open file for writing");
X
X--- 45,47 ----
X  #endif
X+ #endif
X               mlwrite("Cannot open file for writing");
X***************
X*** 45,46 ****
X  
X  /*
X
X--- 52,77 ----
X  
X+ #if  DOSBAK
X+ char *xtmpnam(p)
X+ char *p;
X+ {
X+      static unsigned short ix = 0;
X+      register unsigned short u;
X+      register char *q;
X+      char tmp[8];
X+      if (p == NULL)
X+              if ((p = malloc(8)) == NULL)
X+                      return p;
X+      if (++ix == 0) ++ix;
X+      tmp[7] = '\0';
X+      q = &tmp[7];
X+      u = ix;
X+      while (u) {
X+              *(--q) = (u % 10) + '0';
X+              u /= 10;
X+      }
X+      return strcpy(p, q);
X+ }
X+ #endif
X+
X+ #if  DOSBAK
X  /*
X***************
X*** 46,47 ****
X  /*
X   * Close a file. Should look at the status in all systems.
X
X--- 77,114 ----
X  /*
X+  * Open a temporary file for writing.  Return TRUE if all is well, and
X+  * FALSE on error (cannot create).
X+  */
X+ fftopen(fn, fnpath)
X+ char *fn, *fnpath;
X+ {
X+      char *p, *q, ch;
X+      p = strrchr(fnpath, '/');
X+      q = strrchr(fnpath, '\\');
X+      if ((p == NULL) || ((q != NULL) && (q > p))) p = q;
X+      q = fn;
X+      if (p != NULL) {
X+              while (fnpath <= p)
X+                      *q++ = *fnpath++;
X+      }
X+      else if ((fnpath[1] == ':')
X+            && ((ch = toupper(fnpath[0])) >= 'A') && (ch <= 'Z')) {
X+              *q++ = fnpath[0];
X+              *q++ = ':';
X+      }
X+      *q = '\0';
X+      strcat(fn, "em");
X+      p = xtmpnam(NULL);
X+      strcat(fn, p);
X+      free(p);
X+      strcat(fn, ".tmp");
X+      if ((ffp=fopen(fn, "wb")) == NULL) {
X+              mlwrite("Cannot open file for writing");
X+              return (FIOERR);
X+      }
X+      mlwrite(fn);
X+      return (FIOSUC);
X+ }
X+ #endif
X+
X+ /*
X   * Close a file. Should look at the status in all systems.
X***************
X*** 98,100 ****
X  
X! #if  ST520 & ADDCR
X       fputc('\r', ffp);
X
X--- 165,167 ----
X  
X! #if  ADDCR
X       fputc('\r', ffp);
X***************
X*** 147,149 ****
X                               return(FIOMEM);
X!                      strncpy(tmpline, fline, flen);
X                       flen += NSTRING;
X
X--- 214,216 ----
X                               return(FIOMEM);
X!                      xstrncpy(tmpline, fline, flen);
X                       flen += NSTRING;
XIndex: isearch.c
X*** archive/isearch.c  Sat Dec 19 15:21:01 1987
X--- msdos/isearch.c    Sat Dec 19 15:21:58 1987
X***************
X*** 138,140 ****
X      cmd_buff[0] = '\0';      /* Init the command buffer            */
X!     strncpy (pat_save, pat, NPAT);   /* Save the old pattern string        */
X      curline = curwp->w_dotp;              /* Save the current line pointer      */
X
X--- 138,140 ----
X      cmd_buff[0] = '\0';      /* Init the command buffer            */
X!     xstrncpy (pat_save, pat, NPAT);  /* Save the old pattern string        */
X      curline = curwp->w_dotp;              /* Save the current line pointer      */
X***************
X*** 221,223 ****
X           n = init_direction;                 /* Reset the search direction */
X!          strncpy (pat, pat_save, NPAT);      /* Restore the old search str */
X           cmd_reexecute = 0;                  /* Start the whole mess over  */
X
X--- 221,223 ----
X           n = init_direction;                 /* Reset the search direction */
X!          xstrncpy (pat, pat_save, NPAT);     /* Restore the old search str */
X           cmd_reexecute = 0;                  /* Start the whole mess over  */
XIndex: line.c
X*** archive/line.c     Sat Dec 19 15:21:04 1987
X--- msdos/line.c       Sat Dec 19 15:21:59 1987
X***************
X*** 33,35 ****
X       register int    size;
X-      char *malloc();
X  
X
X--- 33,34 ----
X       register int    size;
X  
XIndex: search.c
X*** archive/search.c   Sat Dec 19 15:21:14 1987
X--- msdos/search.c     Sat Dec 19 15:22:02 1987
X***************
X*** 1275,1277 ****
X                                       }
X!                                      strncpy(rmcptr->rstr, patptr - mj, mj);
X                                       rmcptr++;
X
X--- 1275,1277 ----
X                                       }
X!                                      xstrncpy(rmcptr->rstr, patptr - mj, mj);
X                                       rmcptr++;
X***************
X*** 1298,1300 ****
X  
X!                              strncpy(rmcptr->rstr, patptr - mj, mj + 1);
X  
X
X--- 1298,1300 ----
X  
X!                              xstrncpy(rmcptr->rstr, patptr - mj, mj + 1);
X  
X***************
X*** 1327,1329 ****
X               }
X!              strncpy(rmcptr->rstr, patptr - mj, mj);
X               rmcptr++;
X
X--- 1327,1329 ----
X               }
X!              xstrncpy(rmcptr->rstr, patptr - mj, mj);
X               rmcptr++;
X***************
X*** 1535,1537 ****
X  {
X-      char            *malloc();
X  
X
X--- 1535,1536 ----
X  {
X  
XIndex: spawn.c
X*** archive/spawn.c    Sat Dec 19 15:21:16 1987
X--- msdos/spawn.c      Sat Dec 19 15:22:06 1987
X***************
X*** 71,73 ****
X  #if  CPM
X!      mlwrite("Not in CP/M-86");
X  #endif
X
X--- 71,73 ----
X  #if  CPM
X!      mlwrite("Not available in CP/M-86");
X  #endif
X***************
X*** 75,76 ****
X       movecursor(term.t_nrow, 0);             /* Seek to last line.   */
X       TTflush();
X
X--- 75,77 ----
X       movecursor(term.t_nrow, 0);             /* Seek to last line.   */
X+      mlputs("\n");
X       TTflush();
X***************
X*** 180,182 ****
X  #if  CPM
X!      mlwrite("Not in CP/M-86");
X       return (FALSE);
X
X--- 181,183 ----
X  #if  CPM
X!      mlwrite("Not available in CP/M-86");
X       return (FALSE);
X***************
X*** 186,187 ****
X               return(s);
X       movecursor(term.t_nrow - 1, 0);
X
X--- 187,189 ----
X               return(s);
X+ #if  !MSDOS
X       movecursor(term.t_nrow - 1, 0);
X***************
X*** 187,188 ****
X       movecursor(term.t_nrow - 1, 0);
X       TTkclose();
X
X--- 189,191 ----
X       movecursor(term.t_nrow - 1, 0);
X+ #endif
X       TTkclose();
X***************
X*** 274,276 ****
X  #if  CPM
X!      mlwrite("Not in CP/M-86");
X       return (FALSE);
X
X--- 277,279 ----
X  #if  CPM
X!      mlwrite("Not available in CP/M-86");
X       return (FALSE);
X***************
X*** 280,281 ****
X               return(s);
X       movecursor(term.t_nrow - 1, 0);
X
X--- 283,285 ----
X               return(s);
X+ #endif
X       movecursor(term.t_nrow - 1, 0);
X***************
X*** 281,282 ****
X       movecursor(term.t_nrow - 1, 0);
X       TTkclose();
X
X--- 285,288 ----
X       movecursor(term.t_nrow - 1, 0);
X+ #if  MSDOS
X+      mlputs("\n");
X       TTkclose();
X***************
X*** 282,283 ****
X       TTkclose();
X       execprog(line);
X
X--- 288,303 ----
X       TTkclose();
X+ #if  MSC
X+      {
X+              register char *p = line;
X+              while (*p && (*p != ' ') && (*p != '\t')) p++;
X+              if (*p == '\0')
X+                      p = NULL;
X+              else
X+              {
X+                      *p++ = '\0';
X+                      if (*p == '\0') p = NULL;
X+              }
X+              spawnlp(P_WAIT, line, line, p, NULL);
X+      }
X+ #else
X       execprog(line);
X***************
X*** 283,284 ****
X       execprog(line);
X       TTkopen();
X
X--- 303,305 ----
X       execprog(line);
X+ #endif
X       TTkopen();
X***************
X*** 334,336 ****
X       char    line[NLINE];    /* command line send to shell */
X!      static char bname[] = "command";
X  
X
X--- 355,357 ----
X       char    line[NLINE];    /* command line send to shell */
X!      static char bname[] = "command.tmp";
X  
X***************
X*** 345,346 ****
X       char *tmp;
X       char *getenv();
X
X--- 366,368 ----
X       char *tmp;
X+ #if  !MSC
X       char *getenv();
X***************
X*** 346,348 ****
X       char *getenv();
X-      FILE *fp;
X       FILE *fopen();
X
X--- 368,369 ----
X       char *getenv();
X       FILE *fopen();
X***************
X*** 349,350 ****
X  #endif
X  
X
X--- 370,373 ----
X  #endif
X+      FILE *fp;
X+ #endif
X  
X***************
X*** 356,358 ****
X       if ((tmp = getenv("TMP")) == NULL)
X!              strcpy(filnam, "command");
X       else {
X
X--- 379,381 ----
X       if ((tmp = getenv("TMP")) == NULL)
X!              strcpy(filnam, "command.tmp");
X       else {
X***************
X*** 359,361 ****
X               strcpy(filnam, tmp);
X!              strcat(filnam,"\\command");
X       }
X
X--- 382,384 ----
X               strcpy(filnam, tmp);
X!              strcat(filnam,"\\command.tmp");
X       }
X***************
X*** 364,366 ****
X  #if  VMS
X!      mlwrite("Not availible under VMS");
X       return(FALSE);
X
X--- 387,389 ----
X  #if  VMS
X!      mlwrite("Not available under VMS");
X       return(FALSE);
X***************
X*** 368,370 ****
X  #if  CPM
X!      mlwrite("Not availible under CP/M-86");
X       return(FALSE);
X
X--- 391,393 ----
X  #if  CPM
X!      mlwrite("Not available under CP/M-86");
X       return(FALSE);
X***************
X*** 487,489 ****
X  #if  VMS
X!      mlwrite("Not availible under VMS");
X       return(FALSE);
X
X--- 510,512 ----
X  #if  VMS
X!      mlwrite("Not available under VMS");
X       return(FALSE);
X***************
X*** 491,493 ****
X  #if  CPM
X!      mlwrite("Not availible under CP/M-86");
X       return(FALSE);
X
X--- 514,516 ----
X  #if  CPM
X!      mlwrite("Not available under CP/M-86");
X       return(FALSE);
X***************
X*** 689,691 ****
X  
X! #if  MSDOS & (TURBO | LATTICE | AZTEC)
X  /*   SHELLPROG: Execute a command in a subshell              */
X
X--- 712,714 ----
X  
X! #if  MSDOS & (TURBO | MSC | LATTICE | AZTEC)
X  /*   SHELLPROG: Execute a command in a subshell              */
X***************
X*** 711,713 ****
X       /*  get name of system shell  */
X!      if ((shell = getenv("COMSPEC")) == NULL) {
X               return(FALSE);          /*  No shell located  */
X
X--- 734,738 ----
X       /*  get name of system shell  */
X!      if ((shell = getenv("SHELL")) == NULL)
X!              shell = getenv("COMSPEC");
X!      if (shell == NULL) {
X               return(FALSE);          /*  No shell located  */
X***************
X*** 724,725 ****
X       if (*cmd) {
X               strcpy(comline, shell);
X
X--- 749,759 ----
X       if (*cmd) {
X+ #if  MSC
X+              register char *p = comline;
X+              *p++ = swchar;
X+              *p++ = 'c';
X+              *p++ = '\0';
X+              return(spawnlp(P_WAIT, shell, shell, comline, cmd, NULL));
X+      } else
X+              return(spawnlp(P_WAIT, shell, NULL));
X+ #else
X               strcpy(comline, shell);
X***************
X*** 733,734 ****
X               return(execprog(shell));
X  }
X
X--- 767,769 ----
X               return(execprog(shell));
X+ #endif
X  }
X***************
X*** 735,736 ****
X  
X  /*   EXECPROG:       A function to execute a named program
X
X--- 770,772 ----
X  
X+ #if  !MSC
X  /*   EXECPROG:       A function to execute a named program
X***************
X*** 835,836 ****
X  }
X  #endif
X
X--- 871,873 ----
X  }
X+ #endif
X  #endif
XIndex: window.c
X*** archive/window.c   Sat Dec 19 15:21:22 1987
X--- msdos/window.c     Sat Dec 19 15:22:07 1987
X***************
X*** 333,335 ****
X       register WINDOW *wp2;
X-      char *malloc();
X  
X
X--- 333,334 ----
X       register WINDOW *wp2;
X  
SHAR_EOF
if test 30655 -ne "`wc -c < 'patch.msc'`"
then
echo shar: error transmitting "'patch.msc'" '(should have been 30655 characters)'
fi
fi
# end of shell archive
exit 0
--
Daniel A. Norton                                nort...@mosys.UUCP
c/o Momentum Systems Corporation             ...uunet!mosys!nortond
2 Keystone Avenue
Cherry Hill, NJ   08003                         609/424-0734