diff -c ./alias.c ../src/alias.c *** ./alias.c Tue May 12 14:18:48 1992 --- ../src/alias.c Thu May 14 01:28:50 1992 *************** *** 27,32 **** --- 27,41 ---- #define ELVIS "elvis" #endif + #if __STDC__ + #include + #include + #endif + + #if MINT + extern char *getenv(); + #endif + extern char **environ; extern int errno; *************** *** 40,45 **** --- 49,57 ---- #if OSK extern int chainc(); #endif + #if TOS || MINT + extern char myname[]; + #endif /* allocate enough space for a copy of the argument list, plus a * terminating NULL, plus maybe an added flag. *************** *** 55,63 **** exit(2); } /* find the last letter in the invocation name of this program */ i = strlen(argv[0]); ! #if MSDOS || TOS /* we almost certainly must bypass ".EXE" or ".TTP" from argv[0] */ if (i > 4 && argv[0][i - 4] == '.') i -= 4; --- 67,81 ---- exit(2); } + #if TOS || MINT + /* some stupid TOS shells haven't heared about argv[0] -nox */ + if (!**argv) + *argv = myname; /* (see myname.c) */ + #endif + /* find the last letter in the invocation name of this program */ i = strlen(argv[0]); ! #if MSDOS || TOS || MINT /* we almost certainly must bypass ".EXE" or ".TTP" from argv[0] */ if (i > 4 && argv[0][i - 4] == '.') i -= 4; *************** *** 65,70 **** --- 83,96 ---- letter = argv[0][i - 1]; /* copy argv to argblk, possibly inserting a flag such as "-R" */ + #if MINT + /* see if elvis is the $EDITOR and has a path, so that execvp() + doesn't have to search $PATH (yes, GEMDOS is slow...) -nox */ + if (strpbrk(ELVIS, "/\\") || !(argblk[0]=getenv("EDITOR")) || + !strpbrk(argblk[0], "/\\") || + (strcmp(argblk[0]+strlen(argblk[0])-sizeof(ELVIS)+1, ELVIS) && + strcmp(argblk[0]+strlen(argblk[0])-sizeof(ELVIS)-3, ELVIS ".ttp"))) + #endif argblk[0] = ELVIS; i = j = 1; switch (letter) *************** *** 98,101 **** --- 124,128 ---- (void)execvp(argblk[0], argblk); perror(ELVIS); #endif + exit(2); } diff -c ./atari.c ../src/atari.c *** ./atari.c Tue May 12 14:18:50 1992 --- ../src/atari.c Thu May 14 01:10:26 1992 *************** *** 16,24 **** #include "config.h" #include "vi.h" ! #if TOS #include /* vi uses mode==0 only ... */ int access(file, mode) char *file; --- 16,26 ---- #include "config.h" #include "vi.h" ! #if TOS || MINT #include + # if !MINT /* MiNT's library is a little more complete :-) */ + /* vi uses mode==0 only ... */ int access(file, mode) char *file; *************** *** 36,42 **** return template; } ! #ifndef __GNUC__ char *getcwd(buf, size) char *buf; { --- 38,46 ---- return template; } ! # endif ! ! # ifndef __GNUC__ char *getcwd(buf, size) char *buf; { *************** *** 47,56 **** Dgetpath(buf + 2, 0); return buf; } ! #endif /* read -- text mode, compress \r\n to \n * warning: might fail when maxlen==1 and at eol */ int tread(fd, buf, maxlen) --- 51,61 ---- Dgetpath(buf + 2, 0); return buf; } ! # endif /* read -- text mode, compress \r\n to \n * warning: might fail when maxlen==1 and at eol + * ...no longer :-) -nox */ int tread(fd, buf, maxlen) *************** *** 61,68 **** int i, j, nread=read(fd, buf, (unsigned)maxlen); if (nread && buf[nread-1]=='\r') ! { nread--; ! lseek(fd, -1l, 1); } for (i=j=0; j> 16; } } ! Supexec(gettime); } return pos; } --- 178,184 ---- buf[pos++] = l >> 16; } } ! (void) Supexec(gettime); } return pos; } *************** *** 158,161 **** --- 191,360 ---- while (len--) Bconout(2, *buf++); } + #endif /* TOS */ + + #if MINT + extern int __mint; + + # include + # include + + static jmp_buf env; + + /* ctputs(): same as tputs(), but recognizes #blink / #noblink to + set the cursormode (have to do it this way because those are not + available thru the ST's `VT52' emulator...) */ + + void ctputs(cp, affcnt, outfn) + char *cp; + int affcnt; + int (*outfn)(); + { + if (!strcmp(cp, "#blink")) { + (void) Cursconf(2, 0); + return; + } + if (!strcmp(cp, "#noblink")) { + (void) Cursconf(3, 0); + return; + } + tputs(cp, affcnt, outfn); + } + + /* this turns those shifted cursor- / insert / home keys into + something useful (without this, they would return digits...) */ + + static long fixkey(l) + long l; + { + if (l < 0 || !(char) l) + return l; + switch ((unsigned char) (l >> 16)) { + case 72: /* shift- ^ -> PgUp */ + return 73l << 16; + case 80: /* shift- v -> PgDn */ + return 81l << 16; + case 71: /* shift-Home -> End */ + return 79l << 16; + case 75: /* shift- <- -> ctrl- <- */ + return 115l << 16; + case 77: /* shift- -> -> ctrl- -> */ + return 116l << 16; + case 82: /* shift-Insert -> Printscreen */ + return 55l << 16; + } + return l; + } + + /*ARGSUSED*/ + static void dummy(signo) + int signo; + { + longjmp(env, 1); + } + + /* This function implements a read-with-timeout from the keyboard. */ + /*ARGSUSED*/ + int ttyread(buf, len, time) + char *buf; /* where to store the gotten characters */ + int len; /* maximum number of characters to get -- ignored on terminals */ + int time; /* maximum time to allow for reading */ + { + int pos=0; + long l; + long endtime; + static tty; /* 'y' if reading from tty, or 'n' if not a tty */ + extern int got_winch; /* flag from our getsize() SIGWINCH handler */ + + /* do we know whether this is a tty or not? */ + if (!tty) + tty = (isatty(0) ? 'y' : 'n'); + + if (tty != 'y') + return read(0, buf, (unsigned) len); + + if (!__mint) { + /* no MiNT -> eat cycles :-) */ + + /* compute the ending time, in increments of 1/200th seconds */ + (void) Supexec(gettime); + endtime = time * 20 + timer; + + /* wait until time runs out, or we get a keystroke */ + while (!pos && (!time || (timer-endtime) < 0)) + { + if (*o_stbios ? Bconstat(2) : Cconis()) + { + l = fixkey(*o_stbios ? Bconin(2) : Crawcin()); + if (l < 0) + return l; + buf[pos] = l; + if (buf[pos++] == '\0') + { + buf[pos-1] = '#'; + buf[pos++] = l >> 16; + } + } + (void) Supexec(gettime); + } + return pos; + } + /* MiNT is there -> do it with alarm() + [yes MiNT also has select(), but as of MiNT version 0.94 + that won't yet work over e.g. a serial line...] */ + + /* arrange for timeout */ + # if __GNUC__ + signal(SIGALRM, (void (*)()) dummy); + # else + signal(SIGALRM, dummy); + # endif + alarm(time); + + if (setjmp(env)) + return 0; + do { + l = fixkey(*o_stbios ? Bconin(2) : Crawcin()); + + if (got_winch) { + got_winch = 0; + if (*o_lines != LINES || *o_columns != COLS) { + *o_lines = LINES; + *o_columns = COLS; + #ifndef CRUNCH + if (!wset) + { + *o_window = LINES - 1; + } #endif + if (mode != MODE_EX && mode != MODE_COLON) + /* pretend the user hit ^L */ + buf[pos++] = ctrl('L'); + } + } + if (l > 0 && (buf[pos++]=l) == '\0') + { + buf[pos-1] = '#'; + buf[pos++] = l>>16; + } + } while (!pos); + + /* cancel the alarm */ + alarm(0); + + /* return the number of bytes read */ + return pos; + } + + void ttywrite(buf, len) + char *buf; + int len; + { + if (!*o_stbios) { + write(1, buf, (unsigned) len); + return; + } + while (len--) + (void) Bconout(2, *buf++); + } + #endif /* MINT */ diff -c ./cmd1.c ../src/cmd1.c *** ./cmd1.c Tue May 12 14:18:52 1992 --- ../src/cmd1.c Wed May 13 23:26:24 1992 *************** *** 17,22 **** --- 17,26 ---- #include "vi.h" #include "regexp.h" + #if MINT + extern int __mint; + #endif + #ifdef DEBUG /* print the selected lines with info on the blocks */ /*ARGSUSED*/ *************** *** 197,203 **** } /* either the file must not exist, or we must have a ! or be appending */ ! if (access(extra, 0) == 0 && !bang && !append) { msg("File already exists - Use :w! to overwrite"); return; --- 201,207 ---- } /* either the file must not exist, or we must have a ! or be appending */ ! if (*extra && access(extra, 0) == 0 && !bang && !append) { msg("File already exists - Use :w! to overwrite"); return; *************** *** 238,244 **** --- 242,252 ---- scan[i++] = '\n'; /* print the line */ + #if MINT + if ((*o_crlf ? twrite : write)(fd, scan, i) < i) + #else if (twrite(fd, scan, i) < i) + #endif { msg("Write failed"); break; *************** *** 1247,1253 **** } /* if the number is part of a larger word, then ignore this line */ ! if (*text && isalpha(text[-1])) { return (char *)0; } --- 1255,1262 ---- } /* if the number is part of a larger word, then ignore this line */ ! /* '_' included so it catches `...in function v_1ex:' -nox */ ! if (*text && (isalpha(text[-1]) || text[-1]=='_')) { return (char *)0; } *************** *** 1431,1436 **** --- 1440,1448 ---- char *extra; { BLK buf; + #if MINT + int fd, old2; + #endif /* if the file hasn't been saved, then complain unless ! */ if (tstflag(file, MODIFIED) && !bang) *************** *** 1440,1447 **** --- 1452,1467 ---- } /* build the command */ + #if MINT + /* some stupid shells won't grok `2>' :-( -nox */ + sprintf(buf.c, "%s %s ", (cmd == CMD_CC ? o_cc : o_make), extra); + qaddstr(buf.c); + qaddstr(REDIRECT); + qaddstr(ERRLIST); + #else sprintf(buf.c, "%s %s %s%s", (cmd == CMD_CC ? o_cc : o_make), extra, REDIRECT, ERRLIST); qaddstr(buf.c); + #endif addch('\n'); /* close the old errlist file, if any */ *************** *** 1451,1465 **** --- 1471,1510 ---- errfd = -3; } + #if MINT + close(creat(ERRLIST, 0666)); + if ((fd=open(ERRLIST, O_RDWR))==-1) + { + unlink(ERRLIST); + return; + } + suspend_curses(); + old2=dup(2); + dup2(fd, 2); + system(buf.c); + dup2(old2, 2); close(old2); + close(fd); + #else /* run the command, with curses temporarily disabled */ suspend_curses(); system(buf.c); + #endif resume_curses(mode == MODE_EX); if (mode == MODE_COLON) + #if 1 + /* `:' hit instead of CR, so let him escape... -nox */ + return; + #else mode = MODE_VI; + #endif /* run the "errlist" command */ cmd_errlist(MARK_UNSET, MARK_UNSET, cmd, bang, ERRLIST); + + /* avoid spurious `Hit ' after 1st error message -nox */ + /* (wich happened when cmd_errlist didn't have to change files...) */ + if (mode == MODE_VI) + refresh(); } #endif *************** *** 1748,1753 **** --- 1793,1802 ---- return; } #endif + #if MINT + if (!__mint) + return; + #endif move(LINES - 1, 0); if (tstflag(file, MODIFIED)) *************** *** 1760,1766 **** --- 1809,1820 ---- refresh(); suspend_curses(); func = signal(SIGTSTP, SIG_DFL); + #if MINT + /* earlier versions of MiNT had a problem with kill(0, ...) -nox */ + killpg(getpgrp(), SIGTSTP); + #else kill (0, SIGTSTP); + #endif /* the process stops and resumes here */ diff -c ./cmd2.c ../src/cmd2.c *** ./cmd2.c Tue May 12 14:18:52 1992 --- ../src/cmd2.c Wed May 13 18:28:12 1992 *************** *** 649,655 **** --- 649,659 ---- add(tomark, "\n"); /* for each chunk of text... */ + #if MINT + while ((rc = (*o_crlf ? tread : read)(fd, tmpblk.c, BLKSIZE - 1)) > 0) + #else while ((rc = tread(fd, tmpblk.c, BLKSIZE - 1)) > 0) + #endif { /* count newlines, convert NULs, etc. ... */ for (lines = 0, scan = tmpblk.c; rc > 0; rc--, scan++) diff -c ./config.h ../src/config.h *** ./config.h Tue May 12 14:18:54 1992 --- ../src/config.h Wed May 13 18:33:10 1992 *************** *** 82,87 **** --- 82,93 ---- # endif #endif + #if MINT + # ifdef TOS + # undef TOS + # endif + #endif + /* OS9/68000 */ #ifdef OSK # define COMPILED_BY "Microware C V2.3 Edition 40" *************** *** 125,130 **** --- 131,140 ---- # define TOS 0 /* Atari ST */ #endif + #ifndef MINT + # define MINT 0 /* Atari ST, gcc, MiNT */ + #endif + #ifndef AMIGA # define AMIGA 0 /* Commodore Amiga */ #endif *************** *** 146,152 **** #endif /* Minix has no predefines */ ! #if !BSD && !UNIXV && !UNIX7 && !MSDOS && !TOS && !AMIGA && !OSK && !COHERENT && !VMS # define MINIX 1 #else # define MINIX 0 --- 156,162 ---- #endif /* Minix has no predefines */ ! #if !BSD && !UNIXV && !UNIX7 && !MSDOS && !TOS && !AMIGA && !OSK && !COHERENT && !VMS && !MINT # define MINIX 1 #else # define MINIX 0 *************** *** 229,235 **** * a true function on all systems. The ttywrite() function is almost always * just a macro... */ ! #if !TOS && !AMIGA # define ttywrite(buf, len) write(1, buf, (unsigned)(len)) /* raw write */ #endif --- 239,245 ---- * a true function on all systems. The ttywrite() function is almost always * just a macro... */ ! #if !TOS && !AMIGA && !MINT # define ttywrite(buf, len) write(1, buf, (unsigned)(len)) /* raw write */ #endif *************** *** 259,273 **** extern char *getcwd(); /* text versa binary mode for read/write */ ! #if !TOS #define tread(fd,buf,n) read(fd,buf,(unsigned)(n)) #define twrite(fd,buf,n) write(fd,buf,(unsigned)(n)) #endif /**************************** Compiler quirks *********************************/ /* the UNIX version 7 and (some) TOS compilers, don't allow "void" */ ! #if UNIX7 || TOS # define void int #endif --- 269,290 ---- extern char *getcwd(); /* text versa binary mode for read/write */ ! #if !TOS && !MINT #define tread(fd,buf,n) read(fd,buf,(unsigned)(n)) #define twrite(fd,buf,n) write(fd,buf,(unsigned)(n)) #endif + #if MINT + extern int read(); + extern int tread(); + extern int write(); + extern int twrite(); + #endif + /**************************** Compiler quirks *********************************/ /* the UNIX version 7 and (some) TOS compilers, don't allow "void" */ ! #if (UNIX7 || TOS) && !NEWSTYLE # define void int #endif *************** *** 378,393 **** # endif #endif ! #if MSDOS || TOS /* do not change TMPNAME and SCRATCH*: they MUST begin with '%s\\'! */ ! # ifndef TMPDIR ! # define TMPDIR "C:\\tmp" /* directory where temp files live */ ! # endif ! # ifndef PRSVDIR ! # define PRSVDIR "C:\\preserve" /* directory where preserved file live */ ! # endif ! # ifndef PRSVINDEX ! # define PRSVINDEX "C:\\preserve\\Index" /* index of files in PRSVDIR */ # endif # define TMPNAME "%s\\elv_%x.%x" /* temp file */ # if MSDOS --- 395,422 ---- # endif #endif ! #if MSDOS || TOS || MINT /* do not change TMPNAME and SCRATCH*: they MUST begin with '%s\\'! */ ! # if !MINT ! # ifndef TMPDIR ! # define TMPDIR "C:\\tmp" /* directory where temp files live */ ! # endif ! # ifndef PRSVDIR ! # define PRSVDIR "C:\\preserve" /* directory where preserved file live */ ! # endif ! # ifndef PRSVINDEX ! # define PRSVINDEX "C:\\preserve\\Index" /* index of files in PRSVDIR */ ! # endif ! # else ! # ifndef TMPDIR ! # define TMPDIR "/tmp" /* directory where temp files live */ ! # endif ! # ifndef PRSVDIR ! # define PRSVDIR "/usr/preserve" /* directory where preserved file live */ ! # endif ! # ifndef PRSVINDEX ! # define PRSVINDEX "/usr/preserve/Index" /* index of files in PRSVDIR */ ! # endif # endif # define TMPNAME "%s\\elv_%x.%x" /* temp file */ # if MSDOS *************** *** 405,413 **** # endif /* MSDOS */ # define SCRATCHIN "%s\\siXXXXXX" /* DOS ONLY - output of filter program */ # define SCRATCHOUT "%s\\soXXXXXX" /* temp file used as input to filter */ ! # define SLASH '\\' # ifndef SHELL ! # if TOS # define SHELL "shell.ttp" /* default shell */ # else # define SHELL "command.com" /* default shell */ --- 434,446 ---- # endif /* MSDOS */ # define SCRATCHIN "%s\\siXXXXXX" /* DOS ONLY - output of filter program */ # define SCRATCHOUT "%s\\soXXXXXX" /* temp file used as input to filter */ ! # if !MINT ! # define SLASH '\\' ! # else ! # define SLASH '/' ! # endif # ifndef SHELL ! # if TOS || MINT # define SHELL "shell.ttp" /* default shell */ # else # define SHELL "command.com" /* default shell */ *************** *** 414,420 **** # endif # endif # define NEEDSYNC TRUE /* assume ":se sync" by default */ ! # if TOS && __GNUC__ /* probably on other systems, too */ # define REDIRECT "2>" /* GNUC reports on 2, others on 1 */ # define CC_COMMAND "gcc -c" # else --- 447,453 ---- # endif # endif # define NEEDSYNC TRUE /* assume ":se sync" by default */ ! # if (TOS || MINT) && __GNUC__ /* probably on other systems, too */ # define REDIRECT "2>" /* GNUC reports on 2, others on 1 */ # define CC_COMMAND "gcc -c" # else diff -c ./ctags.c ../src/ctags.c *** ./ctags.c Tue May 12 14:18:54 1992 --- ../src/ctags.c Wed May 13 22:13:48 1992 *************** *** 85,91 **** /* try to open the file for reading. The file must be opened in * "binary" mode because otherwise fseek() would misbehave under DOS. */ ! #if MSDOS || TOS file_fp = fopen(name, "rb"); #else file_fp = fopen(name, "r"); --- 85,91 ---- /* try to open the file for reading. The file must be opened in * "binary" mode because otherwise fseek() would misbehave under DOS. */ ! #if MSDOS || TOS || MINT file_fp = fopen(name, "rb"); #else file_fp = fopen(name, "r"); *************** *** 764,770 **** char **argv; { int i, j; ! #if MSDOS || TOS char **wildexpand(); #endif --- 764,770 ---- char **argv; { int i, j; ! #if MSDOS || TOS || MINT char **wildexpand(); #endif *************** *** 771,777 **** /* build the tables used by the ctype macros */ _ct_init(""); ! #if MSDOS || TOS argv = wildexpand(&argc, argv); #endif --- 771,777 ---- /* build the tables used by the ctype macros */ _ct_init(""); ! #if MSDOS || TOS || MINT argv = wildexpand(&argc, argv); #endif *************** *** 845,851 **** /*NOTREACHED*/ } ! #if MSDOS || TOS # define WILDCARD_NO_MAIN # include "wildcard.c" #endif --- 845,851 ---- /*NOTREACHED*/ } ! #if MSDOS || TOS || MINT # define WILDCARD_NO_MAIN # include "wildcard.c" #endif diff -c ./curses.c ../src/curses.c *** ./curses.c Tue May 12 14:18:56 1992 --- ../src/curses.c Wed May 13 18:28:26 1992 *************** *** 38,43 **** --- 38,46 ---- #if TOS # include #endif + #if MINT + # include + #endif #if OSK # include *************** *** 206,212 **** if (!termtype) #endif { ! #if ANY_UNIX write(2, "Environment variable TERM must be set\n", (unsigned)38); exit(2); #endif --- 209,215 ---- if (!termtype) #endif { ! #if ANY_UNIX || MINT write(2, "Environment variable TERM must be set\n", (unsigned)38); exit(2); #endif *************** *** 276,284 **** #endif } - static int curses_active = FALSE; /* Send any required termination strings. Turn off "raw" mode. */ void suspend_curses() { --- 279,288 ---- #endif } static int curses_active = FALSE; + extern int oldcurs; + /* Send any required termination strings. Turn off "raw" mode. */ void suspend_curses() { *************** *** 292,297 **** --- 296,302 ---- if (has_CQ) { do_CQ(); + oldcurs = 0; } #endif if (has_TE) /* GB */ *************** *** 726,731 **** --- 731,740 ---- } + #if MINT + extern int __mint; + int got_winch; + #endif /* This function gets the window size. It uses the TIOCGWINSZ ioctl call if * your system has it, or tgetnum("li") and tgetnum("co") if it doesn't. *************** *** 743,755 **** --- 752,780 ---- #ifdef SIGWINCH /* reset the signal vector */ + # if __GNUC__ + signal(SIGWINCH, (void(*)()) getsize); + # else signal(SIGWINCH, getsize); + # endif #endif /* get the window size, one way or another. */ lines = cols = 0; #ifdef TIOCGWINSZ + # if !MINT if (ioctl(2, TIOCGWINSZ, &size) >= 0) + # else + if (signo) + got_winch = 1; + + /* only MiNT versions >= 0.9 know TIOCGWINSZ; for older versions + and when running under vanilla TOS mntlib would return the + settings of the ST BIOS screeen driver, and that at least + doesn't help when we're not running on the console. -nox */ + + if (__mint >= 9 && ioctl(2, TIOCGWINSZ, &size) >= 0) + # endif { lines = size.ws_row; cols = size.ws_col; diff -c ./curses.h ../src/curses.h *** ./curses.h Tue May 12 14:18:56 1992 --- ../src/curses.h Wed May 13 18:28:30 1992 *************** *** 205,215 **** #define do_TI() VOIDBIOS(;, (void)ttywrite(TI, (unsigned)strlen(TI))) #define do_TE() VOIDBIOS(;, (void)ttywrite(TE, (unsigned)strlen(TE))) #ifndef NO_CURSORSHAPE ! # define do_CQ() VOIDBIOS(v_cs(), tputs(CQ, 1, faddch)) ! # define do_CX() VOIDBIOS(v_cs(), tputs(CX, 1, faddch)) ! # define do_CV() VOIDBIOS(v_cs(), tputs(CV, 1, faddch)) ! # define do_CI() VOIDBIOS(v_cb(), tputs(CI, 1, faddch)) ! # define do_CR() VOIDBIOS(v_cb(), tputs(CR, 1, faddch)) #endif #ifndef NO_COLOR # define do_aend() VOIDBIOS((vmode=A_NORMAL), endcolor()) --- 205,223 ---- #define do_TI() VOIDBIOS(;, (void)ttywrite(TI, (unsigned)strlen(TI))) #define do_TE() VOIDBIOS(;, (void)ttywrite(TE, (unsigned)strlen(TE))) #ifndef NO_CURSORSHAPE ! # if MINT /* ctputs() knows about #blink / #noblink and calling ST BIOS... */ ! # define do_CQ() VOIDBIOS(v_cs(), ctputs(CQ, 1, faddch)) ! # define do_CX() VOIDBIOS(v_cs(), ctputs(CX, 1, faddch)) ! # define do_CV() VOIDBIOS(v_cs(), ctputs(CV, 1, faddch)) ! # define do_CI() VOIDBIOS(v_cb(), ctputs(CI, 1, faddch)) ! # define do_CR() VOIDBIOS(v_cb(), ctputs(CR, 1, faddch)) ! # else ! # define do_CQ() VOIDBIOS(v_cs(), tputs(CQ, 1, faddch)) ! # define do_CX() VOIDBIOS(v_cs(), tputs(CX, 1, faddch)) ! # define do_CV() VOIDBIOS(v_cs(), tputs(CV, 1, faddch)) ! # define do_CI() VOIDBIOS(v_cb(), tputs(CI, 1, faddch)) ! # define do_CR() VOIDBIOS(v_cb(), tputs(CR, 1, faddch)) ! # endif #endif #ifndef NO_COLOR # define do_aend() VOIDBIOS((vmode=A_NORMAL), endcolor()) diff -c ./cut.c ../src/cut.c *** ./cut.c Tue May 12 14:18:56 1992 --- ../src/cut.c Wed May 13 18:28:34 1992 *************** *** 117,123 **** /* if nobody else needs it, then discard the tmp file */ if (i < 0) { ! #if MSDOS || TOS strcpy(cutfname, o_directory); if ((i = strlen(cutfname)) && !strchr(":/\\", cutfname[i - 1])) cutfname[i++] = SLASH; --- 117,123 ---- /* if nobody else needs it, then discard the tmp file */ if (i < 0) { ! #if MSDOS || TOS || MINT strcpy(cutfname, o_directory); if ((i = strlen(cutfname)) && !strchr(":/\\", cutfname[i - 1])) cutfname[i++] = SLASH; *************** *** 424,430 **** { char cutfname[50];/* name of an old temp file */ int fd; /* either tmpfd or the result of open() */ ! #if MSDOS || TOS int i; #endif --- 424,430 ---- { char cutfname[50];/* name of an old temp file */ int fd; /* either tmpfd or the result of open() */ ! #if MSDOS || TOS || MINT int i; #endif *************** *** 435,441 **** } else { ! #if MSDOS || TOS strcpy(cutfname, o_directory); if ((i = strlen(cutfname)) && !strchr(":/\\", cutfname[i-1])) cutfname[i++]=SLASH; --- 435,441 ---- } else { ! #if MSDOS || TOS || MINT strcpy(cutfname, o_directory); if ((i = strlen(cutfname)) && !strchr(":/\\", cutfname[i-1])) cutfname[i++]=SLASH; diff -c ./elvprsv.c ../src/elvprsv.c *** ./elvprsv.c Tue May 12 14:18:58 1992 --- ../src/elvprsv.c Wed May 13 18:28:38 1992 *************** *** 71,77 **** # include "prsvunix.c" #endif ! #if MSDOS || TOS # include "prsvdos.c" # define WILDCARD_NO_MAIN # include "wildcard.c" --- 71,77 ---- # include "prsvunix.c" #endif ! #if MSDOS || TOS || MINT # include "prsvdos.c" # define WILDCARD_NO_MAIN # include "wildcard.c" *************** *** 256,264 **** int i; char *when = "the editor went away"; ! #if MSDOS || TOS ! /* expand any wildcards in the command line */ _ct_init(""); argv = wildexpand(&argc, argv); #endif --- 256,264 ---- int i; char *when = "the editor went away"; ! #if MSDOS || TOS || MINT _ct_init(""); + /* expand any wildcards in the command line */ argv = wildexpand(&argc, argv); #endif *************** *** 291,294 **** --- 291,295 ---- preserve(argv[i], when); i++; } + exit(0); } diff -c ./elvrec.c ../src/elvrec.c *** ./elvrec.c Tue May 12 14:18:58 1992 --- ../src/elvrec.c Wed May 13 22:10:18 1992 *************** *** 18,23 **** --- 18,27 ---- void main P_((int, char **)); + #if MINT + extern int __mint; + #endif + void recover(basename, outname) char *basename; /* the name of the file to recover */ char *outname; /* the name of the file to write to */ *************** *** 36,53 **** if (basename) { #ifndef CRUNCH ! # if MSDOS || TOS if (!basename[0] || basename[1] != ':') # else if (basename[0] != SLASH) # endif { ! ptr = getcwd(pathname, sizeof pathname); if (ptr != pathname) { strcpy(pathname, ptr); } ptr = pathname + strlen(pathname); *ptr++ = SLASH; strcpy(ptr, basename); } --- 40,62 ---- if (basename) { #ifndef CRUNCH ! # if MSDOS || TOS || MINT if (!basename[0] || basename[1] != ':') # else if (basename[0] != SLASH) # endif { ! ptr = getcwd(pathname, (int) sizeof pathname); if (ptr != pathname) { strcpy(pathname, ptr); } ptr = pathname + strlen(pathname); + #if MINT + if (__mint && (*basename == '/' || *basename == '\\') && + (*pathname | 0x20) == 'u' && pathname[1] == ':') + ptr = pathname; + #endif *ptr++ = SLASH; strcpy(ptr, basename); } *************** *** 159,164 **** --- 168,178 ---- #if OSK fclose(from); setuid(0); + #endif + #if TOS || MINT + /* GEMDOS doesn't know how to unlink a file thats still open... + * it might just trash the filesystem instead :-( -nox */ + fclose(from); #endif /* delete the /usr/preserve file */ unlink(line); diff -c ./ex.c ../src/ex.c *** ./ex.c Tue May 12 14:18:58 1992 --- ../src/ex.c Sun Aug 9 23:05:02 1992 *************** *** 301,309 **** { /* read a line */ #ifdef CRUNCH ! cmdlen = vgets(':', cmdbuf, sizeof(cmdbuf)); #else ! cmdlen = vgets(*o_prompt ? ':' : '\0', cmdbuf, sizeof(cmdbuf)); #endif if (cmdlen < 0) { --- 301,309 ---- { /* read a line */ #ifdef CRUNCH ! cmdlen = vgets(':', cmdbuf, (int) sizeof(cmdbuf)); #else ! cmdlen = vgets(*o_prompt ? ':' : '\0', cmdbuf, (int) sizeof(cmdbuf)); #endif if (cmdlen < 0) { *************** *** 665,670 **** --- 665,672 ---- int len; /* length of the ".exrc" file */ #ifdef CRUNCH + #undef TINYSTACK + #define TINYSTACK 0 /* small address space - we need to conserve space */ /* !!! kludge: we use U_text as the buffer. This has the side-effect *************** *** 675,684 **** --- 677,695 ---- # if TINYSTACK /* small stack - we need to conserve space */ + # if TOS || MINT + /* TOS too has a limited stack, but enuf space on heap... -nox */ + char *U_text = malloc(4096); + + if (!U_text) + /* ...well, usually. :-) */ + return 0; + # else /* !!! kludge: we use U_text as the buffer. This has the side-effect * of interfering with the shift-U visual command. Disable shift-U. */ U_line = 0L; + # endif # else /* This is how we would *like* to do it -- with a large buffer on the * stack, so we can handle large .exrc files and also recursion. *************** *** 693,704 **** --- 704,722 ---- { return 0; } + #if TINYSTACK && (TOS || MINT) + len = tread(fd, U_text, 4096); + #else len = tread(fd, U_text, sizeof U_text); + #endif close(fd); /* execute the string */ exstring(U_text, len, ctrl('V')); + #if TINYSTACK && (TOS || MINT) + free(U_text); + #endif return 1; } diff -c ./input.c ../src/input.c *** ./input.c Tue May 12 14:19:00 1992 --- ../src/input.c Wed May 13 21:11:16 1992 *************** *** 338,344 **** --- 338,349 ---- key[0] = getkey(when); #endif #ifndef NO_VISIBLE + #if 0 + /* hmm :-) -nox */ if (key[0] != '\0' && V_from != MARK_UNSET) + #else + if (*key && *key != ctrl('O') && V_from != MARK_UNSET) + #endif { msg("Can't modify text during a selection"); beep(); *************** *** 575,581 **** --- 580,591 ---- if (m != cursor) { m = adjmove(cursor, m, (*key == 'j' || *key == 'k' ? NCOL|FINL : FINL)); + #if 0 + /* try typing characters after on an empty line :-) -nox */ if (*key == '$' || (*key == 'l' && m <= cursor)) + #else + if (plen && (*key == '$' || (*key == 'l' && m <= cursor))) + #endif { m++; } diff -c ./main.c ../src/main.c *** ./main.c Tue May 12 14:19:00 1992 --- ../src/main.c Wed May 13 18:28:54 1992 *************** *** 28,33 **** --- 28,37 ---- static init_digraphs(); #endif + #if MINT + extern int __mint; + #endif + /*---------------------------------------------------------------------*/ #if AMIGA *************** *** 50,57 **** --- 54,74 ---- char *str; char *tag = (char *)0; + #if MINT + if (!__mint && isatty(0)) + *o_stbios = 1; + + /* see if that helps against those strange redraw problems... -nox */ + _malloczero(1); + #endif + /* set mode to MODE_VI or MODE_EX depending on program name */ + #if TOS || MINT + /* some TOS shells know nothing about argv[0]... -nox */ + switch (**argv ? argv[0][strlen(argv[0]) - 1] : 's') + #else switch (argv[0][strlen(argv[0]) - 1]) + #endif { case 'x': /* "ex" */ mode = MODE_EX; *************** *** 92,108 **** signal(SIGHUP, (void(*)()) deathtrap); # endif # ifndef DEBUG ! # ifdef SIGILL signal(SIGILL, (void(*)()) deathtrap); ! # endif ! # ifdef SIGBUS signal(SIGBUS, (void(*)()) deathtrap); ! # endif ! # ifdef SIGSEGV signal(SIGSEGV, (void(*)()) deathtrap); ! # endif ! # ifdef SIGSYS signal(SIGSYS, (void(*)()) deathtrap); # endif # endif /* !DEBUG */ # ifdef SIGPIPE --- 109,129 ---- signal(SIGHUP, (void(*)()) deathtrap); # endif # ifndef DEBUG ! # if !MINT ! /* MiNT doesn't have memory protection, so trying to preserve files ! after one of these would be a bit risky... */ ! # ifdef SIGILL signal(SIGILL, (void(*)()) deathtrap); ! # endif ! # ifdef SIGBUS signal(SIGBUS, (void(*)()) deathtrap); ! # endif ! # ifdef SIGSEGV signal(SIGSEGV, (void(*)()) deathtrap); ! # endif ! # ifdef SIGSYS signal(SIGSYS, (void(*)()) deathtrap); + # endif # endif # endif /* !DEBUG */ # ifdef SIGPIPE *************** *** 171,176 **** --- 192,208 ---- } # endif #endif + #if MINT + if (!strcmp(has_KL, "#K") && !strcmp(has_KR, "#M")) { + *o_keytime = 1; + + mapkey("#a", "u", WHEN_VICMD|WHEN_INMV, ""); + mapkey("#b", "\\", WHEN_VICMD|WHEN_INMV, ""); + mapkey("#s", "B", WHEN_VICMD|WHEN_INMV, "^"); + mapkey("#t", "W", WHEN_VICMD|WHEN_INMV, "^"); + mapkey("#7", "v", WHEN_VICMD|WHEN_INMV, "sh-"); + } + #endif #ifndef NO_DIGRAPH init_digraphs(); *************** *** 286,292 **** strcat(args, " "); strcat(args, argv[i]); } ! #if MSDOS || TOS /* expand wildcard characters, if necessary */ if (strchr(args, '*') || strchr(args, '?')) { --- 318,324 ---- strcat(args, " "); strcat(args, argv[i]); } ! #if MSDOS || TOS || MINT /* expand wildcard characters, if necessary */ if (strchr(args, '*') || strchr(args, '?')) { *************** *** 338,344 **** str = getenv(EXINIT); if (str) { ! exstring(str, strlen(str), ctrl('V')); } #endif --- 370,376 ---- str = getenv(EXINIT); if (str) { ! exstring(str, (int) strlen(str), ctrl('V')); } #endif diff -c ./makefile ../src/makefile *** ./makefile Mon Aug 10 00:30:22 1992 --- ../src/makefile Sun Aug 9 21:16:50 1992 *************** *** 0 **** --- 1,741 ---- + # combined Makefile for ELVIS - a clone of `vi` + # + # After editing this Makefile as described below, you should... + # + # Use `make` to compile all programs + # Use `make install` to copy the programs to the BIN directory + # Use `make clean` to remove all object files + # Use `make clobber` to remove everything except source & documentation + # Use `make uue` to produce uuencoded compressed tar archives of the source + # Use `make sh` to produce shar archives of the source + # + # Several groups of Makefile settings are included below. Choose *ONE* group + # of settings for your particular system, and leave the others commented out. + # The meanings of these settings are: + # OBJ the filename extension for unlinked object files -- usually .o + # EXE filename extension for elvis executable file -- .exe, .tpp or null + # COM filename extension for executable support files -- .com, .tpp or null + # EXTRA version-specific object files used in elvis + # EXTRA2 version-specific object files used in elvis & elvrec + # LIBS any special libraries, such as "-ltermcap" + # BIN directory where executables should be installed + # CC the C compiler command, possibly with "memory model" flags + # CFLAGS compiler flags used to select compile-time options + # LNK the linker command needed to link OBJ files (if not cc) + # LFLAGS linker flags used to select link-time options + # SMALL flag for special small memory model compilation -- usually null + # OF link flag to control the output file's name -- usually -o + # RF flag used to denote "compile but don't link" -- usually -c + # PROGS the list of all programs + # CHMEM any extra commands to be run after ELVIS is linked + # SORT if the "tags" file must be sorted, then SORT=-DSORT + # RM the name of a program that deletes files + # CP name of a program that copies files -- copy or cp, usually + # SYS type of system & compiler: unx/tos/os9/dos (maybe vms?) + # DUMMY usually nothing, but OS9 needs "dummy" + # CFG name of compiler configuration file -- usually null + + #---- These settings are recommended for System-V UNIX and SCO XENIX-386 ---- + #OBJ= .o + #EXE= + #COM= + #EXTRA= unix$(OBJ) + #EXTRA2= + #LIBS= -lterm + #BIN= /usr/local/bin + #CC= cc + #CFLAGS= -DM_SYSV -O -DNO_SHIFT_FKEYS + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \ + # elvprsv$(COM) + #CHMEM= + #SORT= -DSORT + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for SCO XENIX-286 ---- + #OBJ= .o + #EXE= + #COM= + #EXTRA= unix$(OBJ) + #EXTRA2= + #LIBS= -ltcap + #BIN= /usr/local/bin + #CC= cc -M2m -i + #CFLAGS= -Ox -DCS_IBMPC + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \ + # elvprsv$(COM) + #CHMEM= + #SORT= -DSORT + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for BSD 4.3 UNIX and SunOS ---- + #OBJ= .o + #EXE= + #COM= + #EXTRA= unix$(OBJ) + #EXTRA2= + #LIBS= -ltermcap + #BIN= /usr/local/bin + #CC= cc + #CFLAGS= -Dbsd -O + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) elvprsv$(COM) + #CHMEM= + #SORT= -DSORT + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for Coherent ---- + #OBJ=.o + #EXE= + #COM= + #EXTRA= unix$(OBJ) tinyprnt$(OBJ) + #EXTRA2= + #LIBS= -lterm + #BIN= /usr/bin + #CC= cc + #CFLAGS= -O -DCOHERENT -VSUVAR -DCRUNCH -DNO_CHARATTR -DNO_CURSORSHAPE \ + # -DNO_DIGRAPH -DNO_MKEXRC -DNO_POPUP -DNO_FKEYS -DNO_ABBR + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \ + # elvprsv$(COM) + #CHMEM= fixstack 2000 elvis$(EXE) + #SORT= + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for Minix-ST ---- + #OBJ= .o + #EXE= + #COM= + #EXTRA= unix$(OBJ) + #EXTRA2= + #LIBS= + #BIN= /usr/bin + #CC= cc + ##CC= gcc -s + #CFLAGS= + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \ + # elvprsv$(COM) + #CHMEM= chmem =18000 elvis$(EXE) + #SORT= + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for Minix-PC ---- + #OBJ= .s + #EXE= + #COM= + #EXTRA= tinytcap$(OBJ) unix$(OBJ) tinyprnt$(OBJ) + #EXTRA2= + #LIBS= + #BIN= /usr/bin + #CC= cc -i + #CFLAGS= -O -DCRUNCH \ + # -DNO_MKEXRC -DNO_CURSORSHAPE -DNO_CHARATTR -DNO_SHOWMODE \ + # -DNO_MODELINE -DNO_OPTCOLS -DNO_DIGRAPH -DNO_EXTENSIONS \ + # -DNO_ERRLIST -DNO_FKEY -DNO_VISIBLE -DNO_COLOR -DNO_POPUP + ###(not -NO_AT -DNO_SENTENCE -DNO_ABBR -DNO_RECYCLE -DNO_MAGIC -DNO_CHARSEARCH) + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= eval + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \ + # elvprsv$(COM) + #CHMEM= + #SORT= + #RM= rm -f + #CP= cp + #SYS= unx + #DUMMY= + #CFG= + + #---- These settings are recommended for Amiga port done using Aztec 5.2b ---- + # For AmigaDOS 2.04, you're all set! Its the default target! + #OBJ= .o + #EXE= + #COM= + #EXTRA= amiga$(OBJ) amitty$(OBJ) amisysio$(OBJ) + #EXTRA2= tinytcap$(OBJ) + #LIBS= -lc + #BIN= sys:utilities + #CC= cc + #CFLAGS= -sob -Damiga + #LNK= ln + #LFLAGS= + #SMALL= + #OF= -o + #RF= + #EVAL= + #PROGS1= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) + #PROGS2= elvprsv$(COM) ex$(COM) vi$(COM) view$(COM) input$(COM) + #PROGS= $(PROGS1) $(PROGS2) + #CHMEM= + #SORT= + #RM= delete + #CP= copy + #SYS= ami + #DUMMY= + #CFG= + + #---- These settings are recommended for MS-DOS + MS-C + NDMAKE ---- + #OBJ= .obj + #EXE= .exe + #COM= .exe # .com might work, try it + #EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ) + #EXTRA2= + #LIBS= + #BIN= c:\dos + #CC= cl + #CFLAGS= -O -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS + #SMALL= /AM + #OF= -o + #RF= -c + #EVAL= + #PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM) + #PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM) + #PROGS= $(PROGS1) $(PROGS2) + #CHMEM= + #SORT= + #RM= del + #CP= copy + #SYS= dos + #DUMMY= + #CFG= + + ##---- These settings are recommended for MS-DOS + TURBO/BORLAND C ---- + ## CFG: name of the compiler config and response files + ## TC_LIB & TC_INC: location of standard libraries and header files. + #OBJ= .obj + #EXE= .exe + #COM= .com + #EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ) + #EXTRA2= + #LIBS=@borland.rsp + #BIN= c:\bin + #CFG= borland.cfg borland.rsp + #CC= bcc + #TC_LIB= c:\bcc\lib + #TC_INC= c:\bcc\include + #CFLAGS= +borland.cfg + ## uncomment next line iff using bcc, and you want to use pre-compiled headers + #HDRS= -H -H=borland.hdr + ## uncomment next line to use med memory model for elvis + ##CRNCH= -DCRUNCH -mm + #TC_CFLAGS1= -ml -O -f- -w- -v -vi- -G- -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS + #TC_CFLAGS2= $(HDRS) $(CRNCH) -I$(TC_INC) -L$(TC_LIB) + ## extra flags for compiling support programs + #SMALL= -mt -lt -H- -v- + ## extra flags for linking elvis (strip symbols) + #EFLAGS= -v- + #OF= -e + #RF= -c + #EVAL= + #PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM) + #PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM) + #PROGS= $(PROGS1) $(PROGS2) + #CHMEM= + #SORT= + #RM= del + #CP= copy + #SYS= dos + #DUMMY= + ##source file compilation rule: + #.c.obj: + # $(CC) $(CFLAGS) $(RF) {$< } + + #---- These settings can almost make DOS executables using the XENIX compiler + #OBJ= .o + #EXE= .exe + #COM= .exe # .com might work, try it + #EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ) + #EXTRA2= + #LIBS= + #BIN= a: + #CC= cc -M2m -dos -F 4000 + #CFLAGS= -O -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS -Dvolatile= -Dconst= + #SMALL= + #OF= -o "" + #RF= -c + #EVAL= + #PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM) + #PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM) + #PROGS= $(PROGS1) $(PROGS2) + #CHMEM= + #SORT= + #RM= rm -f + #CP= doscp -r + #SYS= xdos + #DUMMY= + #CFG= + + #--- These settings are recommended for Atari TOS + Mark Williams C or Gnu C ---- + #OBJ= .o + #EXE= .ttp + #COM= .ttp + #EXTRA= sysdos$(OBJ) tinytcap$(OBJ) + #EXTRA2= atari$(OBJ) + #LIBS= + #BIN= c:\ # + #CC= cc -VPEEP + ##CC= gcc -s + #CFLAGS= -O -DCS_IBMPC -DCS_SPECIAL + #SMALL= + #OF= -o + #RF= -c + #EVAL= + #PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) wildcard$(COM) \ + # shell$(COM) fmt$(COM) elvprsv$(COM) + #CHMEM= @echo -n + #SORT= + #RM= rm -f + #CP= copy + #SYS= tos + #DUMMY= + #CFG= + + #---- These settings are recommended for Atari TOS + gcc + MiNT libraries ---- + OBJ=.o + EXE=.ttp + COM=.ttp + EXTRA= sysdos$(OBJ) atari$(OBJ) + EXTRA2= + BIN= c:\\bin + CC= gcc + LIBS= -ltermcap -liio + LIBIIO= -liio + CFLAGS= -O -Wall -fomit-frame-pointer -fcombine-regs -fstrength-reduce -DMINT -DCS_IBMPC -DCS_SPECIAL -DSMOOTHREDRAW + SMALL= + OF= -o + RF= -c + MYNAME= myname.c + PROGS= elvis$(EXE) ex$(COM) vi$(COM) view$(COM) input$(COM) \ + ctags$(COM) ref$(COM) elvrec$(COM) wildcard$(COM) \ + shell$(COM) fmt$(COM) elvprsv$(COM) + CHMEM= makefast elvis$(EXE) + SORT= + RM= rm -f + CP= cp + SYS= tos + DUMMY= + + #---- These settings are recommended for OS-9/68K V2.3 ---- + #OBJ= .r + #EXE= + #COM= + #EXTRA= tinyprnt$(OBJ) + #EXTRA2= osk$(OBJ) + #LIBS= -l=/dd/lib/termlib.l + #BIN= /dd/usr/cmds + #CC= cc + #ODIR= /dd/usr/src/elvis + #CFLAGS= -gq -m=2 -DNO_CURSORSHAPE + #SMALL= + #OF= -f=$(ODIR)/ + #RF= -r + #EVAL= + #PROGS= elvis$(EXE) vi$(COM) view$(COM) input$(COM) ctags$(COM) ref$(COM) \ + # elvrec$(COM) fmt$(COM) elvprsv$(COM) + #PROGS1= + #PROGS2= + #CHMEM= touch elvis$(EXE) + #SORT= + #RM= del *.stb *.dbg + #CP= copy + #SYS= os9 + #DUMMY= dummy + #CFG= + #TC_CFLAGS1= + #TC_CFLAGS2= + #EFLAGS= + #LNK= + #LFLAGS= + + ##---- These settings probably won't work for VAX/VMS, but they might ---- + #OBJ= .obj + #EXE= .exe + #COM= .exe + #EXTRA= tinytcap$(OBJ) + #EXTRA2= vmsio$(OBJ) + #LIBS= + #BIN + #CC= cc + #CFLAGS= /define=NO_CURSORSHAPE /define=INTERNAL_TAGS + #SMALL= + #OF= /exe= + #RF= + #PROGS= elvis.exe elvprsv.exe elvrec.exe ctags.exe ref.exe + #CHMEM= + #SORT= + #RM= del + #CP= copy + #SYS= vms + #DUMMY= + #CFG= vmsopt.opt + # + ##compilation rules + #.exe.c: + # $(CC) $<.c + # link $(OF)$<.exe,vmslink/opt + #.obj.c: + # $(CC) $(CFLAGS) $<.c + + ########################################################################### + ########################################################################### + ### ### + ### The rest of this Makefile contains no user-serviceable parts ### + ### ### + ########################################################################### + ########################################################################### + + OBJS1= blk$(OBJ) cmd1$(OBJ) cmd2$(OBJ) ctype$(OBJ) curses$(OBJ) cut$(OBJ) + OBJS2= ex$(OBJ) input$(OBJ) main$(OBJ) misc$(OBJ) modify$(OBJ) move1$(OBJ) + OBJS3= move2$(OBJ) move3$(OBJ) move4$(OBJ) move5$(OBJ) opts$(OBJ) recycle$(OBJ) + OBJS4= redraw$(OBJ) regexp$(OBJ) regsub$(OBJ) system$(OBJ) tio$(OBJ) tmp$(OBJ) + OBJS5= vars$(OBJ) vcmd$(OBJ) vi$(OBJ) + OBJS= $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5) + + ALIAS= alias$(OBJ) + + SRC1= Elvis.lnk Elvis.mak Elvis.prj Makefile.mix alias.c atari.c \ + ctags.c pc.c ref.c shell.c sysdos.c myname.c + SRC2= elvrec.c wildcard.c fmt.c profile.sh osk.c osk.h elvprsv.c unix.c \ + blk.c config.h + SRC3= cmd1.c cmd2.c curses.c + SRC4= curses.h cut.c ex.c input.c main.c misc.c + SRC5= modify.c move1.c move2.c move3.c move4.c move5.c opts.c recycle.c redraw.c + SRC6= regexp.c regexp.h regsub.c tinytcap.c tio.c tmp.c + SRC7= system.c vars.c vcmd.c vi.c vi.h tinyprnt.c + SRC8= ctype.c ctype.h borland.h novice.rc prsvdos.c prsvunix.c \ + vmsbuild.com vmsio.c vmslink.opt vmsread.me vmssetup.com vmswild.c \ + amiga.c amiprsv.c amistat.h amisysio.c amitty.c amiwild.c + + ########################################################################### + all: $(PROGS) + @echo done. + + elvis$(EXE): linkelv.$(SYS) + @echo "elvis linked." + + ctags$(COM): $(CFG) ctags.c wildcard.c + $(CC) $(CFLAGS) $(SMALL) $(SORT) $(OF)ctags$(COM) ctags.c $(EXTRA2) $(LIBIIO) + + ref$(COM): $(CFG) ref.c + $(CC) $(CFLAGS) $(SMALL) $(OF)ref$(COM) ref.c $(LIBIIO) + + elvrec$(COM): $(CFG) elvrec.c + $(CC) $(CFLAGS) $(SMALL) $(OF)elvrec$(COM) elvrec.c $(EXTRA2) $(LIBIIO) + + ex$(COM): linkex.$(SYS) + @echo "ex done." + + vi$(COM): linkvi.$(SYS) + @echo "vi done." + + view$(COM): linkview.$(SYS) + @echo "view done." + + input$(COM): linkinput.$(SYS) + @echo "input done." + + shell$(COM): $(CFG) shell.c + $(CC) $(CFLAGS) $(SMALL) $(OF)shell$(COM) shell.c $(LIBIIO) + + wildcard$(COM): $(CFG) wildcard.c + $(CC) $(CFLAGS) $(SMALL) $(OF)wildcard$(COM) wildcard.c ctype$(OBJ) $(LIBIIO) + + fmt$(COM): $(CFG) fmt.c + $(CC) $(CFLAGS) $(SMALL) $(OF)fmt$(COM) fmt.c $(EXTRA2) $(LIBIIO) + + elvprsv$(COM): $(CFG) elvprsv.c amiprsv.c prsvunix.c prsvdos.c wildcard.c + $(CC) $(CFLAGS) $(SMALL) $(OF)elvprsv$(COM) elvprsv.c ctype$(OBJ) $(LIBIIO) + + ############################################################################## + # "It all depends..." + + $(OBJS): vi.h curses.h config.h regexp.h ctype.h + + ############################################################################## + # The way to link elvis is system dependent, and maybe compiler dependent too. + + # elvis executable compilation rule for: AmigaDOS + linkelv.ami: $(OBJS) $(EXTRA) $(EXTRA2) + $(LNK) $(LFLAGS) $(OF)elvis$(EXE) $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS) + $(CHMEM) + @touch $@ + + # elvis executable compilation rule for: all unix, os9, tos, msc dos + linkelv.unx linkelv.tos linkelv.os9 linkelv.cl: $(OBJS) $(EXTRA) $(EXTRA2) + $(CC) $(CFLAGS) $(OF)elvis$(EXE) $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS) + $(CHMEM) + @touch $@ + + linkelv.dos: linkelv.$(CC) + + # elvis executable compilation rule for: borland tcc, bcc + linkelv.bcc linkelv.tcc: $(CFG) $(OBJS) $(EXTRA) $(EXTRA2) + $(CC) $(CFLAGS) $(LIBS) + @echo done > linkelv.$(CC) + + linkelv.vms: $(OBJS) $(EXTRA) $(EXTRA2) + link$(OF)elvis.exe main,$(CFG)/opt + + ############################################################################## + + # borland/turbo c config files + borland.cfg: $(DUMMY) + echo $(TC_CFLAGS1)> borland.cfg + echo $(TC_CFLAGS2)>> borland.cfg + + borland.rsp: $(DUMMY) + echo $(EFLAGS) $(OF)elvis$(EXE) > borland.rsp + echo $(OBJS1)>> borland.rsp + echo $(OBJS2)>> borland.rsp + echo $(OBJS3)>> borland.rsp + echo $(OBJS4)>> borland.rsp + echo $(OBJS5)>> borland.rsp + echo $(EXTRA)>> borland.rsp + + ############################################################################## + # elvis executable compilation rule for: AmigaDOS + linkex.ami: alias.o + $(LNK) $(LFLAGS) $(OF)ex$(EXE) alias.o $(LIBS) + + linkex.unx linkex.xdos linkex.dos linkex.vms: $(CFG) alias.c + $(CC) $(CFLAGS) $(SMALL) $(OF)ex$(COM) alias.c + + linkex.tos: $(CFG) alias$(OBJ) $(MYNAME) + $(CC) $(CFLAGS) $(SMALL) -DMYNAME=\"ex\" $(OF)ex$(COM) alias$(OBJ) $(MYNAME) $(LIBIIO) + @touch $@ + + linkex.os9: $(DUMMY) + @echo done >/nil + + linkvi.ami linkvi.unx linkvi.xdos linkvi.dos linkvi.vms: ex$(COM) + $(CP) ex$(COM) vi$(COM) + + linkvi.tos: $(CFG) alias$(OBJ) $(MYNAME) + $(CC) $(CFLAGS) $(SMALL) -DMYNAME=\"vi\" $(OF)vi$(COM) alias$(OBJ) $(MYNAME) $(LIBIIO) + @touch $@ + + linkvi.os9: alias.r + $(CC) $(CFLAGS) $(OF)vi$(COM) alias.r + @touch $@ + + linkview.ami linkview.unx linkview.xdos linkview.dos linkview.vms: ex$(COM) + $(CP) ex$(COM) view$(COM) + + linkview.tos: $(CFG) alias$(OBJ) $(MYNAME) + $(CC) $(CFLAGS) $(SMALL) -DMYNAME=\"view\" $(OF)view$(COM) alias$(OBJ) $(MYNAME) $(LIBIIO) + @touch $@ + + linkview.os9: alias.r + $(CC) $(CFLAGS) $(OF)view$(COM) alias.r + @touch $@ + + linkinput.ami linkinput.unx linkinput.xdos linkinput.dos linkinput.vms: ex$(COM) + $(CP) ex$(COM) input$(COM) + + linkinput.tos: $(CFG) alias$(OBJ) $(MYNAME) + $(CC) $(CFLAGS) $(SMALL) -DMYNAME=\"input\" $(OF)input$(COM) alias$(OBJ) $(MYNAME) $(LIBIIO) + @touch $@ + + linkinput.os9: alias.r + $(CC) $(CFLAGS) $(OF)input$(COM) alias.r + @touch $@ + + ############################################################################## + # installation is system-dependent + + install: $(PROGS) inst.$(SYS) + @echo Installation complete. + + inst.ami: $(DUMMY) + MakeDir $(BIN)/Elvis + Assign Elvis: $(BIN)/Elvis + $(CP) $(PROGS) Elvis: + @echo ::: YOU STILL NEED TO EDIT THE S:STARTUP-SEQUENCE FILE, + @echo ::: TO HAVE TEMP FILES PRESERVED AFTER A SYSTEM CRASH. + + + inst.unx: $(DUMMY) + $(CP) $(PROGS) $(BIN) + (cd $(BIN); chmod 755 $(PROGS)) + (cd $(BIN); chown bin $(PROGS)) + (cd $(BIN); chown root elvprsv$(COM) elvrec$(COM)) + (cd $(BIN); chmod 4755 elvprsv$(COM) elvrec$(COM)) + -ln $(BIN)/elvis $(BIN)/vi + -ln $(BIN)/elvis $(BIN)/ex + -ln $(BIN)/elvis $(BIN)/view + -ln $(BIN)/elvis $(BIN)/input + @echo ::: YOU STILL NEED TO EDIT THE /ETC/RC FILE, OR WHATEVER, + @echo ::: TO HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH. + + inst.dos: $(DUMMY) + for %a in ($(PROGS1)) do copy %a $(BIN) + for %a in ($(PROGS2)) do copy %a $(BIN) + $(CP) $(BIN)\ex$(COM) $(BIN)\vi$(COM) + $(CP) $(BIN)\ex$(COM) $(BIN)\view$(COM) + $(CP) $(BIN)\ex$(COM) $(BIN)\input$(COM) + @echo ::: YOU STILL NEED TO EDIT YOUR AUTOEXEC.BAT FILE TO + @echo ::: HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH. + + inst.xdos: $(DUMMY) + $(CP) $(PROGS) $(BIN) + $(CP) ex$(COM) $(BIN)/vi$(COM) + $(CP) ex$(COM) $(BIN)/view$(COM) + $(CP) ex$(COM) $(BIN)/input$(COM) + @echo ::: YOU STILL NEED TO EDIT THE AUTOEXEC.BAT FILE TO + @echo ::: HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH. + + inst.tos: $(DUMMY) + $(CP) $(PROGS) $(BIN) + + inst.os9: $(DUMMY) + $(CP) $(PROGS) -rw=$(BIN) + chd $(BIN); attr -epenprnpw $(PROGS) + @echo ::: YOU STILL NEED TO EDIT THE /DD/STARTUP FILE, OR WHATEVER, + @echo ::: TO HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH. + + inst.vms: $(DUMMY) + @echo how? + + ############################################################################## + # clobbering is system dependent, because DOS's "copy" can't handle multiple + # filenames + + clobber: clean clob.$(SYS) + @echo -n + + clean: $(DUMMY) + $(RM) *$(OBJ) + $(RM) elvis?.uue + $(RM) elvis?.sh + $(RM) core + + clob.unx clob.tos clob.os9 clob.xdos clob.vms: $(DUMMY) + $(RM) tags refs $(PROGS) + + clob.dos : $(DUMMY) + for %a in ($(PROGS1)) do $(RM) %a + for %a in ($(PROGS2)) do $(RM) %a + for %a in (tags refs) do $(RM) %a + + ############################################################################## + + uue: elvis1.uue elvis2.uue elvis3.uue elvis4.uue elvis5.uue elvis6.uue elvis7.uue elvis8.uue + + elvis1.uue: $(SRC1) + tar cf elvis1.tar $(SRC1) + compress -b13 elvis1.tar + uuencode elvis1.tar.Z elvis1.uue + $(RM) elvis1.tar* + + elvis2.uue: $(SRC2) + tar cf elvis2.tar $(SRC2) + compress -b13 elvis2.tar + uuencode elvis2.tar.Z elvis2.uue + $(RM) elvis2.tar* + + elvis3.uue: $(SRC3) + tar cf elvis3.tar $(SRC3) + compress -b13 elvis3.tar + uuencode elvis3.tar.Z elvis3.uue + $(RM) elvis3.tar* + + elvis4.uue: $(SRC4) + tar cf elvis4.tar $(SRC4) + compress -b13 elvis4.tar + uuencode elvis4.tar.Z elvis4.uue + $(RM) elvis4.tar* + + elvis5.uue: $(SRC5) + tar cf elvis5.tar $(SRC5) + compress -b13 elvis5.tar + uuencode elvis5.tar.Z elvis5.uue + $(RM) elvis5.tar* + + elvis6.uue: $(SRC6) + tar cf elvis6.tar $(SRC6) + compress -b13 elvis6.tar + uuencode elvis6.tar.Z elvis6.uue + $(RM) elvis6.tar* + + elvis7.uue: $(SRC7) + tar cf elvis7.tar $(SRC7) + compress -b13 elvis7.tar + uuencode elvis7.tar.Z elvis7.uue + $(RM) elvis7.tar* + + elvis8.uue: $(SRC8) + tar cf elvis8.tar $(SRC8) + compress -b13 elvis8.tar + uuencode elvis8.tar.Z elvis8.uue + $(RM) elvis8.tar* + + ############################################################################## + + sh: elvis1.sh elvis2.sh elvis3.sh elvis4.sh elvis5.sh elvis6.sh elvis7.sh elvis8.sh + + elvis1.sh: $(SRC1) + shar $(SRC1) >elvis1.sh + + elvis2.sh: $(SRC2) + shar $(SRC2) >elvis2.sh + + elvis3.sh: $(SRC3) + shar $(SRC3) >elvis3.sh + + elvis4.sh: $(SRC4) + shar $(SRC4) >elvis4.sh + + elvis5.sh: $(SRC5) + shar $(SRC5) >elvis5.sh + + elvis6.sh: $(SRC6) + shar $(SRC6) >elvis6.sh + + elvis7.sh: $(SRC7) + shar $(SRC7) >elvis7.sh + + elvis8.sh: $(SRC8) + shar $(SRC8) >elvis7.sh + + ############################################################################## + + elvis_t.Z: $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8) + tar cfbZ elvis_t.Z 20 $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8) Makefile diff -c ./myname.c ../src/myname.c *** ./myname.c Mon Aug 10 00:30:14 1992 --- ../src/myname.c Wed May 13 18:28:58 1992 *************** *** 0 **** --- 1,4 ---- + /* myname.c: default argv[0] value for alias.c on TOS/MINT */ + + char myname[] = MYNAME; + diff -c ./opts.c ../src/opts.c *** ./opts.c Tue May 12 14:19:04 1992 --- ../src/opts.c Wed May 13 18:29:02 1992 *************** *** 124,129 **** --- 124,134 ---- char o_smd[1] = {FALSE}; #endif + #if MINT + char o_stbios[1] = {FALSE}; + char o_crlf[1] = {TRUE}; + #endif + /* The following describes the names & types of all options */ #define BOOL 0 *************** *** 160,165 **** --- 165,173 ---- { "charattr", "ca", BOOL, CANSET|MR, o_charattr }, #endif { "columns", "co", NUM, SET|NOSAVE|MR, o_columns }, + #if MINT + { "crlf", "cr", BOOL, CANSET , o_crlf }, + #endif #ifndef NO_DIGRAPH { "digraph", "dig", BOOL, CANSET, o_digraph }, #endif *************** *** 232,237 **** --- 240,248 ---- #endif { "shiftwidth", "sw", NUM, CANSET, o_shiftwidth }, { "sidescroll", "ss", NUM, CANSET, o_sidescroll }, + #if MINT + { "stbios", "st", BOOL, RCSET | SET , o_stbios }, + #endif { "sync", "sy", BOOL, CANSET, o_sync }, { "tabstop", "ts", NUM, CANSET|MR, o_tabstop }, #ifndef CRUNCH *************** *** 253,259 **** { NULL, NULL, 0, CANSET, NULL } }; - /* This function initializes certain options from environment variables, etc. */ void initopts() { --- 264,269 ---- *************** *** 282,288 **** } #endif ! #if AMIGA || MSDOS || TOS if ((val = getenv("TMP")) /* yes, ASSIGNMENT! */ || (val = getenv("TEMP"))) strcpy(o_directory, val); --- 292,298 ---- } #endif ! #if AMIGA || MSDOS || TOS || MINT if ((val = getenv("TMP")) /* yes, ASSIGNMENT! */ || (val = getenv("TEMP"))) strcpy(o_directory, val); diff -c ./profile.sh ../src/profile.sh *** ./profile.sh Tue May 12 14:19:06 1992 --- ../src/profile.sh Wed May 13 18:29:06 1992 *************** *** 1,2 **** ! set PATH=.,\bin set SHELL=shell.ttp --- 1,3 ---- ! set TERMCAP=/dev/e/etc/termcap ! set TERM=st set SHELL=shell.ttp diff -c ./redraw.c ../src/redraw.c *** ./redraw.c Tue May 12 14:19:08 1992 --- ../src/redraw.c Wed May 13 18:29:12 1992 *************** *** 395,400 **** --- 395,404 ---- tabstop = *o_tabstop; abnormal = FALSE; + #ifdef SMOOTHREDRAW + #define CRUNCH + #endif + /* ...or was it meant the other way around? :-) -nox */ #ifndef CRUNCH if (clr) clrtoeol(); *************** *** 532,537 **** --- 536,546 ---- } else /* tab ending after screen? next line! */ { + #ifdef CRUNCH + /* needed atleast when scrolling the screen right -nox */ + if (clr && col < limitcol) + clrtoeol(); + #endif col = limitcol; if (has_AM) { *************** *** 619,624 **** --- 628,636 ---- wqrefresh(); } + #ifdef SMOOTHREDRAW + #undef CRUNCH + #endif #ifndef CRUNCH static void nudgecursor(same, scan, new, lno) diff -c ./ref.c ../src/ref.c *** ./ref.c Tue May 12 14:19:08 1992 --- ../src/ref.c Wed May 13 21:53:50 1992 *************** *** 24,30 **** --- 24,32 ---- extern void usage P_((void)); extern int countcolons P_((char *)); extern void main P_((int, char **)); + #ifndef __STDC__ extern char *getenv P_((char *)); + #endif /* This is the default path that is searched for tags */ *************** *** 34,41 **** # if ANY_UNIX # define DEFTAGPATH ".:/usr/include:/usr/include/sys:/usr/src/lib:../lib:/usr/local/lib" # else ! # if MSDOS || TOS ! # define DEFTAGPATH ".;C:\\include;C:\\include\\sys;C:\\lib;..\\lib" # define SEP ';' # else # if AMIGA --- 36,47 ---- # if ANY_UNIX # define DEFTAGPATH ".:/usr/include:/usr/include/sys:/usr/src/lib:../lib:/usr/local/lib" # else ! # if MSDOS || TOS || MINT ! # if MINT ! # define DEFTAGPATH ".;/usr/include;/usr/include/sys;/usr/src/lib;../lib;/usr/local/lib" ! # else ! # define DEFTAGPATH ".;C:\\include;C:\\include\\sys;C:\\lib;..\\lib" ! # endif # define SEP ';' # else # if AMIGA *************** *** 99,105 **** /* read lines until we get the one for this tag */ found[0] = '\0'; ! while (fgets(buf, sizeof buf, tfile)) { /* is this the one we want? */ if (!strncmp(buf, tag, len) && buf[len] == '\t') --- 105,111 ---- /* read lines until we get the one for this tag */ found[0] = '\0'; ! while (fgets(buf, (int) sizeof buf, tfile)) { /* is this the one we want? */ if (!strncmp(buf, tag, len) && buf[len] == '\t') *************** *** 144,150 **** for (bytes = 0, ch = 0; ch != '\n' && --limit > 0 && (ch = getc(fp)) != EOF; bytes++) { ! #if MSDOS || TOS /* since this is a binary file, we'll need to manually strip CR's */ if (ch == '\r') { --- 150,156 ---- for (bytes = 0, ch = 0; ch != '\n' && --limit > 0 && (ch = getc(fp)) != EOF; bytes++) { ! #if MSDOS || TOS || MINT /* since this is a binary file, we'll need to manually strip CR's */ if (ch == '\r') { *************** *** 217,223 **** * though we know it is a text file, because ftell() and fseek() * don't work on text files. */ ! #if MSDOS || TOS sfile = fopen(buf, "rb"); #else # if AMIGA --- 223,229 ---- * though we know it is a text file, because ftell() and fseek() * don't work on text files. */ ! #if MSDOS || TOS || MINT sfile = fopen(buf, "rb"); #else # if AMIGA *************** *** 236,242 **** else #endif sprintf(buf, "%s%crefs", dir, SLASH); ! #if MSDOS || TOS sfile = fopen(buf, "rb"); #else # if AMIGA --- 242,248 ---- else #endif sprintf(buf, "%s%crefs", dir, SLASH); ! #if MSDOS || TOS || MINT sfile = fopen(buf, "rb"); #else # if AMIGA diff -c ./regexp.c ../src/regexp.c *** ./regexp.c Tue May 12 14:19:08 1992 --- ../src/regexp.c Wed May 13 21:33:06 1992 *************** *** 361,367 **** --- 361,373 ---- int token; int peek; char *build; + #ifdef __STDC__ + /* tell compiler not to put re in a register so that longjmp() + * can't affect it -nox */ + volatile regexp *re; + #else regexp *re; + #endif #ifndef CRUNCH int from; int to; diff -c ./shell.c ../src/shell.c *** ./shell.c Tue May 12 14:19:10 1992 --- ../src/shell.c Thu May 14 01:43:32 1992 *************** *** 17,30 **** * shell: it implements the -c switch, which is required by Elvis, and * not supported by most other atari shells. */ ! #include #include #include extern char *getenv(), *malloc(); extern char **environ; long _stksize=16384; #define MAXENV 50 struct --- 17,80 ---- * shell: it implements the -c switch, which is required by Elvis, and * not supported by most other atari shells. */ ! #include #include #include + #ifdef __STDC__ + #include + #else extern char *getenv(), *malloc(); + #endif extern char **environ; long _stksize=16384; + + #if MINT + /* this is quite a bit MiNT library dependant... (although you + don't want to use this when actually _running_ under MiNT -> + use init.prg instead) */ + + #define USEARGV 1 + /* ...especially it depends on system() no relying on $SHELL! */ + + #include + + int xsystem(const char *cmd) + { + static int ret; + + /* GEMDOS redirection bugs department... */ + switch (vfork()) + { + case -1: /* error */ + ret = -1; + break; + + case 0: /* child */ + ret = system(cmd); + exit(0); + + default: /* parent */ + wait((int *) NULL); + } + + return ret; + } + #endif + + #if USEARGV + #define INITBUFSIZ 0x400 + #include + + size_t bufsiz = INITBUFSIZ; + char *buf = (char *) NULL; + #ifndef __STDC__ + extern char *putenv(), *realloc(); + #endif + + #else + #define MAXENV 50 struct *************** *** 32,39 **** char *name; char *value; } myenv[MAXENV]; ! int cmd_set(), cmd_exit(); struct buildins { --- 82,91 ---- char *name; char *value; } myenv[MAXENV]; + #endif ! int cmd_set(), cmd_exit(), cmd_cd(), cmd_pwd(); ! char home[FILENAME_MAX]; struct buildins { *************** *** 42,64 **** } buildins[]= { "exit", cmd_exit, "set", cmd_set, 0, }; main(argc, argv) int argc; char **argv; { - char buf[128]; int i; for (i=0; environ[i] && strncmp(environ[i],"ARGV=",5); i++) cmd_set(environ[i]); ! script("profile.sh"); if (argc>1 && !strcmp(argv[1], "-c")) { buf[0]='\0'; for (i=2; i2) strcat(buf, " "); --- 94,183 ---- } buildins[]= { "exit", cmd_exit, "set", cmd_set, + "cd", cmd_cd, + "pwd", cmd_pwd, 0, }; + + #if USEARGV + char *getbuf(needed) + size_t needed; + { + if (buf && bufsiz >= needed) + return buf; + while (bufsiz < needed) + bufsiz *= 2; + if (!(buf = realloc(buf, bufsiz))) + exit(-ENOMEM); + return buf; + } + + char *bufgets(fp) + FILE *fp; + { + int c = EOF; + size_t p = 0, left = bufsiz-1; + + while(((c = getc(fp)) != EOF)) { + if (!--left) { + buf = getbuf(bufsiz * 2); + left = bufsiz-p-1; + } + if((buf[p++] = c) == '\n') + break; + } + buf[p] = '\0'; + if (!p && c == EOF) + return NULL; + return buf; + } + #endif main(argc, argv) int argc; char **argv; { int i; + #if USEARGV + size_t p, clen; + int interactive = isatty(0); + char *ch; + + (void) getbuf((size_t) 1); + #else + char buf[128]; for (i=0; environ[i] && strncmp(environ[i],"ARGV=",5); i++) cmd_set(environ[i]); ! #endif ! if (ch = getenv("HOME")) { ! strcpy(home, ch); ! ch = buf + strlen(strcpy(buf, ch)); ! if (!strchr("\\/", ch[-1])) ! *ch++ = '/'; ! strcpy(ch, "profile.sh"); ! script(buf); ! } else { ! getcwd(home, sizeof(home)); ! script("profile.sh"); ! } if (argc>1 && !strcmp(argv[1], "-c")) { buf[0]='\0'; + #if USEARGV + p = 0; + for (i=2; i2) { + buf[p++] = ' '; + buf[p] = '\0'; + } + strcpy(getbuf(p+(clen=strlen(argv[i]))+2)+p, argv[i]); + p += clen; + } + i = execute(buf); + exit(i>=0 ? i : errno); + #else for (i=2; i2) strcat(buf, " "); *************** *** 65,74 **** --- 184,209 ---- strcat(buf, argv[i]); } execute(buf); + #endif } else + #if USEARGV + while ((interactive ? fputs("$ ", stdout) : 0), + bufgets(stdin)) { + if ((ch=strchr(buf, '\n')) != 0) + *ch='\0'; + errno = 0; + if (execute(buf) == -1 && interactive) { + if (errno == ENOENT) + printf("%s: not found\n", strtok(buf, " ")); + else if (errno == ENOEXEC) + printf("%s: unable to exec\n", strtok(buf, " ")); + } + } + #else while (fputs("$ ", stdout), gets(buf)) execute(buf); + #endif exit(0); } *************** *** 76,84 **** char *buf; { char *scan=buf; ! char cmd[80]; char line[128]; char env[4096], *ep=env; int i; while (*scan==' ') --- 211,221 ---- char *buf; { char *scan=buf; ! #if !USEARGV ! char cmd[FILENAME_MAX]; char line[128]; char env[4096], *ep=env; + #endif int i; while (*scan==' ') *************** *** 94,99 **** --- 231,241 ---- if (!strcmp(buf, buildins[i].name)) return (*buildins[i].func)(scan); + #if USEARGV + if (*scan && !scan[-1]) + scan[-1] = ' '; + return xsystem(buf); + #else if (!searchpath(buf, cmd)) { printf("%s: not found\n", buf); return -1; *************** *** 111,118 **** --- 253,262 ---- *ep='\0'; return Pexec(0, cmd, line, env); + #endif } + #if !USEARGV searchpath(from, to) char *from, *to; { *************** *** 163,168 **** --- 307,336 ---- return 0; return 1; } + #endif + + cmd_cd(line) + char *line; + { + if (!*line) + line = home; + else + line = strtok(line, " "); + if (chdir(line) < 0) { + perror(line); + return 1; + } + return 0; + } + + cmd_pwd() + { + char cwd[FILENAME_MAX]; + + getcwd(cwd, (int) sizeof(cwd)); + puts(cwd); + return 0; + } cmd_exit() { *************** *** 173,184 **** --- 341,364 ---- char *line; { char *value; + #if USEARGV + char **ep; + #else int i; + #endif if (!*line) { + #if USEARGV + if (environ) + for (ep = environ; *ep; ++ep) { + fputs(*ep, stdout); + fputs("\n", stdout); + } + #else for (i=0; i extern unsigned char _osmajor; #endif ! #if TOS #include #endif ! ! #if MSDOS || TOS #include /* --- 27,46 ---- #include "vi.h" extern char **environ; ! #if MSDOS || MINT #include + # if MSDOS extern unsigned char _osmajor; + # endif #endif ! #if TOS || MINT #include #endif ! #if MINT ! #include ! #endif ! #if MSDOS || TOS || MINT #include /* *************** *** 54,64 **** int system(cmd) const char *cmd; { ! #if MSDOS char *cmdswitch="/c"; if (_osmajor<4) cmdswitch[0]=switchar(); return spawnle(P_WAIT, o_shell, o_shell, cmdswitch, cmd, (char *)0, environ); #else long ssp; int (*shell)(); --- 57,115 ---- int system(cmd) const char *cmd; { ! #if MSDOS || MINT ! # if MINT ! static char *extensions[] = { "ttp", "prg", "tos", NULL }; ! extern char *findfile (char *, char *, char **); ! extern char *getenv(); ! ! char **argv = 0, *cmdcopy = 0, **argp, *path, *p; ! int ret; ! size_t clen; ! static char cmdpath[FILENAME_MAX]; ! ! long ssp; ! int (*shell)(); ! ! if (cmd == o_shell) ! return spawnlp(P_WAIT, o_shell, o_shell, (char *)0); ! ! if (!getenv("NO_SHELLP")) { ! ssp = Super(0L); ! shell = *((int (**)())0x4F6); ! (void) Super(ssp); ! if (shell) ! return (*shell)(cmd); ! } ! ! /* see if cmd is simple enough so that we don't need a shell */ ! if ((path = getenv("PATH")) && (clen = strlen(cmd)) && ! !strpbrk(cmd, "'\"`><;$~[*?&|(){}") && ! (argv = (char **) malloc((clen/2+2) * sizeof(char *))) && ! (cmdcopy = strdup(cmd)) && ! (p = findfile(strtok(cmdcopy, " \t"), path, extensions))) { ! argp = argv; ! *argp++ = strcpy(cmdpath, p); ! while (*argp++ = strtok((char *) NULL, " \t")) ! ; ! errno = 0; ! ret = spawnv(P_WAIT, p, argv); ! free(argv); ! free(cmdcopy); ! if (ret != -1 || errno != ENOEXEC) ! return ret; ! } ! if (argv) ! free(argv); ! if (cmdcopy) ! free(cmdcopy); ! return spawnlp(P_WAIT, o_shell, o_shell, "-c", cmd, (char *)0); ! # else char *cmdswitch="/c"; if (_osmajor<4) cmdswitch[0]=switchar(); return spawnle(P_WAIT, o_shell, o_shell, cmdswitch, cmd, (char *)0, environ); + # endif #else long ssp; int (*shell)(); *************** *** 103,109 **** --- 154,165 ---- static int cmdstate; static char output[80]; + #if MINT + /* MiNT uses real pipes if it can... (wich means unless running vanilla TOS.) */ + int trpipe(cmd, in) + #else int rpipe(cmd, in) + #endif char *cmd; /* the filter command to use */ int in; /* the fd to use for stdin */ { *************** *** 125,130 **** --- 181,190 ---- /* save and redirect stdin, stdout, and stderr */ old0=dup(0); old1=dup(1); + #if MINT + /* ... and stderr :-) */ + old2=dup(2); + #endif if (in) { dup2(in, 0); *************** *** 131,136 **** --- 191,199 ---- close(in); } dup2(fd, 1); + #if MINT + dup2(fd, 2); + #endif /* call command */ cmdstate=system(cmd); *************** *** 138,155 **** /* restore old std... */ dup2(old0, 0); close(old0); dup2(old1, 1); close(old1); /* rewind command output */ lseek(fd, 0L, 0); return fd; } /* This function closes the pipe opened by rpipe(), and returns 0 for success */ int rpclose(fd) int fd; { - int status; - close(fd); unlink(output); return cmdstate; --- 201,229 ---- /* restore old std... */ dup2(old0, 0); close(old0); dup2(old1, 1); close(old1); + #if MINT + dup2(old2, 2); close(old2); + #endif /* rewind command output */ + #if TOS || MINT + /* GEMDOS redirection bugs department... */ + close(fd); + fd=open(output, O_RDWR); + #else lseek(fd, 0L, 0); + #endif return fd; } /* This function closes the pipe opened by rpipe(), and returns 0 for success */ + #if MINT + int trpclose(fd) + #else int rpclose(fd) + #endif int fd; { close(fd); unlink(output); return cmdstate; diff -c ./system.c ../src/system.c *** ./system.c Tue May 12 14:19:10 1992 --- ../src/system.c Thu May 14 01:27:30 1992 *************** *** 22,31 **** #include "config.h" #include "vi.h" extern char **environ; ! #if ANY_UNIX /* This is a new version of the system() function. The only difference * between this one and the library one is: this one uses the o_shell option. */ --- 22,37 ---- #include "config.h" #include "vi.h" + #if MINT + #include "ctype.h" + extern int __mint; + #endif + extern char **environ; ! #if ANY_UNIX || MINT + #if !MINT /* This is a new version of the system() function. The only difference * between this one and the library one is: this one uses the o_shell option. */ *************** *** 85,90 **** --- 91,97 ---- return status; } + #endif /* This private function opens a pipe from a filter. It is similar to the * system() function above, and to popen(cmd, "r"). *************** *** 95,100 **** --- 102,126 ---- { int r0w1[2];/* the pipe fd's */ + #if MINT + /* maximum commandline length that we try to parse ourselves */ + #define MAXCMDLEN 0x400 + + static char *extensions[] = { "ttp", "prg", "tos", (char *) NULL}; + extern char *findfile (char *, char *, char **); + extern char *getenv(); + + static char *argv[MAXCMDLEN/2+2]; + static char cmdcopy[MAXCMDLEN+2]; + static char cmdpath[FILENAME_MAX]; + char **argp, *path, *p; + size_t clen; + + /* if MiNT is not running, we have to use a tempfile */ + if (!__mint) + return trpipe(cmd, in); + #endif + /* make the pipe */ if (pipe(r0w1) < 0) { *************** *** 107,112 **** --- 133,157 ---- */ signal(SIGINT, SIG_IGN); + #if MINT + /* MiNT <= 0.8 had a problem with broken pipes... */ + if (__mint <= 8) { + signal(SIGTTIN, SIG_IGN); + signal(SIGTTOU, SIG_IGN); + } + + /* see if cmd is simple enough so that we don't need a shell */ + if ((path = getenv("PATH")) && (clen = strlen(cmd)) && + clen < MAXCMDLEN && !strpbrk(cmd, "'\"`><;$~[*?&|(){}") && + (p = findfile(strtok(strcpy(cmdcopy, cmd), " \t"), path, extensions))) { + argp = argv; + *argp++ = strcpy(cmdpath, p); + while (*argp++ = strtok((char *) NULL, " \t")) + ; + } else + p = 0; + #endif + switch (fork()) { case -1: /* error */ *************** *** 117,122 **** --- 162,180 ---- close(r0w1[0]); /* redirect stdout to go to the "write" end of the pipe */ + #if MINT + /* GEMDOS redirection bugs department... */ + dup2(r0w1[1], 1); + dup2(r0w1[1], 2); + close(r0w1[1]); + + /* redirect stdin */ + if (in != 0) + { + dup2(in, 0); + close(in); + } + #else close(1); dup(r0w1[1]); close(2); *************** *** 130,141 **** --- 188,206 ---- dup(in); close(in); } + #endif /* the filter should accept SIGINT signals */ signal(SIGINT, SIG_DFL); /* exec the shell to run the command */ + #if MINT + errno = 0; + if (!p || (execv(p, argv) == -1 && errno == ENOEXEC)) + execlp(o_shell, o_shell, "-c", cmd, (char *)0); + #else execle(o_shell, o_shell, "-c", cmd, (char *)0, environ); + #endif exit(1); /* if we get here, exec failed */ default: /* parent */ *************** *** 161,167 **** } #endif ! #if ANY_UNIX || OSK /* This function closes the pipe opened by rpipe(), and returns 0 for success */ int rpclose(fd) --- 226,232 ---- } #endif ! #if ANY_UNIX || OSK || MINT /* This function closes the pipe opened by rpipe(), and returns 0 for success */ int rpclose(fd) *************** *** 169,174 **** --- 234,243 ---- { int status; + #if MINT + if (!__mint) + return trpclose(fd); + #endif close(fd); wait(&status); #if __GNUC__ *************** *** 216,221 **** --- 285,295 ---- int i, j, fd; REG char *s, *d; + #if 1 + /* before we do anything, see if there are wildcards at all -nox */ + if (!strpbrk(names, "*?[`{$~")) + return names; + #endif /* build the echo command */ if (names != tmpblk.c) *************** *** 249,255 **** --- 323,336 ---- /* successful? */ if (rpclose(fd) == 0 && j == 0 && i < BLKSIZE && i > 0) { + #if MINT + /* strange shells doing strange things... */ + while (isspace(tmpblk.c[--i])) + ; + tmpblk.c[++i] = '\0'; + #else tmpblk.c[i-1] = '\0'; /* "i-1" so we clip off the newline */ + #endif return tmpblk.c; } else *************** *** 281,287 **** if (to) { /* we have lines */ ! #if MSDOS || TOS strcpy(scrout, o_directory); if ((i=strlen(scrout)) && !strchr("\\/:", scrout[i-1])) scrout[i++]=SLASH; --- 362,368 ---- if (to) { /* we have lines */ ! #if MSDOS || TOS || MINT strcpy(scrout, o_directory); if ((i=strlen(scrout)) && !strchr("\\/:", scrout[i-1])) scrout[i++]=SLASH; *************** *** 375,380 **** --- 456,471 ---- } #endif } + #if 1 + /* doesn't the delete() belong into here? -nox */ + + /* delete old text, if any */ + if (to) + { + cut(from, to); + delete(from, to); + } + #else } /* delete old text, if any */ *************** *** 382,387 **** --- 473,479 ---- { cut(from, to); delete(from, to); + #endif } } else diff -c ./tio.c ../src/tio.c *** ./tio.c Tue May 12 14:19:12 1992 --- ../src/tio.c Wed May 13 18:29:38 1992 *************** *** 449,454 **** --- 449,458 ---- * number of characters read is 0, and we didn't time-out, then it exits because * we've apparently reached the end of an EX script. */ + #ifndef NO_CURSORSHAPE + /* made global so that suspend_curses() can reset it -nox */ + int oldcurs; + #endif static int fillkeybuf(when, timeout) int when; /* mixture of WHEN_XXX flags */ int timeout;/* timeout in 1/10 second increments, or 0 */ *************** *** 461,469 **** static long oldnlines; char *str; #endif - #ifndef NO_CURSORSHAPE - static int oldcurs; - #endif #ifdef DEBUG watch(); --- 465,470 ---- *************** *** 547,553 **** /* Okay, now we can finally read the rawin keystrokes */ refresh(); ! nkeys = ttyread(keybuf + cend, sizeof keybuf - cend, timeout); /* if nkeys == 0 then we've reached EOF of an ex script. */ if (nkeys == 0 && timeout == 0) --- 548,554 ---- /* Okay, now we can finally read the rawin keystrokes */ refresh(); ! nkeys = ttyread(keybuf + cend, (int) sizeof keybuf - cend, timeout); /* if nkeys == 0 then we've reached EOF of an ex script. */ if (nkeys == 0 && timeout == 0) diff -c ./tmp.c ../src/tmp.c *** ./tmp.c Tue May 12 14:19:12 1992 --- ../src/tmp.c Sun Aug 9 21:34:34 1992 *************** *** 10,16 **** /* This file contains functions which create & readback a TMPFILE */ - #include "config.h" #include "vi.h" #if TOS --- 10,15 ---- *************** *** 30,35 **** --- 29,46 ---- # include #endif + /* a quick hack 'cause close(-1) wasn't a no-op on early versions of MiNT -nox */ + #if MINT + int mclose(fd) + int fd; + { + if (fd >= 0) + return close(fd); + return 0; + } + #define close mclose + #endif + #ifndef NO_MODELINES static void do_modelines(l, stop) long l; /* line number to start at */ *************** *** 156,162 **** if (*o_readonly || (statb.st_mode & S_IJRON)) # endif #endif ! #if ANY_UNIX if (*o_readonly || !(statb.st_mode & ((geteuid() == 0) ? 0222 : ((statb.st_uid != geteuid() ? 0022 : 0200))))) --- 167,173 ---- if (*o_readonly || (statb.st_mode & S_IJRON)) # endif #endif ! #if ANY_UNIX || MINT if (*o_readonly || !(statb.st_mode & ((geteuid() == 0) ? 0222 : ((statb.st_uid != geteuid() ? 0022 : 0200))))) *************** *** 183,189 **** /* make a name for the tmp file */ tmpnum++; ! #if MSDOS || TOS /* MS-Dos doesn't allow multiple slashes, but supports drives * with current directories. * This relies on TMPNAME beginning with "%s\\"!!!! --- 194,200 ---- /* make a name for the tmp file */ tmpnum++; ! #if MSDOS || TOS || MINT /* MS-Dos doesn't allow multiple slashes, but supports drives * with current directories. * This relies on TMPNAME beginning with "%s\\"!!!! *************** *** 203,209 **** } /* create the temp file */ ! #if ANY_UNIX close(creat(tmpname, 0600)); /* only we can read it */ #else close(creat(tmpname, FILEPERMS)); /* anybody body can read it, alas */ --- 214,220 ---- } /* create the temp file */ ! #if ANY_UNIX || MINT close(creat(tmpname, 0600)); /* only we can read it */ #else close(creat(tmpname, FILEPERMS)); /* anybody body can read it, alas */ *************** *** 270,276 **** --- 281,292 ---- this = next; /* read [more] text into this block */ + #if MINT + nread = (*o_crlf ? tread : read) + (origfd, &this->c[inbuf], BLKSIZE - 1 - inbuf); + #else nread = tread(origfd, &this->c[inbuf], BLKSIZE - 1 - inbuf); + #endif if (nread < 0) { close(origfd); *************** *** 318,324 **** goto FoundEOF; } ! #if MSDOS || TOS /* BAH! MS text mode read fills inbuf, then compresses eliminating \r but leaving garbage at end of buf. The same is true for TURBOC. GB. */ --- 334,340 ---- goto FoundEOF; } ! #if MSDOS || TOS || MINT /* BAH! MS text mode read fills inbuf, then compresses eliminating \r but leaving garbage at end of buf. The same is true for TURBOC. GB. */ *************** *** 386,392 **** nbytes = 1; } ! #if MSDOS || TOS /* each line has an extra CR that we didn't count yet */ nbytes += nlines; #endif --- 402,411 ---- nbytes = 1; } ! #if MSDOS || TOS || MINT ! # if MINT ! if (*o_crlf) ! # endif /* each line has an extra CR that we didn't count yet */ nbytes += nlines; #endif *************** *** 529,535 **** --- 548,558 ---- for (len = 0; len < BLKSIZE && this->c[len]; len++) { } + #if MINT + if ((*o_crlf ? twrite : write)(fd, this->c, len) < len) + #else if (twrite(fd, this->c, len) < len) + #endif { msg("Trouble writing to \"%s\"", filename); if (!strcmp(filename, origname)) *************** *** 551,557 **** } /* report lines & characters */ ! #if MSDOS || TOS bytes += nlines; /* for the inserted carriage returns */ #endif msg("Wrote \"%s\" %ld lines, %ld characters", filename, nlines, bytes); --- 574,583 ---- } /* report lines & characters */ ! #if MSDOS || TOS || MINT ! # if MINT ! if (*o_crlf) ! # endif bytes += nlines; /* for the inserted carriage returns */ #endif msg("Wrote \"%s\" %ld lines, %ld characters", filename, nlines, bytes); *************** *** 626,632 **** * changes to be written to the disk, so that the tmp file will survive a * system crash or power failure. */ ! #if AMIGA || MSDOS || TOS sync() { /* MS-DOS and TOS don't flush their buffers until the file is closed, --- 652,658 ---- * changes to be written to the disk, so that the tmp file will survive a * system crash or power failure. */ ! #if AMIGA || MSDOS || TOS || MINT sync() { /* MS-DOS and TOS don't flush their buffers until the file is closed, *************** *** 662,668 **** --- 688,698 ---- U_text[1] = 127; } #ifndef CRUNCH + #if TOS | MINT | MSDOS + else if (*name != '/' && *name !='\\' && (!*name || name[1]!=':')) + #else else if (*name != SLASH) + #endif { /* get the directory name */ ptr = getcwd(U_text, BLKSIZE); *************** *** 684,690 **** /* copy the filename into U_text */ strncpy(U_text, *name ? name : "foo", BLKSIZE); } ! if (tmpfd >= 0) { /* write the name out to second block of the temp file */ --- 714,725 ---- /* copy the filename into U_text */ strncpy(U_text, *name ? name : "foo", BLKSIZE); } ! #if MINT ! for (ptr=U_text; *ptr && ptr < U_text+BLKSIZE; ++ptr) { ! if (*ptr == '\\') ! *ptr = '/'; ! } ! #endif if (tmpfd >= 0) { /* write the name out to second block of the temp file */ diff -c ./vars.c ../src/vars.c *** ./vars.c Tue May 12 14:19:14 1992 --- ../src/vars.c Wed May 13 18:29:48 1992 *************** *** 106,112 **** /* Bigger stack req'ed for TOS and TURBOC */ ! #if TOS long _stksize = 16384; #endif --- 106,112 ---- /* Bigger stack req'ed for TOS and TURBOC */ ! #if TOS || MINT long _stksize = 16384; #endif diff -c ./vcmd.c ../src/vcmd.c *** ./vcmd.c Tue May 12 14:19:14 1992 --- ../src/vcmd.c Wed May 13 21:08:30 1992 *************** *** 553,559 **** /* adjust for inclusive endmarks in ex */ n -= BLKSIZE; ! if (vgets('!', cmdln, sizeof(cmdln)) > 0) { filter(m, n, cmdln, TRUE); } --- 553,559 ---- /* adjust for inclusive endmarks in ex */ n -= BLKSIZE; ! if (vgets('!', cmdln, (int) sizeof(cmdln)) > 0) { filter(m, n, cmdln, TRUE); } *************** *** 966,972 **** --- 966,975 ---- /* arrange for the menu to be erased (except "save & exit" doesn't care) */ + #if 0 + /* hmm. doesn't work for `\\Z' -nox */ if (sel != 9) + #endif redraw(MARK_UNSET, FALSE); return m; diff -c ./vi.c ../src/vi.c *** ./vi.c Tue May 12 14:19:14 1992 --- ../src/vi.c Wed May 13 18:30:00 1992 *************** *** 555,561 **** { text[0] = key; text[1] = '\0'; ! if (doingdot || vgets(key, text + 1, sizeof text - 1) >= 0) { /* reassure user that was hit */ qaddch('\r'); --- 555,561 ---- { text[0] = key; text[1] = '\0'; ! if (doingdot || vgets(key, text + 1, (int) sizeof text - 1) >= 0) { /* reassure user that was hit */ qaddch('\r'); diff -c ./vi.h ../src/vi.h *** ./vi.h Tue May 12 14:19:16 1992 --- ../src/vi.h Wed May 13 23:07:12 1992 *************** *** 58,64 **** # include /* for str* prototypes */ # include /* for atoi, system, malloc, free */ # include /* for vararg definitions */ ! # if ANY_UNIX # include /* for read, write, ... prototypes */ # include /* for wait prototype */ # endif --- 58,64 ---- # include /* for str* prototypes */ # include /* for atoi, system, malloc, free */ # include /* for vararg definitions */ ! # if ANY_UNIX || MINT # include /* for read, write, ... prototypes */ # include /* for wait prototype */ # endif *************** *** 200,205 **** --- 200,210 ---- #if MSDOS extern char o_pcbios[1]; + #endif + + #if MINT + extern char o_stbios[1]; + extern char o_crlf[1]; #endif #ifndef NO_SHOWMATCH diff -c ./wildcard.c ../src/wildcard.c *** ./wildcard.c Tue May 12 14:40:12 1992 --- ../src/wildcard.c Sun Aug 9 21:12:58 1992 *************** *** 57,63 **** --- 57,69 ---- #define MAXFILES 1000 int pstrcmp(); + + #ifdef __STDC__ + #include + #include + #else extern char *calloc(); + #endif char *files[MAXFILES]; int nfiles; *************** *** 96,102 **** } #endif ! expand(name) char *name; { char *filespec; --- 102,108 ---- } #endif ! int expand(name) char *name; { char *filespec; *************** *** 139,153 **** } } ! addfile(buf) char *buf; { char *p; for (p=buf; *p; p++) *p=tolower(*p); ! ! if (nfiles