|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 6246 (0x1866)
Types: TextFile
Names: »sh.patch«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/sh.ulimit/sh.patch«
*** /usr/src/bin/sh/Makefile Fri Jul 1 06:48:58 1983
--- Makefile Mon Jun 30 15:47:27 1986
***************
*** 19,24
sh: xec.o service.o error.o io.o
sh: print.o macro.o expand.o
sh: ctype.o msg.o
blok.o: brkincr.h
fault.o: brkincr.h
main.o: brkincr.h
--- 19,25 -----
sh: xec.o service.o error.o io.o
sh: print.o macro.o expand.o
sh: ctype.o msg.o
+ sh: ulimit.o
blok.o: brkincr.h
fault.o: brkincr.h
main.o: brkincr.h
*** /usr/src/bin/sh/defs.h Sat Jun 11 02:38:06 1983
--- defs.h Mon Jun 30 15:44:51 1986
***************
*** 54,59
#define SYSREAD 17
#define SYSTST 18
#define SYSUMASK 19
/* used for input and output of shell */
#define INIO 10
--- 54,60 -----
#define SYSREAD 17
#define SYSTST 18
#define SYSUMASK 19
+ #define SYSULIMIT 20
/* used for input and output of shell */
#define INIO 10
***************
*** 264,269
MSG badopt;
MSG badparam;
MSG badsub;
MSG nospace;
MSG notfound;
MSG badtrap;
--- 265,271 -----
MSG badopt;
MSG badparam;
MSG badsub;
+ MSG badulimit;
MSG nospace;
MSG notfound;
MSG badtrap;
*** /usr/src/bin/sh/msg.c Thu Aug 11 23:21:53 1983
--- msg.c Mon Jun 30 15:45:24 1986
***************
*** 26,31
MSG badnum = "bad number";
MSG badparam = "parameter not set";
MSG badsub = "bad substitution";
MSG badcreate = "cannot create";
MSG illegal = "illegal io";
MSG restricted = "restricted";
--- 26,32 -----
MSG badnum = "bad number";
MSG badparam = "parameter not set";
MSG badsub = "bad substitution";
+ MSG badulimit = "bad ulimit";
MSG badcreate = "cannot create";
MSG illegal = "illegal io";
MSG restricted = "restricted";
***************
*** 135,139
{"exec", SYSEXEC},
{"times", SYSTIMES},
{"umask", SYSUMASK},
{0, 0},
};
--- 136,141 -----
{"exec", SYSEXEC},
{"times", SYSTIMES},
{"umask", SYSUMASK},
+ {"ulimit", SYSULIMIT},
{0, 0},
};
*** /usr/src/bin/sh/xec.c Thu Aug 11 23:21:56 1983
--- xec.c Mon Jun 30 16:07:08 1986
***************
*** 222,227
}
break;
default:
internal=builtin(argn,com);
--- 222,305 -----
}
break;
+ case SYSULIMIT:
+ {
+ long int i;
+ long ulimit();
+ int command = 2;
+
+ if (*a1 == '-')
+ {
+ switch(*(a1+1)) {
+ case 'f':
+ command = 2;
+ break;
+
+ #ifdef rt
+ case 'p':
+ command = 5;
+ break;
+
+ #endif
+ case 'c':
+ command = 7;
+ break;
+
+ case 'd':
+ command = 9;
+ break;
+
+ case 'm':
+ command = 11;
+ break;
+
+ case 't':
+ command = 13;
+ break;
+
+ default:
+ error(badopt);
+ }
+ a1 = com[2];
+ }
+ if (a1)
+ {
+ int c;
+
+ i = 0;
+ while ((c = *a1++) >= '0' && c <= '9')
+ {
+ i = (i * 10) + (long)(c - '0');
+ if (i < 0)
+ error(badulimit);
+ }
+ if (c || i < 0)
+ error(badulimit);
+ }
+ else
+ {
+ i = -1;
+ command--;
+ }
+
+ if ((i = ulimit(command,i)) < 0)
+ error(badulimit);
+
+ switch (command) {
+ case 1:
+ #ifdef rt
+ case 4:
+ #endif
+ case 6:
+ case 8:
+ case 10:
+ case 12:
+ prl(i);
+ prc(NL);
+ }
+ break;
+ }
+
default:
internal=builtin(argn,com);
***************
*** 422,425
FI
execute(cmd(NL, NLFLG|MTFLG),0);
pop();
}
--- 500,532 -----
FI
execute(cmd(NL, NLFLG|MTFLG),0);
pop();
+ }
+
+ /*
+ * standard itos expects 16 bit ints, so write a prl() routine
+ */
+
+ static int prl (n)
+ register long n;
+ {
+ register int i, j;
+ char buf[12], c;
+
+ buf[0] = '0';
+ buf[1] = buf[11] = 0;
+ for (i = 0; n && i < 11; i++)
+ {
+ buf[i] = n % 10 + '0';
+ n /= 10;
+ }
+ buf[i] = 0;
+
+ for (j = --i, i = 0; i < j ; i++, j--)
+ {
+ c = buf[j];
+ buf[j] = buf[i];
+ buf[i] = c;
+ }
+
+ prs(buf);
}
*** /usr/man/man1/sh.1 Thu Jul 28 17:52:12 1983
--- sh.1 Mon Jun 30 15:44:06 1986
***************
*** 1,6
.TH SH 1 "7 February 1983"
.SH NAME
! sh, for, case, if, while, \fB:\fP, \fB.\fP, break, continue, cd, eval, exec, exit, export, login, read, readonly, set, shift, times, trap, umask, wait \- command language
.SH SYNOPSIS
.B sh
[
--- 1,6 -----
.TH SH 1 "7 February 1983"
.SH NAME
! sh, for, case, if, while, \fB:\fP, \fB.\fP, break, continue, cd, eval, exec, exit, export, login, read, readonly, set, shift, times, trap, ulimit, umask, wait \- command language
.SH SYNOPSIS
.B sh
[
***************
*** 762,767
.IR sigvec (2).
.I Trap
with no arguments prints a list of commands associated with each signal number.
.TP
\fBumask \fR[ \fInnn\fR ]
The user file creation mask is set to the octal value
--- 762,813 -----
.IR sigvec (2).
.I Trap
with no arguments prints a list of commands associated with each signal number.
+ .TP
+ \fBulimit\fP \*(OK \fB\-cdfmpt\fP \*(CK \*(OK \f2n\^\fP \*(CK
+ imposes a size limit of
+ .IR n\^ .
+ .RS
+ .TP
+ .B \-c
+ imposes a size limit of
+ .I n\^
+ blocks on the size of core dumps.
+ .TP
+ .B \-d
+ imposes a size limit of
+ .I n\^
+ blocks on the size of the data area.
+ .TP
+ .B \-f
+ imposes a size limit of
+ .I n
+ blocks on files written by child processes (files of any size may be read).
+ .TP
+ .B \-m
+ imposes a soft limit of
+ .I n\^
+ blocks on the size of physical memory.
+ .TP
+ .B \-p
+ changes the pipe size to
+ .I n
+ (\s-1UNIX\s+1/\s-1RT\s+1 only).
+ .TP
+ .B \-t
+ imposes a time limit of
+ .I n\^
+ seconds to be used by each process.
+ .PP
+ If no option is given,
+ .B \-f
+ is assumed.
+ If
+ .I n\^
+ is not given, the current limit is printed.
+ (As far as
+ .B ulimit
+ is concerned, a block is 512 bytes.)
+ .RE
.TP
\fBumask \fR[ \fInnn\fR ]
The user file creation mask is set to the octal value