rsalz@uunet.UU.NET (Rich Salz) (09/29/87)
Submitted-by: chris@nrcvax.uucp (Chris Grevstad)
Posting-number: Volume 11, Issue 85
Archive-name: tcsh.4.3/part02
#! /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:
# DIFFS.2
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'DIFFS.2'
then
echo shar: "will not over-write existing file 'DIFFS.2'"
else
cat << \SHAR_EOF > 'DIFFS.2'
*** sh.glob.c Tue May 13 01:27:18 1986
--- /usr/src/local/tcsh/sh.glob.c Mon Aug 17 21:32:21 1987
***************
*** 9,15
#endif
#include "sh.h"
! #include <sys/dir.h>
/*
* C Shell
--- 9,15 -----
#endif
#include "sh.h"
! /* #include <sys/dir.h> */
/*
* C Shell
***************
*** 118,123
sortscmp(a1, a2)
char **a1, **a2;
{
return (strcmp(*a1, *a2));
}
--- 118,132 -----
sortscmp(a1, a2)
char **a1, **a2;
{
+ if (!a1) /* check for NULL */
+ return (a2?1:0);
+ if (!a2)
+ return (-1);
+
+ if (!*a1) /* check for NULL */
+ return (*a2?1:0);
+ if (!*a2)
+ return (-1);
return (strcmp(*a1, *a2));
}
***************
*** 131,136
sgpathp = gpathp;
cs = as;
if (*cs == '~' && gpathp == gpath) {
addpath('~');
for (cs++; letter(*cs) || digit(*cs) || *cs == '-';)
--- 140,164 -----
sgpathp = gpathp;
cs = as;
+ /*
+ * kfk - 17 Jan 1984 - stack hack
+ * allows user to get at arbitrary dir names in stack.
+ */
+ if (*cs == '=' && gpathp == gpath) {
+ addpath ('=');
+ if (digit (*++cs) || *cs == '-') {
+ int dig;
+ dig = (*cs == '-') ? -1 : *cs - '0';
+ cs++;
+ if (*cs && *cs != '/')
+ error ("Stack hack: =<dig>{/path...}");
+ getstakd (gpath, dig, 1);
+ /* last "1" = call error if needed */
+ gpathp = strend (gpath);
+ }
+ }
+ /* kfk - end stack hack change */
+
if (*cs == '~' && gpathp == gpath) {
addpath('~');
for (cs++; letter(*cs) || digit(*cs) || *cs == '-';)
***************
*** 295,301
register char *sentp;
char sglobbed = globbed;
! if (*s == '.' && *p != '.')
return (0);
sentp = entp;
entp = s;
--- 323,329 -----
register char *sentp;
char sglobbed = globbed;
! if (*s == '.' && *p != '.') /* PWP: this makes [.]login != .login */
return (0);
sentp = entp;
entp = s;
***************
*** 309,315
register char *s, *p;
{
register int scc;
! int ok, lc;
char *sgpathp;
struct stat stb;
int c, cc;
--- 337,343 -----
register char *s, *p;
{
register int scc;
! int ok, lc, notin;
char *sgpathp;
struct stat stb;
int c, cc;
***************
*** 322,328
case '{':
return (execbrc(p - 1, s - 1));
! case '[':
ok = 0;
lc = 077777;
while (cc = *p++) {
--- 350,357 -----
case '{':
return (execbrc(p - 1, s - 1));
! case '[': /* PWP -- BRACKET IS HERE!! */
! if (!scc) return 0; /* if at end if string */
ok = 0;
lc = 077777;
if (*p == '^') {
***************
*** 325,330
case '[':
ok = 0;
lc = 077777;
while (cc = *p++) {
if (cc == ']') {
if (ok)
--- 354,364 -----
if (!scc) return 0; /* if at end if string */
ok = 0;
lc = 077777;
+ if (*p == '^') {
+ notin = 1;
+ p++;
+ } else
+ notin = 0;
while (cc = *p++) {
if (cc == ']') {
if (notin) { /* PWP for not in list */
***************
*** 327,335
lc = 077777;
while (cc = *p++) {
if (cc == ']') {
! if (ok)
! break;
! return (0);
}
if (cc == '-') {
if (lc <= scc && scc <= *p++)
--- 361,377 -----
notin = 0;
while (cc = *p++) {
if (cc == ']') {
! if (notin) { /* PWP for not in list */
! if (!ok)
! break;
! else
! return (0);
! } else {
! if (ok)
! break;
! else
! return (0);
! }
}
if (cc == '-') {
if (lc <= scc && scc <= *p++)
***************
*** 335,341
if (lc <= scc && scc <= *p++)
ok++;
} else
! if (scc == (lc = cc))
ok++;
}
if (cc == 0)
--- 377,383 -----
if (lc <= scc && scc <= *p++)
ok++;
} else
! if (scc && (scc == (lc = cc)))
ok++;
}
if (cc == 0)
***************
*** 393,399
register char *s, *p;
{
register int scc;
! int ok, lc;
int c, cc;
for (;;) {
--- 435,441 -----
register char *s, *p;
{
register int scc;
! int ok, lc, notin;
int c, cc;
for (;;) {
***************
*** 400,406
scc = *s++ & TRIM;
switch (c = *p++) {
! case '[':
ok = 0;
lc = 077777;
while (cc = *p++) {
--- 442,449 -----
scc = *s++ & TRIM;
switch (c = *p++) {
! case '[': /* PWP -- HERE TOO!! */
! if (!scc) return 0; /* if at end if string */
ok = 0;
lc = 077777;
if (*p == '^') {
***************
*** 403,408
case '[':
ok = 0;
lc = 077777;
while (cc = *p++) {
if (cc == ']') {
if (ok)
--- 446,456 -----
if (!scc) return 0; /* if at end if string */
ok = 0;
lc = 077777;
+ if (*p == '^') {
+ notin = 1;
+ p++;
+ } else
+ notin = 0;
while (cc = *p++) {
if (cc == ']') {
if (notin) { /* PWP for not in list */
***************
*** 405,410
lc = 077777;
while (cc = *p++) {
if (cc == ']') {
if (ok)
break;
return (0);
--- 453,464 -----
notin = 0;
while (cc = *p++) {
if (cc == ']') {
+ if (notin) { /* PWP for not in list */
+ if (!ok)
+ break;
+ else
+ return (0);
+ } else {
if (ok)
break;
else
***************
*** 407,412
if (cc == ']') {
if (ok)
break;
return (0);
}
if (cc == '-') {
--- 461,467 -----
} else {
if (ok)
break;
+ else
return (0);
}
}
***************
*** 409,414
break;
return (0);
}
if (cc == '-') {
if (lc <= scc && scc <= *p++)
ok++;
--- 464,470 -----
else
return (0);
}
+ }
if (cc == '-') {
if (lc <= scc && scc <= *p++)
ok++;
***************
*** 413,419
if (lc <= scc && scc <= *p++)
ok++;
} else
! if (scc == (lc = cc))
ok++;
}
if (cc == 0)
--- 469,475 -----
if (lc <= scc && scc <= *p++)
ok++;
} else
! if (scc && (scc == (lc = cc)))
ok++;
}
if (cc == 0)
***************
*** 503,509
register char *p, c;
while (p = *t++) {
! if (*p == '~')
gflag |= 2;
else if (*p == '{' && (p[1] == '\0' || p[1] == '}' && p[2] == '\0'))
continue;
--- 559,566 -----
register char *p, c;
while (p = *t++) {
! /* added additional '=' test for stack hack */
! if ((*p == '~') || (*p == '='))
gflag |= 2;
else if (*p == '{' && (p[1] == '\0' || p[1] == '}' && p[2] == '\0'))
continue;
*** sh.h Sat Mar 29 07:37:09 1986
--- /usr/src/local/tcsh/sh.h Mon Aug 17 22:48:18 1987
***************
*** 8,13
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/signal.h>
--- 8,16 -----
#include <sys/time.h>
#include <sys/resource.h>
+ #ifdef SVID
+ #include <sys/types.h>
+ #endif
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/signal.h>
***************
*** 28,33
#define isdir(d) ((d.st_mode & S_IFMT) == S_IFDIR)
typedef char bool;
#define eq(a, b) (strcmp(a, b) == 0)
--- 31,78 -----
#define isdir(d) ((d.st_mode & S_IFMT) == S_IFDIR)
+ #include <sys/ioctl.h>
+
+ #ifndef SVID
+ #include <sgtty.h>
+ #include <sys/dir.h>
+ #else SVID
+ # ifdef OREO
+ #include <sgtty.h>
+ #include <sys/dir.h>
+ # else OREO
+ #include "dir.h"
+ # endif OREO
+ #endif SVID
+
+ /* #include <ctype.h> */
+ #include <pwd.h>
+
+ #ifdef SVID
+ # ifndef pyr
+ #include <time.h>
+ # endif pyr
+ #include <termio.h>
+ #endif
+
+
+ /*
+ * kfk 26 Jan 1984 - for login watch functions.
+ */
+ #include <utmp.h>
+ struct who {
+ struct who *w_next;
+ struct who *w_prev;
+ char w_name[10];
+ char w_new[10];
+ char w_tty[10];
+ int w_status;
+ };
+ #define ONLINE 01
+ #define OFFLINE 02
+ #define CHANGED 04
+ #define ANNOUNCE 010
+ /* kfk - end change */
typedef char bool;
/* kfk - additions to support scheduled commands */
***************
*** 30,35
typedef char bool;
#define eq(a, b) (strcmp(a, b) == 0)
/*
--- 75,89 -----
/* kfk - end change */
typedef char bool;
+ /* kfk - additions to support scheduled commands */
+ struct sched_event {
+ struct sched_event *t_next;
+ long t_when;
+ char **t_lex;
+ };
+ extern long time();
+ /* kfk - end change */
+
#define eq(a, b) (strcmp(a, b) == 0)
/*
***************
*** 51,59
bool setintr; /* Set interrupts on/off -> Wait intr... */
bool timflg; /* Time the next waited for command */
bool havhash; /* path hashing is available */
- #ifdef FILEC
- bool filec; /* doing filename expansion */
- #endif
/*
* Global i/o info
--- 105,110 -----
bool setintr; /* Set interrupts on/off -> Wait intr... */
bool timflg; /* Time the next waited for command */
bool havhash; /* path hashing is available */
/*
* Global i/o info
***************
*** 66,71
int errno; /* Error from C library routines */
char *shtemp; /* Temp name for << shell files in /tmp */
struct timeval time0; /* Time at which the shell started */
struct rusage ru0;
/*
--- 117,123 -----
int errno; /* Error from C library routines */
char *shtemp; /* Temp name for << shell files in /tmp */
struct timeval time0; /* Time at which the shell started */
+ #ifndef OREO
struct rusage ru0;
#endif OREO
***************
*** 67,72
char *shtemp; /* Temp name for << shell files in /tmp */
struct timeval time0; /* Time at which the shell started */
struct rusage ru0;
/*
* Miscellany
--- 119,125 -----
struct timeval time0; /* Time at which the shell started */
#ifndef OREO
struct rusage ru0;
+ #endif OREO
/*
* Miscellany
***************
*** 79,84
/* If tpgrp is -1, leave tty alone! */
int opgrp; /* Initial pgrp and tty pgrp */
int oldisc; /* Initial line discipline or -1 */
/*
* These are declared here because they want to be
--- 132,140 -----
/* If tpgrp is -1, leave tty alone! */
int opgrp; /* Initial pgrp and tty pgrp */
int oldisc; /* Initial line discipline or -1 */
+ char PromptBuf[256]; /* buffer for the actual printed prompt.
+ this is used in tenex.c and sh.c for
+ pegets.c */
/*
* These are declared here because they want to be
***************
*** 369,374
struct wordent Hlex;
int Hnum;
int Href;
struct Hist *Hnext;
} Histlist;
--- 425,431 -----
struct wordent Hlex;
int Hnum;
int Href;
+ long Htime;
struct Hist *Hnext;
} Histlist;
***************
*** 423,428
char *index();
struct biltins *isbfunc();
off_t lseek();
char *operate();
int phup();
int pintr();
--- 480,486 -----
char *index();
struct biltins *isbfunc();
off_t lseek();
+ struct tm *localtime();
char *operate();
int phup();
int pintr();
***************
*** 471,473
char *iname; /* name from /usr/include */
char *pname; /* print name */
} mesg[];
--- 529,534 -----
char *iname; /* name from /usr/include */
char *pname; /* print name */
} mesg[];
+
+ #define sighold(sig) sigblock(sigmask(sig))
+
*** sh.hist.c Thu Jun 6 13:15:33 1985
--- /usr/src/local/tcsh/sh.hist.c Mon Aug 17 21:32:24 1987
***************
*** 53,58
register struct Hist *np;
np = (struct Hist *) xalloc(sizeof *np);
np->Hnum = np->Href = event;
if (docopy)
copylex(&np->Hlex, lp);
--- 53,59 -----
register struct Hist *np;
np = (struct Hist *) xalloc(sizeof *np);
+ time(&(np->Htime));
np->Hnum = np->Href = event;
if (docopy)
copylex(&np->Hlex, lp);
***************
*** 135,140
register struct Hist *hp;
int hflg;
{
if (hflg == 0)
printf("%6d\t", hp->Hnum);
--- 136,143 -----
register struct Hist *hp;
int hflg;
{
+ struct tm *t;
+ char ampm = 'a';
if (hflg == 0)
{
***************
*** 137,142
{
if (hflg == 0)
printf("%6d\t", hp->Hnum);
prlex(&hp->Hlex);
}
--- 140,146 -----
char ampm = 'a';
if (hflg == 0)
+ {
printf("%6d\t", hp->Hnum);
t = localtime(&hp->Htime);
if (t->tm_hour >= 12)
***************
*** 138,142
if (hflg == 0)
printf("%6d\t", hp->Hnum);
prlex(&hp->Hlex);
}
--- 142,157 -----
if (hflg == 0)
{
printf("%6d\t", hp->Hnum);
+ t = localtime(&hp->Htime);
+ if (t->tm_hour >= 12)
+ {
+ if (t->tm_hour > 12)
+ t->tm_hour -= 12;
+ ampm = 'p';
+ }
+ else if (t->tm_hour == 0)
+ t->tm_hour = 12;
+ printf ("%2d:%02d%cm\t", t->tm_hour, t->tm_min, ampm);
+ }
prlex(&hp->Hlex);
}
*** sh.init.c Thu Jun 6 13:15:48 1985
--- /usr/src/local/tcsh/sh.init.c Tue Aug 18 21:57:22 1987
***************
*** 16,21
extern int doalias();
extern int dobg();
extern int dobreak();
extern int dochngd();
extern int docontin();
--- 16,22 -----
extern int doalias();
extern int dobg();
+ extern int dobind();
extern int dobreak();
extern int dochngd();
extern int docontin();
***************
*** 37,42
extern int dojobs();
extern int dokill();
extern int dolet();
extern int dolimit();
extern int dologin();
extern int dologout();
--- 38,44 -----
extern int dojobs();
extern int dokill();
extern int dolet();
+ #ifndef OREO
extern int dolimit();
#endif
extern int dolog();
***************
*** 38,43
extern int dokill();
extern int dolet();
extern int dolimit();
extern int dologin();
extern int dologout();
#ifdef NEWGRP
--- 40,47 -----
extern int dolet();
#ifndef OREO
extern int dolimit();
+ #endif
+ extern int dolog();
extern int dologin();
extern int dologout();
#ifdef NEWGRP
***************
*** 50,55
extern int dopopd();
extern int dopushd();
extern int dorepeat();
extern int doset();
extern int dosetenv();
extern int dosource();
--- 54,60 -----
extern int dopopd();
extern int dopushd();
extern int dorepeat();
+ extern int dosched();
extern int doset();
extern int dosetenv();
extern int dosource();
***************
*** 58,63
extern int doswbrk();
extern int doswitch();
extern int dotime();
extern int dounlimit();
extern int doumask();
extern int dowait();
--- 63,69 -----
extern int doswbrk();
extern int doswitch();
extern int dotime();
+ #ifndef OREO
extern int dounlimit();
#endif
extern int doumask();
***************
*** 59,64
extern int doswitch();
extern int dotime();
extern int dounlimit();
extern int doumask();
extern int dowait();
extern int dowhile();
--- 65,71 -----
extern int dotime();
#ifndef OREO
extern int dounlimit();
+ #endif
extern int doumask();
extern int dowait();
extern int dowhile();
***************
*** 74,79
extern int dounhash();
extern int unset();
extern int dounsetenv();
#define INF 1000
--- 81,87 -----
extern int dounhash();
extern int unset();
extern int dounsetenv();
+ extern int dolist(); /* for ls-F */
#define INF 1000
***************
*** 86,91
"alias", doalias, 0, INF,
"alloc", showall, 0, 1,
"bg", dobg, 0, INF,
"break", dobreak, 0, 0,
"breaksw", doswbrk, 0, 0,
#ifdef IIASA
--- 94,100 -----
"alias", doalias, 0, INF,
"alloc", showall, 0, 1,
"bg", dobg, 0, INF,
+ "bind", dobind, 0, 2,
"break", dobreak, 0, 0,
"breaksw", doswbrk, 0, 0,
#ifdef IIASA
***************
*** 119,124
"if", doif, 1, INF,
"jobs", dojobs, 0, 1,
"kill", dokill, 1, INF,
"limit", dolimit, 0, 3,
"login", dologin, 0, 1,
"logout", dologout, 0, 0,
--- 128,134 -----
"if", doif, 1, INF,
"jobs", dojobs, 0, 1,
"kill", dokill, 1, INF,
+ #ifndef OREO
"limit", dolimit, 0, 3,
#endif OREO
"linedit", doecho, 0, INF,
***************
*** 120,125
"jobs", dojobs, 0, 1,
"kill", dokill, 1, INF,
"limit", dolimit, 0, 3,
"login", dologin, 0, 1,
"logout", dologout, 0, 0,
#ifdef NEWGRP
--- 130,138 -----
"kill", dokill, 1, INF,
#ifndef OREO
"limit", dolimit, 0, 3,
+ #endif OREO
+ "linedit", doecho, 0, INF,
+ "log", dolog, 0, 0,
"login", dologin, 0, 1,
"logout", dologout, 0, 0,
"ls-F", dolist, 0, INF,
***************
*** 122,127
"limit", dolimit, 0, 3,
"login", dologin, 0, 1,
"logout", dologout, 0, 0,
#ifdef NEWGRP
"newgrp", donewgrp, 1, 1,
#endif
--- 135,141 -----
"log", dolog, 0, 0,
"login", dologin, 0, 1,
"logout", dologout, 0, 0,
+ "ls-F", dolist, 0, INF,
#ifdef NEWGRP
"newgrp", donewgrp, 1, 1,
#endif
***************
*** 136,141
#endif
"rehash", dohash, 0, 0,
"repeat", dorepeat, 2, INF,
"set", doset, 0, INF,
"setenv", dosetenv, 0, 2,
"shift", shift, 0, 1,
--- 150,156 -----
#endif
"rehash", dohash, 0, 0,
"repeat", dorepeat, 2, INF,
+ "sched", dosched, 0, INF,
"set", doset, 0, INF,
"setenv", dosetenv, 0, 2,
"shift", shift, 0, 1,
***************
*** 147,152
"umask", doumask, 0, 1,
"unalias", unalias, 1, INF,
"unhash", dounhash, 0, 0,
"unlimit", dounlimit, 0, INF,
"unset", unset, 1, INF,
"unsetenv", dounsetenv, 1, INF,
--- 162,168 -----
"umask", doumask, 0, 1,
"unalias", unalias, 1, INF,
"unhash", dounhash, 0, 0,
+ #ifndef OREO
"unlimit", dounlimit, 0, INF,
#endif
"unset", unset, 1, INF,
***************
*** 148,153
"unalias", unalias, 1, INF,
"unhash", dounhash, 0, 0,
"unlimit", dounlimit, 0, INF,
"unset", unset, 1, INF,
"unsetenv", dounsetenv, 1, INF,
"wait", dowait, 0, 0,
--- 164,170 -----
"unhash", dounhash, 0, 0,
#ifndef OREO
"unlimit", dounlimit, 0, INF,
+ #endif
"unset", unset, 1, INF,
"unsetenv", dounsetenv, 1, INF,
"wait", dowait, 0, 0,
***************
*** 219,224
"PIPE", "Broken pipe",
"ALRM", "Alarm clock",
"TERM", "Terminated",
"URG", "Urgent I/O condition",
"STOP", "Stopped (signal)",
"TSTP", "Stopped",
--- 236,243 -----
"PIPE", "Broken pipe",
"ALRM", "Alarm clock",
"TERM", "Terminated",
+ #ifdef SVID
+ # ifdef pyr /* these are really the BSD sigs, plus a few */
"URG", "Urgent I/O condition",
"STOP", "Stopped (signal)",
"TSTP", "Stopped",
***************
*** 226,232
"CHLD", "Child exited",
"TTIN", "Stopped (tty input)",
"TTOU", "Stopped (tty output)",
! "IO", "I/O possible",
"XCPU", "Cputime limit exceeded",
"XFSZ", "Filesize limit exceeded",
"VTALRM","Virtual timer expired",
--- 245,251 -----
"CHLD", "Child exited",
"TTIN", "Stopped (tty input)",
"TTOU", "Stopped (tty output)",
! "IO", "I/O possible",
"XCPU", "Cputime limit exceeded",
"XFSZ", "Filesize limit exceeded",
"VTALRM", "Virtual time alarm",
***************
*** 229,237
"IO", "I/O possible",
"XCPU", "Cputime limit exceeded",
"XFSZ", "Filesize limit exceeded",
! "VTALRM","Virtual timer expired",
! "PROF", "Profiling timer expired",
! "WINCH","Window size changed",
0, "Signal 29",
"USR1", "User defined signal 1",
"USR2", "User defined signal 2",
--- 248,286 -----
"IO", "I/O possible",
"XCPU", "Cputime limit exceeded",
"XFSZ", "Filesize limit exceeded",
! "VTALRM", "Virtual time alarm",
! "PROF", "Profiling time alarm",
! "USR1", "User signal 1",
! "USR2", "User signal 2",
! "PWR", "Power failure",
! 0, "Signal 31",
! 0, "Signal 32"
! # else pyr /* the first four real SVID sigs. */
! "USR1", "User signal 1",
! "USR2", "User signal 2",
! "CHLD", "Child exited",
! "PWR", "Power failure",
! # ifdef OREO
! "TSTP", "Stopped",
! "TTIN", "Stopped (tty input)",
! "TTOU", "Stopped (tty output)",
! "STOP", "Stopped (signal)",
! "XCPU", "Cputime limit exceeded",
! "XFSZ", "Filesize limit exceeded",
! "VTALRM", "Virtual time alarm",
! "PROF", "Profiling time alarm",
! "WINCH", "Window size changed",
! "CONT", "Continued",
! # else OREO
! 0, "Signal 20",
! 0, "Signal 21",
! 0, "Signal 22",
! 0, "Signal 23",
! 0, "Signal 24",
! 0, "Signal 25",
! 0, "Signal 26",
! 0, "Signal 27",
! 0, "Signal 28",
0, "Signal 29",
# endif OREO
0, "Signal 30",
***************
*** 233,238
"PROF", "Profiling timer expired",
"WINCH","Window size changed",
0, "Signal 29",
"USR1", "User defined signal 1",
"USR2", "User defined signal 2",
0, "Signal 32"
--- 282,321 -----
0, "Signal 27",
0, "Signal 28",
0, "Signal 29",
+ # endif OREO
+ 0, "Signal 30",
+ 0, "Signal 31",
+ 0, "Signal 32"
+ # endif pyr
+ #else SVID
+ "URG", "Urgent I/O condition",
+ "STOP", "Stopped (signal)",
+ "TSTP", "Stopped",
+ "CONT", "Continued",
+ "CHLD", "Child exited",
+ "TTIN", "Stopped (tty input)",
+ "TTOU", "Stopped (tty output)",
+ "IO", "I/O possible",
+ "XCPU", "Cputime limit exceeded",
+ "XFSZ", "Filesize limit exceeded",
+ "VTALRM", "Virtual time alarm",
+ "PROF", "Profiling time alarm",
+ # ifdef sun
+ "WINCH", "Window size changed",
+ "LOST", "Resource lost",
+ "USR1", "User signal 1",
+ "USR2", "User signal 2",
+ 0, "Signal 32"
+ # else sun
+ # ifdef pyr
+ "USR1", "User signal 1",
+ "USR2", "User signal 2",
+ "PWR", "Power failure",
+ 0, "Signal 31",
+ 0, "Signal 32"
+ # else pyr
+ "WINCH", "Window size changed",
+ 0, "Signal 29",
"USR1", "User defined signal 1",
"USR2", "User defined signal 2",
0, "Signal 32"
***************
*** 236,239
"USR1", "User defined signal 1",
"USR2", "User defined signal 2",
0, "Signal 32"
};
--- 319,325 -----
"USR1", "User defined signal 1",
"USR2", "User defined signal 2",
0, "Signal 32"
+ # endif pyr
+ # endif sun
+ #endif SVID
};
*** sh.lex.c Sat Mar 29 07:38:02 1986
--- /usr/src/local/tcsh/sh.lex.c Thu Sep 17 23:23:42 1987
***************
*** 9,15
#endif
#include "sh.h"
- #include <sgtty.h>
/*
* C shell
--- 9,14 -----
#endif
#include "sh.h"
/*
* C shell
***************
*** 221,234
c |= QUOTE;
else {
if (c == '\n')
! /*
! if (c1 == '`')
! c = ' ';
! else
! */
! c |= QUOTE;
! ungetC(c);
! c = '\\';
}
} else if (c == '\n') {
seterrc("Unmatched ", c1);
--- 220,234 -----
c |= QUOTE;
else {
if (c == '\n')
! c |= QUOTE;
! else if (c == '"')
! c |= QUOTE;
! else if (c == '\'')
! c |= QUOTE;
! else {
! ungetC(c);
! c = '\\';
! }
}
} else if (c == '\n') {
seterrc("Unmatched ", c1);
***************
*** 1126,1131
reread:
c = bgetc();
if (c < 0) {
struct sgttyb tty;
if (wanteof)
--- 1126,1135 -----
reread:
c = bgetc();
if (c < 0) {
+ #ifdef SVID
+ #include <termio.h>
+ struct termio tty;
+ #else
struct sgttyb tty;
#endif SVID
***************
*** 1127,1132
c = bgetc();
if (c < 0) {
struct sgttyb tty;
if (wanteof)
return (-1);
--- 1131,1137 -----
struct termio tty;
#else
struct sgttyb tty;
+ #endif SVID
if (wanteof)
return (-1);
***************
*** 1131,1136
if (wanteof)
return (-1);
/* was isatty but raw with ignoreeof yields problems */
if (ioctl(SHIN, TIOCGETP, (char *)&tty) == 0 &&
(tty.sg_flags & RAW) == 0) {
/* was 'short' for FILEC */
--- 1136,1145 -----
if (wanteof)
return (-1);
/* was isatty but raw with ignoreeof yields problems */
+ #ifdef SVID
+ if (ioctl(SHIN, TCGETA, &tty)==0 &&
+ (tty.c_cc[VEOF] != CEOF)) {
+ #else SVID
if (ioctl(SHIN, TIOCGETP, (char *)&tty) == 0 &&
(tty.sg_flags & RAW) == 0) {
#endif
***************
*** 1133,1139
/* was isatty but raw with ignoreeof yields problems */
if (ioctl(SHIN, TIOCGETP, (char *)&tty) == 0 &&
(tty.sg_flags & RAW) == 0) {
! /* was 'short' for FILEC */
int ctpgrp;
if (++sincereal > 25)
--- 1142,1148 -----
#else SVID
if (ioctl(SHIN, TIOCGETP, (char *)&tty) == 0 &&
(tty.sg_flags & RAW) == 0) {
! #endif
int ctpgrp;
if (++sincereal > 25)
***************
*** 1138,1143
if (++sincereal > 25)
goto oops;
if (tpgrp != -1 &&
ioctl(FSHTTY, TIOCGPGRP, (char *)&ctpgrp) == 0 &&
tpgrp != ctpgrp) {
--- 1147,1153 -----
if (++sincereal > 25)
goto oops;
+ #ifdef BSDJOBS
if (tpgrp != -1 &&
ioctl(FSHTTY, TIOCGPGRP, (char *)&ctpgrp) == 0 &&
tpgrp != ctpgrp) {
***************
*** 1147,1152
printf("Reset tty pgrp from %d to %d\n", ctpgrp, tpgrp);
goto reread;
}
if (adrof("ignoreeof")) {
if (loginsh)
printf("\nUse \"logout\" to logout.\n");
--- 1157,1163 -----
printf("Reset tty pgrp from %d to %d\n", ctpgrp, tpgrp);
goto reread;
}
+ #endif BSDJOBS
if (adrof("ignoreeof")) {
if (loginsh)
printf("\nUse \"logout\" to logout.\n");
***************
*** 1151,1157
if (loginsh)
printf("\nUse \"logout\" to logout.\n");
else
! printf("\nUse \"exit\" to leave csh.\n");
reset();
}
if (chkstop == 0)
--- 1162,1168 -----
if (loginsh)
printf("\nUse \"logout\" to logout.\n");
else
! printf("\nUse \"exit\" to leave tcsh.\n");
reset();
}
if (chkstop == 0)
***************
*** 1171,1178
bgetc()
{
register int buf, off, c;
! #ifdef FILEC
! char ttyline[BUFSIZ];
register int numleft = 0, roomleft;
#endif
--- 1182,1188 -----
bgetc()
{
register int buf, off, c;
! extern char InputBuf[];
register int numleft = 0, roomleft;
#ifdef TELL
***************
*** 1174,1180
#ifdef FILEC
char ttyline[BUFSIZ];
register int numleft = 0, roomleft;
- #endif
#ifdef TELL
if (cantell) {
--- 1184,1189 -----
register int buf, off, c;
extern char InputBuf[];
register int numleft = 0, roomleft;
#ifdef TELL
if (cantell) {
***************
*** 1187,1193
do
c = read(SHIN, fbuf[0], BUFSIZ);
while (c < 0 && errno == EINTR);
! if (c <= 0)
return (-1);
feobp += c;
}
--- 1196,1202 -----
do
c = read(SHIN, fbuf[0], BUFSIZ);
while (c < 0 && errno == EINTR);
! if (c <= 0) {
return (-1);
}
feobp += c;
***************
*** 1189,1194
while (c < 0 && errno == EINTR);
if (c <= 0)
return (-1);
feobp += c;
}
c = fbuf[0][fseekp - fbobp];
--- 1198,1204 -----
while (c < 0 && errno == EINTR);
if (c <= 0) {
return (-1);
+ }
feobp += c;
}
c = fbuf[0][fseekp - fbobp];
***************
*** 1210,1216
fbuf = nfbuf;
fbuf[fblocks] = calloc(BUFSIZ, sizeof (char));
fblocks++;
! goto again;
}
if (fseekp >= feobp) {
buf = (int) feobp / BUFSIZ;
--- 1220,1227 -----
fbuf = nfbuf;
fbuf[fblocks] = calloc(BUFSIZ, sizeof (char));
fblocks++;
! if (!intty)
! goto again;
}
if (fseekp >= feobp) {
buf = (int) feobp / BUFSIZ;
***************
*** 1215,1221
if (fseekp >= feobp) {
buf = (int) feobp / BUFSIZ;
off = (int) feobp % BUFSIZ;
! #ifndef FILEC
for (;;) {
c = read(SHIN, fbuf[buf] + off, BUFSIZ - off);
#else
--- 1226,1232 -----
if (fseekp >= feobp) {
buf = (int) feobp / BUFSIZ;
off = (int) feobp % BUFSIZ;
! roomleft = BUFSIZ - off;
for (;;) {
if (intty) { /* then use twenex routine */
/* PWP: get a line */
***************
*** 1217,1234
off = (int) feobp % BUFSIZ;
#ifndef FILEC
for (;;) {
! c = read(SHIN, fbuf[buf] + off, BUFSIZ - off);
! #else
! roomleft = BUFSIZ - off;
! for (;;) {
! if (filec && intty) {
! c = numleft ? numleft : tenex(ttyline, BUFSIZ);
! if (c > roomleft) {
! /* start with fresh buffer */
! feobp = fseekp = fblocks * BUFSIZ;
! numleft = c;
! goto again;
! }
if (c > 0)
copy(fbuf[buf] + off, ttyline, c);
numleft = 0;
--- 1228,1244 -----
off = (int) feobp % BUFSIZ;
roomleft = BUFSIZ - off;
for (;;) {
! if (intty) { /* then use twenex routine */
! /* PWP: get a line */
! c = numleft ? numleft : Inputl();
! if (c > roomleft) /* No room in this buffer? */
! {
! /* start with fresh buffer */
! feobp = fseekp =
! fblocks * BUFSIZ;
! numleft = c;
! goto again;
! }
if (c > 0)
copy (fbuf[buf] + off, InputBuf, c);
/* copy (fbuf[buf] + off, ttyline, c); */
***************
*** 1230,1236
goto again;
}
if (c > 0)
! copy(fbuf[buf] + off, ttyline, c);
numleft = 0;
} else
c = read(SHIN, fbuf[buf] + off, roomleft);
--- 1240,1247 -----
goto again;
}
if (c > 0)
! copy (fbuf[buf] + off, InputBuf, c);
! /* copy (fbuf[buf] + off, ttyline, c); */
numleft = 0;
}
else {
***************
*** 1232,1238
if (c > 0)
copy(fbuf[buf] + off, ttyline, c);
numleft = 0;
! } else
c = read(SHIN, fbuf[buf] + off, roomleft);
#endif
if (c >= 0)
--- 1243,1250 -----
copy (fbuf[buf] + off, InputBuf, c);
/* copy (fbuf[buf] + off, ttyline, c); */
numleft = 0;
! }
! else {
c = read(SHIN, fbuf[buf] + off, roomleft);
}
if (c >= 0)
***************
*** 1234,1240
numleft = 0;
} else
c = read(SHIN, fbuf[buf] + off, roomleft);
! #endif
if (c >= 0)
break;
if (errno == EWOULDBLOCK) {
--- 1246,1252 -----
}
else {
c = read(SHIN, fbuf[buf] + off, roomleft);
! }
if (c >= 0)
break;
if (errno == EWOULDBLOCK) {
***************
*** 1239,1245
break;
if (errno == EWOULDBLOCK) {
int off = 0;
!
(void) ioctl(SHIN, FIONBIO, (char *)&off);
} else if (errno != EINTR)
break;
--- 1251,1257 -----
break;
if (errno == EWOULDBLOCK) {
int off = 0;
!
(void) ioctl(SHIN, FIONBIO, (char *)&off);
} else if (errno != EINTR)
break;
***************
*** 1244,1250
} else if (errno != EINTR)
break;
}
! if (c <= 0)
return (-1);
feobp += c;
#ifndef FILEC
--- 1256,1262 -----
} else if (errno != EINTR)
break;
}
! if (c <= 0) {
return (-1);
}
feobp += c;
***************
*** 1246,1251
}
if (c <= 0)
return (-1);
feobp += c;
#ifndef FILEC
goto again;
--- 1258,1264 -----
}
if (c <= 0) {
return (-1);
+ }
feobp += c;
if (!intty)
goto again;
***************
*** 1247,1256
if (c <= 0)
return (-1);
feobp += c;
! #ifndef FILEC
! goto again;
! #else
! if (filec && !intty)
goto again;
#endif
}
--- 1260,1266 -----
return (-1);
}
feobp += c;
! if (!intty)
goto again;
}
c = fbuf[buf][(int) fseekp % BUFSIZ];
***************
*** 1252,1258
#else
if (filec && !intty)
goto again;
- #endif
}
c = fbuf[buf][(int) fseekp % BUFSIZ];
fseekp++;
--- 1262,1267 -----
feobp += c;
if (!intty)
goto again;
}
c = fbuf[buf][(int) fseekp % BUFSIZ];
fseekp++;
*** sh.local.h Thu Jun 6 13:15:34 1985
--- /usr/src/local/tcsh/sh.local.h Mon Aug 17 21:32:31 1987
***************
*** 22,28
*/
#define BUFSIZ 1024 /* default buffer size */
! #define SHELLPATH "/bin/csh"
#define OTHERSH "/bin/sh"
#define FORKSLEEP 10 /* delay loop on non-interactive fork failure */
#define MAILINTVL 600 /* 10 minutes */
--- 22,30 -----
*/
#define BUFSIZ 1024 /* default buffer size */
! #ifndef SHELLPATH
! #define SHELLPATH "/bin/tcsh"
! #endif
#define OTHERSH "/bin/sh"
#define FORKSLEEP 10 /* delay loop on non-interactive fork failure */
#define MAILINTVL 600 /* 10 minutes */
*** sh.misc.c Sat Mar 29 07:37:28 1986
--- /usr/src/local/tcsh/sh.misc.c Mon Aug 17 21:32:32 1987
***************
*** 88,94
#else
showall(av);
printf("i=%d: Out of memory\n", i);
! chdir("/usr/bill/cshcore");
abort();
#endif
return 0; /* fool lint */
--- 88,94 -----
#else
showall(av);
printf("i=%d: Out of memory\n", i);
! /* chdir("/usr/bill/cshcore"); */
abort();
#endif
return 0; /* fool lint */
*** sh.print.c Thu Jun 6 13:15:28 1985
--- /usr/src/local/tcsh/sh.print.c Mon Aug 17 21:44:36 1987
***************
*** 42,48
printf("%d%d", i / 10, i % 10);
}
! char linbuf[128];
char *linp = linbuf;
putchar(c)
--- 42,48 -----
printf("%d%d", i / 10, i % 10);
}
! char linbuf[2048]; /* was 128 */
char *linp = linbuf;
int lbuffed = 1; /* true if line buffered */
***************
*** 44,49
char linbuf[128];
char *linp = linbuf;
putchar(c)
register int c;
--- 44,50 -----
char linbuf[2048]; /* was 128 */
char *linp = linbuf;
+ int lbuffed = 1; /* true if line buffered */
putchar(c)
register int c;
***************
*** 49,55
register int c;
{
! if ((c & QUOTE) == 0 && (c == 0177 || c < ' ' && c != '\t' && c != '\n')) {
putchar('^');
if (c == 0177)
c = '?';
--- 50,56 -----
register int c;
{
! if ((c & QUOTE) == 0 && (c == 0177 || c < ' ' && c != '\t' && c != '\n' && c != '\r')) {
putchar('^');
if (c == 0177)
c = '?';
***************
*** 58,64
}
c &= TRIM;
*linp++ = c;
! if (c == '\n' || linp >= &linbuf[sizeof linbuf - 2])
flush();
}
--- 59,65 -----
}
c &= TRIM;
*linp++ = c;
! if ((lbuffed && c == '\n') || linp >= &linbuf[sizeof linbuf - 2])
flush();
}
***************
*** 62,67
flush();
}
draino()
{
--- 63,77 -----
flush();
}
+ putraw(c)
+ register int c;
+ {
+ c &= TRIM;
+ *linp++ = c;
+ if (linp >= &linbuf[sizeof linbuf - 2])
+ flush();
+ }
+
draino()
{
***************
*** 87,92
(void) write(unit, "\n", 1);
}
#endif
! (void) write(unit, linbuf, linp - linbuf);
linp = linbuf;
}
--- 97,102 -----
(void) write(unit, "\n", 1);
}
#endif
! (void) write(unit, linbuf, (int) (linp - linbuf));
linp = linbuf;
}
*** sh.proc.c Tue May 13 01:12:46 1986
--- /usr/src/local/tcsh/sh.proc.c Mon Aug 17 21:32:39 1987
***************
*** 34,39
register int pid;
union wait w;
int jobflags;
struct rusage ru;
loop:
--- 34,40 -----
register int pid;
union wait w;
int jobflags;
+ #ifndef OREO
struct rusage ru;
#endif
***************
*** 35,40
union wait w;
int jobflags;
struct rusage ru;
loop:
pid = wait3(&w, (setintr ? WNOHANG|WUNTRACED:WNOHANG), &ru);
--- 36,42 -----
int jobflags;
#ifndef OREO
struct rusage ru;
+ #endif
loop:
pid = wait3(&w, (setintr ? WNOHANG|WUNTRACED:WNOHANG),
***************
*** 37,43
struct rusage ru;
loop:
! pid = wait3(&w, (setintr ? WNOHANG|WUNTRACED:WNOHANG), &ru);
if (pid <= 0) {
if (errno == EINTR) {
errno = 0;
--- 39,50 -----
#endif
loop:
! pid = wait3(&w, (setintr ? WNOHANG|WUNTRACED:WNOHANG),
! #ifdef OREO
! 0);
! #else OREO
! &ru);
! #endif OREO
if (pid <= 0) {
if (errno == EINTR) {
errno = 0;
***************
*** 60,65
} else {
if (pp->p_flags & (PTIME|PPTIME) || adrof("time"))
(void) gettimeofday(&pp->p_etime, (struct timezone *)0);
pp->p_rusage = ru;
if (WIFSIGNALED(w)) {
if (w.w_termsig == SIGINT)
--- 67,73 -----
} else {
if (pp->p_flags & (PTIME|PPTIME) || adrof("time"))
(void) gettimeofday(&pp->p_etime, (struct timezone *)0);
+ #ifndef OREO
pp->p_rusage = ru;
#endif OREO
if (WIFSIGNALED(w)) {
***************
*** 61,66
if (pp->p_flags & (PTIME|PPTIME) || adrof("time"))
(void) gettimeofday(&pp->p_etime, (struct timezone *)0);
pp->p_rusage = ru;
if (WIFSIGNALED(w)) {
if (w.w_termsig == SIGINT)
pp->p_flags |= PINTERRUPTED;
--- 69,75 -----
(void) gettimeofday(&pp->p_etime, (struct timezone *)0);
#ifndef OREO
pp->p_rusage = ru;
+ #endif OREO
if (WIFSIGNALED(w)) {
if (w.w_termsig == SIGINT)
pp->p_flags |= PINTERRUPTED;
***************
*** 211,216
sigpause(sigblock(0) &~ sigmask(SIGCHLD));
}
(void) sigsetmask(omask);
if (tpgrp > 0) /* get tty back */
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&tpgrp);
if ((jobflags&(PSIGNALED|PSTOPPED|PTIME)) ||
--- 220,226 -----
sigpause(sigblock(0) &~ sigmask(SIGCHLD));
}
(void) sigsetmask(omask);
+ #ifdef BSDJOBS
if (tpgrp > 0) /* get tty back */
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&tpgrp);
#endif BSDJOBS
***************
*** 213,218
(void) sigsetmask(omask);
if (tpgrp > 0) /* get tty back */
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&tpgrp);
if ((jobflags&(PSIGNALED|PSTOPPED|PTIME)) ||
!eq(dcwd->di_name, fp->p_cwd->di_name)) {
if (jobflags&PSTOPPED)
--- 223,229 -----
#ifdef BSDJOBS
if (tpgrp > 0) /* get tty back */
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&tpgrp);
+ #endif BSDJOBS
if ((jobflags&(PSIGNALED|PSTOPPED|PTIME)) ||
!eq(dcwd->di_name, fp->p_cwd->di_name)) {
if (jobflags&PSTOPPED)
***************
*** 628,633
if (pp->p_flags&PPTIME && !(status&(PSTOPPED|PRUNNING))) {
if (linp != linbuf)
printf("\n\t");
{ static struct rusage zru;
prusage(&zru, &pp->p_rusage, &pp->p_etime,
&pp->p_btime);
--- 639,645 -----
if (pp->p_flags&PPTIME && !(status&(PSTOPPED|PRUNNING))) {
if (linp != linbuf)
printf("\n\t");
+ #ifndef OREO
{ static struct rusage zru;
prusage(&zru, &pp->p_rusage, &pp->p_etime,
&pp->p_btime);
***************
*** 632,637
prusage(&zru, &pp->p_rusage, &pp->p_etime,
&pp->p_btime);
}
}
if (tp == pp->p_friends) {
if (linp != linbuf)
--- 644,650 -----
prusage(&zru, &pp->p_rusage, &pp->p_etime,
&pp->p_btime);
}
+ #endif OREO
}
if (tp == pp->p_friends) {
if (linp != linbuf)
***************
*** 654,659
ptprint(tp)
register struct process *tp;
{
struct timeval tetime, diff;
static struct timeval ztime;
struct rusage ru;
--- 667,675 -----
ptprint(tp)
register struct process *tp;
{
+ #ifdef OREO
+ printf ("There is no time stuff for OREO yet (sorry).\n");
+ #else OREO
struct timeval tetime, diff;
static struct timeval ztime;
struct rusage ru;
***************
*** 669,674
tetime = diff;
} while ((pp = pp->p_friends) != tp);
prusage(&zru, &ru, &tetime, &ztime);
}
/*
--- 685,691 -----
tetime = diff;
} while ((pp = pp->p_friends) != tp);
prusage(&zru, &ru, &tetime, &ztime);
+ #endif OREO
}
/*
***************
*** 896,901
if (!foregnd)
pclrcurr(pp);
(void) pprint(pp, foregnd ? NAME|JOBDIR : NUMBER|NAME|AMPERSAND);
if (foregnd)
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pp->p_jobid);
if (jobflags&PSTOPPED)
--- 913,919 -----
if (!foregnd)
pclrcurr(pp);
(void) pprint(pp, foregnd ? NAME|JOBDIR : NUMBER|NAME|AMPERSAND);
+ #ifdef BSDJOBS
if (foregnd)
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pp->p_jobid);
if (jobflags&PSTOPPED)
***************
*** 900,905
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pp->p_jobid);
if (jobflags&PSTOPPED)
(void) killpg(pp->p_jobid, SIGCONT);
(void) sigsetmask(omask);
}
--- 918,924 -----
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pp->p_jobid);
if (jobflags&PSTOPPED)
(void) killpg(pp->p_jobid, SIGCONT);
+ #endif BSDJOBS
(void) sigsetmask(omask);
}
***************
*** 1063,1068
(void) signal(SIGINT, SIG_IGN);
(void) signal(SIGQUIT, SIG_IGN);
}
if (wanttty > 0)
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pgrp);
if (wanttty >= 0 && tpgrp >= 0)
--- 1082,1088 -----
(void) signal(SIGINT, SIG_IGN);
(void) signal(SIGQUIT, SIG_IGN);
}
+ #ifdef BSDJOBS
if (wanttty > 0)
(void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pgrp);
if (wanttty >= 0 && tpgrp >= 0)
***************
*** 1069,1074
(void) setpgrp(0, pgrp);
if (tpgrp > 0)
tpgrp = 0; /* gave tty away */
/*
* Nohup and nice apply only to TCOM's but it would be
* nice (?!?) if you could say "nohup (foo;bar)"
--- 1089,1095 -----
(void) setpgrp(0, pgrp);
if (tpgrp > 0)
tpgrp = 0; /* gave tty away */
+ #endif BSDJOBS
/*
* Nohup and nice apply only to TCOM's but it would be
* nice (?!?) if you could say "nohup (foo;bar)"
*** sh.proc.h Thu Jun 6 13:15:49 1985
--- /usr/src/local/tcsh/sh.proc.h Mon Aug 17 21:32:40 1987
***************
*** 30,35
/* if a job is stopped/background p_jobid gives its pgrp */
struct timeval p_btime; /* begin time */
struct timeval p_etime; /* end time */
struct rusage p_rusage;
char *p_command; /* first PMAXLEN chars of command */
};
--- 30,36 -----
/* if a job is stopped/background p_jobid gives its pgrp */
struct timeval p_btime; /* begin time */
struct timeval p_etime; /* end time */
+ #ifndef OREO
struct rusage p_rusage;
#endif OREO
char *p_command; /* first PMAXLEN chars of command */
***************
*** 31,36
struct timeval p_btime; /* begin time */
struct timeval p_etime; /* end time */
struct rusage p_rusage;
char *p_command; /* first PMAXLEN chars of command */
};
--- 32,38 -----
struct timeval p_etime; /* end time */
#ifndef OREO
struct rusage p_rusage;
+ #endif OREO
char *p_command; /* first PMAXLEN chars of command */
};
*** sh.sem.c Tue May 13 01:08:43 1986
--- /usr/src/local/tcsh/sh.sem.c Thu Sep 24 15:04:35 1987
***************
*** 187,192
(void) signal(SIGINT, SIG_IGN);
(void) signal(SIGQUIT, SIG_IGN);
}
if (wanttty > 0)
(void) ioctl(FSHTTY, TIOCSPGRP,
(char *)&pgrp);
--- 187,193 -----
(void) signal(SIGINT, SIG_IGN);
(void) signal(SIGQUIT, SIG_IGN);
}
+ #ifdef BSDJOBS
if (wanttty > 0)
(void) ioctl(FSHTTY, TIOCSPGRP,
(char *)&pgrp);
***************
*** 192,197
(char *)&pgrp);
if (wanttty >= 0 && tpgrp >= 0)
(void) setpgrp(0, pgrp);
if (tpgrp > 0)
tpgrp = 0;
if (t->t_dflg & FNOHUP)
--- 193,199 -----
(char *)&pgrp);
if (wanttty >= 0 && tpgrp >= 0)
(void) setpgrp(0, pgrp);
+ #endif BSDJOBS
if (tpgrp > 0)
tpgrp = 0;
if (t->t_dflg & FNOHUP)
*** sh.set.c Thu Jun 6 13:15:54 1985
--- /usr/src/local/tcsh/sh.set.c Thu Sep 24 15:03:28 1987
***************
*** 81,87
HIST = *p++;
HISTSUB = *p;
! } else if (eq(vp, "user"))
setenv("USER", value(vp));
else if (eq(vp, "term"))
setenv("TERM", value(vp));
--- 81,87 -----
HIST = *p++;
HISTSUB = *p;
! } else if (eq(vp, "user")) {
setenv("USER", value(vp));
} else if (eq(vp, "term")) {
setenv("TERM", value(vp));
***************
*** 83,89
HISTSUB = *p;
} else if (eq(vp, "user"))
setenv("USER", value(vp));
! else if (eq(vp, "term"))
setenv("TERM", value(vp));
else if (eq(vp, "home"))
setenv("HOME", value(vp));
--- 83,89 -----
HISTSUB = *p;
} else if (eq(vp, "user")) {
setenv("USER", value(vp));
! } else if (eq(vp, "term")) {
setenv("TERM", value(vp));
ed_Init(); /* reset the editor */
} else if (eq(vp, "home")) {
***************
*** 85,91
setenv("USER", value(vp));
else if (eq(vp, "term"))
setenv("TERM", value(vp));
! else if (eq(vp, "home"))
setenv("HOME", value(vp));
#ifdef FILEC
else if (eq(vp, "filec"))
--- 85,92 -----
setenv("USER", value(vp));
} else if (eq(vp, "term")) {
setenv("TERM", value(vp));
! ed_Init(); /* reset the editor */
! } else if (eq(vp, "home")) {
setenv("HOME", value(vp));
}
} while (p = *v++);
***************
*** 87,96
setenv("TERM", value(vp));
else if (eq(vp, "home"))
setenv("HOME", value(vp));
! #ifdef FILEC
! else if (eq(vp, "filec"))
! filec = 1;
! #endif
} while (p = *v++);
}
--- 88,94 -----
ed_Init(); /* reset the editor */
} else if (eq(vp, "home")) {
setenv("HOME", value(vp));
! }
} while (p = *v++);
}
***************
*** 435,444
HIST = '!';
HISTSUB = '^';
}
- #ifdef FILEC
- if (adrof("filec") == 0)
- filec = 0;
- #endif
}
unset1(v, head)
--- 433,438 -----
HIST = '!';
HISTSUB = '^';
}
}
unset1(v, head)
*** sh.time.c Tue May 13 01:07:31 1986
--- /usr/src/local/tcsh/sh.time.c Mon Aug 17 21:32:45 1987
***************
*** 16,21
settimes()
{
struct rusage ruch;
(void) gettimeofday(&time0, (struct timezone *)0);
--- 16,22 -----
settimes()
{
+ #ifndef OREO
struct rusage ruch;
#endif
***************
*** 17,22
settimes()
{
struct rusage ruch;
(void) gettimeofday(&time0, (struct timezone *)0);
(void) getrusage(RUSAGE_SELF, &ru0);
--- 18,24 -----
{
#ifndef OREO
struct rusage ruch;
+ #endif
(void) gettimeofday(&time0, (struct timezone *)0);
#ifndef OREO
***************
*** 19,24
struct rusage ruch;
(void) gettimeofday(&time0, (struct timezone *)0);
(void) getrusage(RUSAGE_SELF, &ru0);
(void) getrusage(RUSAGE_CHILDREN, &ruch);
ruadd(&ru0, &ruch);
--- 21,27 -----
#endif
(void) gettimeofday(&time0, (struct timezone *)0);
+ #ifndef OREO
(void) getrusage(RUSAGE_SELF, &ru0);
(void) getrusage(RUSAGE_CHILDREN, &ruch);
ruadd(&ru0, &ruch);
***************
*** 22,27
(void) getrusage(RUSAGE_SELF, &ru0);
(void) getrusage(RUSAGE_CHILDREN, &ruch);
ruadd(&ru0, &ruch);
}
/*
--- 25,31 -----
(void) getrusage(RUSAGE_SELF, &ru0);
(void) getrusage(RUSAGE_CHILDREN, &ruch);
ruadd(&ru0, &ruch);
+ #endif OREO
}
/*
***************
*** 30,35
*/
dotime()
{
struct timeval timedol;
struct rusage ru1, ruch;
--- 34,40 -----
*/
dotime()
{
+ #ifndef OREO
struct timeval timedol;
struct rusage ru1, ruch;
***************
*** 38,43
ruadd(&ru1, &ruch);
(void) gettimeofday(&timedol, (struct timezone *)0);
prusage(&ru0, &ru1, &timedol, &time0);
}
/*
--- 43,49 -----
ruadd(&ru1, &ruch);
(void) gettimeofday(&timedol, (struct timezone *)0);
prusage(&ru0, &ru1, &timedol, &time0);
+ #endif
}
/*
***************
*** 57,62
(void) setpriority(PRIO_PROCESS, 0, nval);
}
ruadd(ru, ru2)
register struct rusage *ru, *ru2;
{
--- 63,69 -----
(void) setpriority(PRIO_PROCESS, 0, nval);
}
+ #ifndef OREO
ruadd(ru, ru2)
register struct rusage *ru, *ru2;
{
***************
*** 155,160
}
putchar('\n');
}
pdeltat(t1, t0)
struct timeval *t1, *t0;
--- 162,168 -----
}
putchar('\n');
}
+ #endif
pdeltat(t1, t0)
struct timeval *t1, *t0;
*** Makefile Thu Sep 24 15:24:33 1987
--- /usr/src/local/tcsh/Makefile Mon Aug 17 21:53:45 1987
***************
*** 37,43
# on some machines, the alloc.c works. On others, it dosn't. Besides,
# nmalloc is much faster...
! ALLOC=nmalloc.o
SHOBJS= sh.o sh.dir.o sh.dol.o sh.err.o sh.exec.o \
sh.exp.o sh.func.o sh.glob.o sh.hist.o sh.init.o sh.lex.o sh.misc.o \
--- 37,43 -----
# on some machines, the alloc.c works. On others, it dosn't. Besides,
# nmalloc is much faster...
! ALLOC=alloc.o
SHOBJS= sh.o sh.char.o sh.dir.o sh.dol.o sh.err.o \
sh.exec.o sh.exp.o sh.file.o sh.func.o sh.glob.o sh.hist.o sh.init.o \
***************
*** 39,47
# nmalloc is much faster...
ALLOC=nmalloc.o
! SHOBJS= sh.o sh.dir.o sh.dol.o sh.err.o sh.exec.o \
! sh.exp.o sh.func.o sh.glob.o sh.hist.o sh.init.o sh.lex.o sh.misc.o \
! sh.parse.o sh.print.o sh.proc.o sh.sem.o sh.set.o sh.sig.o sh.time.o
TWOBJS= tw.help.o tw.init.o tw.parse.o tw.spell.o
--- 39,48 -----
# nmalloc is much faster...
ALLOC=alloc.o
! SHOBJS= sh.o sh.char.o sh.dir.o sh.dol.o sh.err.o \
! sh.exec.o sh.exp.o sh.file.o sh.func.o sh.glob.o sh.hist.o sh.init.o \
! sh.lex.o sh.misc.o sh.parse.o sh.print.o sh.proc.o sh.sem.o sh.set.o \
! sh.time.o
TWOBJS= tw.help.o tw.init.o tw.parse.o tw.spell.o
***************
*** 61,67
rm -f tcsh.ps
-ptroff -man tcsh.1 > tcsh.ps
! ${SHOBJS}: sh.h sh.local.h
${TWOBJS}: sh.h sh.local.h tw.h
--- 62,68 -----
rm -f tcsh.ps
-ptroff -man tcsh.1 > tcsh.ps
! # ${SHOBJS}: sh.h sh.local.h
${TWOBJS}: sh.h sh.local.h tw.h
***************
*** 124,126
tags: /tmp
${CTAGS} sh*.c
--- 125,148 -----
tags: /tmp
${CTAGS} sh*.c
+
+ sh.o: sh.h sh.local.h sh.char.h
+ sh.char.o: sh.char.h
+ sh.dir.o: sh.h sh.local.h sh.dir.h
+ sh.dol.o: sh.h sh.local.h sh.char.h
+ sh.err.o: sh.h sh.local.h sh.char.h
+ sh.exec.o: sh.h sh.local.h sh.char.h
+ sh.exp.o: sh.h sh.local.h sh.char.h
+ sh.file.o: sh.h sh.local.h sh.char.h
+ sh.func.o: sh.h sh.local.h sh.char.h
+ sh.glob.o: sh.h sh.local.h sh.char.h
+ sh.hist.o: sh.h sh.local.h sh.char.h
+ sh.init.o: sh.local.h
+ sh.lex.o: sh.h sh.local.h sh.char.h
+ sh.misc.o: sh.h sh.local.h sh.char.h
+ sh.parse.o: sh.h sh.local.h sh.char.h
+ sh.print.o: sh.h sh.local.h sh.char.h
+ sh.proc.o: sh.h sh.local.h sh.dir.h sh.proc.h sh.char.h
+ sh.sem.o: sh.h sh.local.h sh.proc.h sh.char.h
+ sh.set.o: sh.h sh.local.h sh.char.h
+ sh.time.o: sh.h sh.local.h sh.char.h
*** ed.init.c Thu Sep 24 15:24:43 1987
--- /usr/src/local/tcsh/ed.init.c Mon Aug 31 09:26:09 1987
***************
*** 86,92
nlc.t_lnextc = CTRL(v); /* literal next character */
# ifdef SIGWINCH
! sigset(SIGWINCH, window_change); /* for window systems */
# endif
# endif OREO
#else SVID
--- 86,92 -----
nlc.t_lnextc = CTRL(v); /* literal next character */
# ifdef SIGWINCH
! signal(SIGWINCH, window_change); /* for window systems */
# endif
# endif OREO
#else SVID
***************
*** 135,141
nlc.t_lnextc = CTRL(v); /* literal next character */
# ifdef SIGWINCH
! sigset(SIGWINCH, window_change); /* for window systems */
# endif
#endif SVID
}
--- 135,141 -----
nlc.t_lnextc = CTRL(v); /* literal next character */
# ifdef SIGWINCH
! signal(SIGWINCH, window_change); /* for window systems */
# endif
#endif SVID
}
***************
*** 190,196
}
xb.sg_erase = '\177'; /* del prev. char == DEL */
! xb.sg_kill = CTRL(w); /* special case of del region */
xtc.t_intrc = CTRL(c); /* SIGINTR */
xtc.t_quitc = CTRL(\\); /* SIGQUIT */
--- 190,196 -----
}
xb.sg_erase = '\177'; /* del prev. char == DEL */
! xb.sg_kill = CTRL(u); /* special case of del region */
xtc.t_intrc = CTRL(c); /* SIGINTR */
xtc.t_quitc = CTRL(\\); /* SIGQUIT */
*** ed.inputl.c Thu Sep 24 15:24:45 1987
--- /usr/src/local/tcsh/ed.inputl.c Thu Sep 17 23:24:16 1987
***************
*** 212,218
hp = Histlist.Hnext;
if (hp == (struct Hist *)0) {
! printf ("no hp\n");
Beep();
return;
}
--- 212,218 -----
hp = Histlist.Hnext;
if (hp == (struct Hist *)0) {
! printf ("No history pointer, probably no history\n");
Beep();
return;
}
*** ed.screen.c Thu Sep 24 15:25:04 1987
--- /usr/src/local/tcsh/ed.screen.c Mon Aug 17 23:51:23 1987
***************
*** 55,61
if (where > TermV) {
#ifdef DEBUG_SCREEN
! printf ("MoveToLine: where is riduculous: %d\r\n", where);
flush();
#endif
return;
--- 55,61 -----
if (where > TermV) {
#ifdef DEBUG_SCREEN
! printf ("MoveToLine: where is ridiculous: %d\r\n", where);
flush();
#endif
return;
***************
*** 240,245
char *area = buffer;
char *MyTerm;
char *getenv();
#ifdef SIGWINCH
sighold(SIGWINCH); /* don't want to confuse things here */
--- 240,246 -----
char *area = buffer;
char *MyTerm;
char *getenv();
+ int omask;
#ifdef SIGWINCH
omask = sighold(SIGWINCH); /* don't want to confuse things here */
***************
*** 242,248
char *getenv();
#ifdef SIGWINCH
! sighold(SIGWINCH); /* don't want to confuse things here */
#endif
MyTerm = getenv("TERM");
--- 243,249 -----
int omask;
#ifdef SIGWINCH
! omask = sighold(SIGWINCH); /* don't want to confuse things here */
#endif
MyTerm = getenv("TERM");
***************
*** 355,361
ClearDisp();
#ifdef SIGWINCH
! sigrelse(SIGWINCH); /* can change it again */
#endif
}
--- 356,362 -----
ClearDisp();
#ifdef SIGWINCH
! sigsetmask(omask);
#endif
}
***************
*** 396,401
ClearDisp();
#ifdef SIGWINCH
! sigrelse(SIGWINCH); /* can change it again */
#endif
}
--- 397,403 -----
ClearDisp();
#ifdef SIGWINCH
! (void) sigsetmask(sigblock(0) & ~sigmask(SIGWINCH));
#endif
}
***************
*** 399,401
sigrelse(SIGWINCH); /* can change it again */
#endif
}
--- 400,409 -----
(void) sigsetmask(sigblock(0) & ~sigmask(SIGWINCH));
#endif
}
+
+
+
+
+
+
+
*** pwprintf.c Thu Sep 24 15:25:07 1987
--- /usr/src/local/tcsh/pwprintf.c Mon Aug 17 22:24:47 1987
***************
*** 1,7
/* A public-domain, minimal printf routine that prints through the putchar()
routine. Feel free to use for anything... -- 7/17/87 Paul Placeway */
! #include <ctype.h>
#include <varargs.h>
/* use varargs since it's the RIGHT WAY, and assuming things about parameters
--- 1,9 -----
/* A public-domain, minimal printf routine that prints through the putchar()
routine. Feel free to use for anything... -- 7/17/87 Paul Placeway */
! #include "sh.h"
! /*#include <ctype.h>*/
! #include "sh.char.h"
#include <varargs.h>
/* use varargs since it's the RIGHT WAY, and assuming things about parameters
*** sh.nfunc.c Thu Sep 24 15:24:30 1987
--- /usr/src/local/tcsh/sh.nfunc.c Mon Aug 17 23:19:24 1987
***************
*** 7,12
#include "tw.h"
#include <sys/ioctl.h>
static int parsekey();
static char *unparsekey();
--- 7,13 -----
#include "tw.h"
#include <sys/ioctl.h>
+ #include "sh.char.h"
static int parsekey();
static char *unparsekey();
***************
*** 11,16
static int parsekey();
static char *unparsekey();
/*
* Tops-C shell
*/
--- 12,19 -----
static int parsekey();
static char *unparsekey();
+ extern int tglob(), trim();
+
/*
* Tops-C shell
*/
***************
*** 344,350
struct stat statb;
if (setintr)
! sigrelse(SIGINT);
if (*++v == NULL) {
t_search("", (char *)0, LIST, 0, 0);
--- 347,353 -----
struct stat statb;
if (setintr)
! (void) sigsetmask(sigblock(0) & ~sigmask(SIGINT));
if (*++v == NULL) {
t_search("", (char *)0, LIST, 0, 0);
***************
*** 356,362
if (v == 0)
bferr("No match");
} else
! scan(v, trim);
k = 0;
if (*(v+1))
f = 1;
--- 359,368 -----
if (v == 0)
bferr("No match");
} else
! /*
! scan(v, trim);
! */
! trim(v);
k = 0;
if (*(v+1))
f = 1;
*** tw.h Thu Sep 24 15:25:11 1987
--- /usr/src/local/tcsh/tw.h Mon Aug 17 23:15:06 1987
***************
*** 1,3
#ifdef MAKE_TWENEX
#define FREE_ITEMS(items,num)\
--- 1,4 -----
+
#ifdef MAKE_TWENEX
#define FREE_ITEMS(items,num)\
***************
*** 2,8
#define FREE_ITEMS(items,num)\
{\
! sighold (SIGINT);\
free_items (items,num);\
items = NULL;\
sigrelse (SIGINT);\
--- 3,10 -----
#define FREE_ITEMS(items,num)\
{\
! int omask;\
! omask = sighold (SIGINT);\
free_items (items,num);\
items = NULL;\
sigsetmask(omask);\
***************
*** 5,11
sighold (SIGINT);\
free_items (items,num);\
items = NULL;\
! sigrelse (SIGINT);\
}
#define FREE_DIR(fd)\
--- 7,13 -----
omask = sighold (SIGINT);\
free_items (items,num);\
items = NULL;\
! sigsetmask(omask);\
}
#define FREE_DIR(fd)\
***************
*** 10,16
#define FREE_DIR(fd)\
{\
! sighold (SIGINT);\
closedir (fd);\
fd = NULL;\
sigrelse (SIGINT);\
--- 12,19 -----
#define FREE_DIR(fd)\
{\
! int omask;\
! omask = sighold (SIGINT);\
closedir (fd);\
fd = NULL;\
sigsetmask(omask);\
***************
*** 13,19
sighold (SIGINT);\
closedir (fd);\
fd = NULL;\
! sigrelse (SIGINT);\
}
#define TRUE 1
--- 16,22 -----
omask = sighold (SIGINT);\
closedir (fd);\
fd = NULL;\
! sigsetmask(omask);\
}
#define TRUE 1
*** tw.help.c Thu Sep 24 15:25:13 1987
--- /usr/src/local/tcsh/tw.help.c Mon Aug 17 23:16:22 1987
***************
*** 3,9
#include "tw.h"
#include "sh.h"
-
/* actually look up and print documentation on a file. Look down the path
for an approiate file, then print it. Note that the printing is NOT
PAGED. This is because the function is NOT ment to look at manual pages,
--- 3,8 -----
#include "tw.h"
#include "sh.h"
/* actually look up and print documentation on a file. Look down the path
for an appropriate file, then print it. Note that the printing is NOT
PAGED. This is because the function is NOT ment to look at manual pages,
***************
*** 5,11
/* actually look up and print documentation on a file. Look down the path
! for an approiate file, then print it. Note that the printing is NOT
PAGED. This is because the function is NOT ment to look at manual pages,
it only does so if there is no .help file to look in. */
--- 4,10 -----
#include "sh.h"
/* actually look up and print documentation on a file. Look down the path
! for an appropriate file, then print it. Note that the printing is NOT
PAGED. This is because the function is NOT ment to look at manual pages,
it only does so if there is no .help file to look in. */
*** tw.init.c Thu Sep 24 15:25:15 1987
--- /usr/src/local/tcsh/tw.init.c Thu Sep 24 15:45:32 1987
***************
*** 120,125
register char *cp;
register struct biltins *bptr;
for (bptr = bfunc; cp = bptr->bname; bptr++) {
tw_add_comm_name (cp);
}
--- 120,127 -----
register char *cp;
register struct biltins *bptr;
+ for (bptr = bfunc; bptr < &bfunc[nbfunc]; bptr++) {
+ #ifdef OUTDEF
for (bptr = bfunc; cp = bptr->bname; bptr++) {
#endif
tw_add_comm_name (cp);
***************
*** 121,126
register struct biltins *bptr;
for (bptr = bfunc; cp = bptr->bname; bptr++) {
tw_add_comm_name (cp);
}
}
--- 123,129 -----
for (bptr = bfunc; bptr < &bfunc[nbfunc]; bptr++) {
#ifdef OUTDEF
for (bptr = bfunc; cp = bptr->bname; bptr++) {
+ #endif
tw_add_comm_name (cp);
}
}
***************
*** 127,132
tw_add_aliases ()
{
register struct varent *vp;
vp = &aliases;
--- 130,161 -----
tw_add_aliases ()
{
+ register struct varent *p;
+ register struct varent *c;
+
+ p = &aliases;
+ for (;;) {
+ while (p->v_left)
+ p = p->v_left;
+ x:
+ if (p->v_parent == 0) /* is it the header? */
+ return;
+ tw_add_comm_name(p->v_name);
+ if (p->v_right) {
+ p = p->v_right;
+ continue;
+ }
+ do {
+ c = p;
+ p = p->v_parent;
+ } while (p->v_right == c);
+ goto x;
+ }
+ }
+
+ #ifdef OUTDEF
+ tw_add_aliases ()
+ {
register struct varent *vp;
vp = &aliases;
***************
*** 136,138
}
}
--- 165,169 -----
}
}
+ #endif
+
*** tw.parse.c Thu Sep 24 15:25:19 1987
--- /usr/src/local/tcsh/tw.parse.c Thu Sep 24 15:46:59 1987
***************
*** 64,70
/* printf ("\ncmd_st:%s:\nword_start:%s:\n", cmd_st, word_start); */
/* for debugging */
if (command == RECOGNIZE) {
! search_ret = t_search (word, wp, command, space_left, is_a_cmd);
if (InsertStr(wp) < 0) /* put it in the input buffer */
return 2; /* error inserting */
return search_ret;
--- 64,70 -----
/* printf ("\ncmd_st:%s:\nword_start:%s:\n", cmd_st, word_start); */
/* for debugging */
if (command == RECOGNIZE) {
! search_ret = t_search (word, wp, command, space_left, is_a_cmd);
if (InsertStr(wp) < 0) /* put it in the input buffer */
return 2; /* error inserting */
return search_ret;
***************
*** 200,206
numitems = 0;
if (dir_fd != NULL)
FREE_DIR (dir_fd);
-
looking_for_lognames = (*word == '~') && (index (word, '/') == NULL);
looking_for_command &= (*word != '~') && (index (word, '/') == NULL);
--- 200,205 -----
numitems = 0;
if (dir_fd != NULL)
FREE_DIR (dir_fd);
looking_for_lognames = (*word == '~') && (index (word, '/') == NULL);
looking_for_command &= (*word != '~') && (index (word, '/') == NULL);
***************
*** 206,212
dot_got = FALSE;
stat (".", &dot_statb);
-
if (looking_for_lognames) { /* Looking for login names? */
setpwent (); /* Open passwd file */
copyn (name, &word[1], MAXNAMLEN); /* name sans ~ */
--- 205,210 -----
dot_got = FALSE;
stat (".", &dot_statb);
if (looking_for_lognames) { /* Looking for login names? */
setpwent (); /* Open passwd file */
copyn (name, &word[1], MAXNAMLEN); /* name sans ~ */
*** tw.spell.c Thu Sep 24 15:24:53 1987
--- /usr/src/local/tcsh/tw.spell.c Mon Aug 17 23:00:23 1987
***************
*** 1,4
- #include "sh.h"
#define MAKE_TWENEX
#include "tw.h"
--- 1,3 -----
#define MAKE_TWENEX
#include "tw.h"
SHAR_EOF
fi
exit 0
# End of shell archive