itsam: rm dregs - plan9port - [fork] Plan 9 from user space Err mx1.adamsgaard.dk 70 hgit clone git://src.adamsgaard.dk/plan9port URL:git://src.adamsgaard.dk/plan9port mx1.adamsgaard.dk 70 1Log /src/plan9port/log.gph mx1.adamsgaard.dk 70 1Files /src/plan9port/files.gph mx1.adamsgaard.dk 70 1Refs /src/plan9port/refs.gph mx1.adamsgaard.dk 70 1README /src/plan9port/file/README.md.gph mx1.adamsgaard.dk 70 1LICENSE /src/plan9port/file/LICENSE.gph mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1commit 0a513e65607223d11ba94003256b13ef5779e7e8 /src/plan9port/commit/0a513e65607223d11ba94003256b13ef5779e7e8.gph mx1.adamsgaard.dk 70 1parent 7f6458b045e04b97dd06b3171ac67e9ecde32429 /src/plan9port/commit/7f6458b045e04b97dd06b3171ac67e9ecde32429.gph mx1.adamsgaard.dk 70 hAuthor: Russ Cox URL:mailto:rsc@swtch.com mx1.adamsgaard.dk 70 iDate: Sun, 3 Jan 2021 00:54:20 -0500 Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 isam: rm dregs Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 iDiffstat: Err mx1.adamsgaard.dk 70 i D src/cmd/sam/README | 29 ----------------------------- Err mx1.adamsgaard.dk 70 i D src/cmd/sam/_libc.h | 40 ------------------------------- Err mx1.adamsgaard.dk 70 i D src/cmd/sam/err | 39 ------------------------------- Err mx1.adamsgaard.dk 70 i D src/cmd/sam/plan9.c | 185 ------------------------------ Err mx1.adamsgaard.dk 70 i Err mx1.adamsgaard.dk 70 i4 files changed, 0 insertions(+), 293 deletions(-) Err mx1.adamsgaard.dk 70 i--- Err mx1.adamsgaard.dk 70 1diff --git a/src/cmd/sam/README b/src/cmd/sam/README /src/plan9port/file/src/cmd/sam/README.gph mx1.adamsgaard.dk 70 it@@ -1,29 +0,0 @@ Err mx1.adamsgaard.dk 70 i-This is sam (not including samterm) from the 4th edition of Plan 9, Err mx1.adamsgaard.dk 70 i-with changes so that it can be compiled under unix. Err mx1.adamsgaard.dk 70 i-(Tested on Solaris 7 and Debian 3.0r1.) Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-Some extra libraries are needed. First, fetch libutf-2.0 and libfmt-2.0 Err mx1.adamsgaard.dk 70 i-from Err mx1.adamsgaard.dk 70 i- http://pdos.lcs.mit.edu/~rsc/software/ Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-(Beware that in libfmt/fmt.c there is a line that says: Err mx1.adamsgaard.dk 70 i- 'u', __ifmt, /* in Plan 9, __flagfmt */ Err mx1.adamsgaard.dk 70 i-Thus, sam will have to fmtinstall the other thing. Other ported programs Err mx1.adamsgaard.dk 70 i-may have to do the same. The fmt library should probably print messages Err mx1.adamsgaard.dk 70 i-about bad format characters to stderr, since no one seems to check the Err mx1.adamsgaard.dk 70 i-return codes.) Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-Compile and install those two libraries. Err mx1.adamsgaard.dk 70 i-Set PREFIX in the Makefile to match, then compile sam. Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-Your C compiler will emit many complaints of the form: Err mx1.adamsgaard.dk 70 i- sam.c:496: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-This is because the Plan 9 compiler has a slightly different (better, Err mx1.adamsgaard.dk 70 i-ala Oberon) type system than ISO C. Popular compilers generate the right Err mx1.adamsgaard.dk 70 i-code, so in an act of civil disobediance I changed just enough to get Err mx1.adamsgaard.dk 70 i-it to compile, but left the type errors in. Now the next C standard can Err mx1.adamsgaard.dk 70 i-adopt this extension, because at least one important C program uses it! Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i--- Scott Schwartz, 4 July 2003 Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 1diff --git a/src/cmd/sam/_libc.h b/src/cmd/sam/_libc.h /src/plan9port/file/src/cmd/sam/_libc.h.gph mx1.adamsgaard.dk 70 it@@ -1,40 +0,0 @@ Err mx1.adamsgaard.dk 70 i-#define __USE_UNIX98 // for pread/pwrite, supposedly Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i-#include Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-#include "utf.h" Err mx1.adamsgaard.dk 70 i-#include "fmt.h" Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-#define nil 0 Err mx1.adamsgaard.dk 70 i-#define dup dup2 Err mx1.adamsgaard.dk 70 i-#define exec execv Err mx1.adamsgaard.dk 70 i-#define seek lseek Err mx1.adamsgaard.dk 70 i-#define getwd getcwd Err mx1.adamsgaard.dk 70 i-#define USED(a) Err mx1.adamsgaard.dk 70 i-#define SET(a) Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-enum { Err mx1.adamsgaard.dk 70 i- OREAD = 0, Err mx1.adamsgaard.dk 70 i- OWRITE = 1, Err mx1.adamsgaard.dk 70 i- ORDWR = 2, Err mx1.adamsgaard.dk 70 i- OCEXEC = 4, Err mx1.adamsgaard.dk 70 i- ORCLOSE = 8 Err mx1.adamsgaard.dk 70 i-}; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-enum { Err mx1.adamsgaard.dk 70 i- ERRMAX = 255 Err mx1.adamsgaard.dk 70 i-}; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void exits(const char *); Err mx1.adamsgaard.dk 70 i-void _exits(const char *); Err mx1.adamsgaard.dk 70 i-int notify (void(*f)(void *, char *)); Err mx1.adamsgaard.dk 70 i-int create(char *, int, int); Err mx1.adamsgaard.dk 70 i-int errstr(char *, int); Err mx1.adamsgaard.dk 70 1diff --git a/src/cmd/sam/err b/src/cmd/sam/err /src/plan9port/file/src/cmd/sam/err.gph mx1.adamsgaard.dk 70 it@@ -1,39 +0,0 @@ Err mx1.adamsgaard.dk 70 i-address.c: In function `filematch': Err mx1.adamsgaard.dk 70 i-address.c:159: warning: passing arg 1 of `bufreset' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-address.c:160: warning: passing arg 1 of `bufinsert' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `mergeextend': Err mx1.adamsgaard.dk 70 i-file.c:117: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `fileinsert': Err mx1.adamsgaard.dk 70 i-file.c:275: warning: passing arg 1 of `bufinsert' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `filedelete': Err mx1.adamsgaard.dk 70 i-file.c:301: warning: passing arg 1 of `bufdelete' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `fileundelete': Err mx1.adamsgaard.dk 70 i-file.c:324: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `filereadc': Err mx1.adamsgaard.dk 70 i-file.c:339: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `fileload': Err mx1.adamsgaard.dk 70 i-file.c:405: warning: passing arg 1 of `bufload' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `fileundo': Err mx1.adamsgaard.dk 70 i-file.c:528: warning: passing arg 1 of `bufdelete' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c:546: warning: passing arg 1 of `bufinsert' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-file.c: In function `fileclose': Err mx1.adamsgaard.dk 70 i-file.c:604: warning: passing arg 1 of `bufclose' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-io.c: In function `readio': Err mx1.adamsgaard.dk 70 i-io.c:90: warning: passing arg 1 of `bufload' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-io.c: In function `writeio': Err mx1.adamsgaard.dk 70 i-io.c:152: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-mesg.c: In function `inmesg': Err mx1.adamsgaard.dk 70 i-mesg.c:248: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-mesg.c: In function `snarf': Err mx1.adamsgaard.dk 70 i-mesg.c:568: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-mesg.c: In function `setgenstr': Err mx1.adamsgaard.dk 70 i-mesg.c:612: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-sam.c: In function `readcmd': Err mx1.adamsgaard.dk 70 i-sam.c:496: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-sam.c: In function `copy': Err mx1.adamsgaard.dk 70 i-sam.c:676: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-xec.c: In function `s_cmd': Err mx1.adamsgaard.dk 70 i-xec.c:234: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-xec.c:243: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 i-xec.c: In function `display': Err mx1.adamsgaard.dk 70 i-xec.c:401: warning: passing arg 1 of `bufread' from incompatible pointer type Err mx1.adamsgaard.dk 70 1diff --git a/src/cmd/sam/plan9.c b/src/cmd/sam/plan9.c /src/plan9port/file/src/cmd/sam/plan9.c.gph mx1.adamsgaard.dk 70 it@@ -1,185 +0,0 @@ Err mx1.adamsgaard.dk 70 i-#include "sam.h" Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-Rune samname[] = L"~~sam~~"; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-Rune *left[]= { Err mx1.adamsgaard.dk 70 i- L"{[(<«", Err mx1.adamsgaard.dk 70 i- L"\n", Err mx1.adamsgaard.dk 70 i- L"'\"`", Err mx1.adamsgaard.dk 70 i- 0 Err mx1.adamsgaard.dk 70 i-}; Err mx1.adamsgaard.dk 70 i-Rune *right[]= { Err mx1.adamsgaard.dk 70 i- L"}])>»", Err mx1.adamsgaard.dk 70 i- L"\n", Err mx1.adamsgaard.dk 70 i- L"'\"`", Err mx1.adamsgaard.dk 70 i- 0 Err mx1.adamsgaard.dk 70 i-}; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-char RSAM[] = "sam"; Err mx1.adamsgaard.dk 70 i-char SAMTERM[] = "/bin/aux/samterm"; Err mx1.adamsgaard.dk 70 i-char HOME[] = "HOME"; Err mx1.adamsgaard.dk 70 i-char TMPDIR[] = "/tmp"; Err mx1.adamsgaard.dk 70 i-char SH[] = "rc"; Err mx1.adamsgaard.dk 70 i-char SHPATH[] = "/bin/rc"; Err mx1.adamsgaard.dk 70 i-char RX[] = "rx"; Err mx1.adamsgaard.dk 70 i-char RXPATH[] = "/bin/rx"; Err mx1.adamsgaard.dk 70 i-char SAMSAVECMD[] = "/bin/rc\n/sys/lib/samsave"; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void Err mx1.adamsgaard.dk 70 i-dprint(char *z, ...) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- char buf[BLOCKSIZE]; Err mx1.adamsgaard.dk 70 i- va_list arg; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- va_start(arg, z); Err mx1.adamsgaard.dk 70 i- vseprint(buf, &buf[BLOCKSIZE], z, arg); Err mx1.adamsgaard.dk 70 i- va_end(arg); Err mx1.adamsgaard.dk 70 i- termwrite(buf); Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void Err mx1.adamsgaard.dk 70 i-print_ss(char *s, String *a, String *b) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- dprint("?warning: %s: `%.*S' and `%.*S'\n", s, a->n, a->s, b->n, b->s); Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void Err mx1.adamsgaard.dk 70 i-print_s(char *s, String *a) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- dprint("?warning: %s `%.*S'\n", s, a->n, a->s); Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-char* Err mx1.adamsgaard.dk 70 i-getuser(void) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- static char user[64]; Err mx1.adamsgaard.dk 70 i- int fd; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- if(user[0] == 0){ Err mx1.adamsgaard.dk 70 i- fd = open("/dev/user", 0); Err mx1.adamsgaard.dk 70 i- if(fd<0 || read(fd, user, sizeof user-1)<=0) Err mx1.adamsgaard.dk 70 i- strcpy(user, "none"); Err mx1.adamsgaard.dk 70 i- close(fd); Err mx1.adamsgaard.dk 70 i- } Err mx1.adamsgaard.dk 70 i- return user; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-int Err mx1.adamsgaard.dk 70 i-statfile(char *name, ulong *dev, uvlong *id, long *time, long *length, long *appendonly) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- Dir *dirb; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- dirb = dirstat(name); Err mx1.adamsgaard.dk 70 i- if(dirb == nil) Err mx1.adamsgaard.dk 70 i- return -1; Err mx1.adamsgaard.dk 70 i- if(dev) Err mx1.adamsgaard.dk 70 i- *dev = dirb->type|(dirb->dev<<16); Err mx1.adamsgaard.dk 70 i- if(id) Err mx1.adamsgaard.dk 70 i- *id = dirb->qid.path; Err mx1.adamsgaard.dk 70 i- if(time) Err mx1.adamsgaard.dk 70 i- *time = dirb->mtime; Err mx1.adamsgaard.dk 70 i- if(length) Err mx1.adamsgaard.dk 70 i- *length = dirb->length; Err mx1.adamsgaard.dk 70 i- if(appendonly) Err mx1.adamsgaard.dk 70 i- *appendonly = dirb->mode & DMAPPEND; Err mx1.adamsgaard.dk 70 i- free(dirb); Err mx1.adamsgaard.dk 70 i- return 1; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-int Err mx1.adamsgaard.dk 70 i-statfd(int fd, ulong *dev, uvlong *id, long *time, long *length, long *appendonly) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- Dir *dirb; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- dirb = dirfstat(fd); Err mx1.adamsgaard.dk 70 i- if(dirb == nil) Err mx1.adamsgaard.dk 70 i- return -1; Err mx1.adamsgaard.dk 70 i- if(dev) Err mx1.adamsgaard.dk 70 i- *dev = dirb->type|(dirb->dev<<16); Err mx1.adamsgaard.dk 70 i- if(id) Err mx1.adamsgaard.dk 70 i- *id = dirb->qid.path; Err mx1.adamsgaard.dk 70 i- if(time) Err mx1.adamsgaard.dk 70 i- *time = dirb->mtime; Err mx1.adamsgaard.dk 70 i- if(length) Err mx1.adamsgaard.dk 70 i- *length = dirb->length; Err mx1.adamsgaard.dk 70 i- if(appendonly) Err mx1.adamsgaard.dk 70 i- *appendonly = dirb->mode & DMAPPEND; Err mx1.adamsgaard.dk 70 i- free(dirb); Err mx1.adamsgaard.dk 70 i- return 1; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void Err mx1.adamsgaard.dk 70 i-notifyf(void *a, char *s) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- USED(a); Err mx1.adamsgaard.dk 70 i- if(bpipeok && strcmp(s, "sys: write on closed pipe") == 0) Err mx1.adamsgaard.dk 70 i- noted(NCONT); Err mx1.adamsgaard.dk 70 i- if(strcmp(s, "interrupt") == 0) Err mx1.adamsgaard.dk 70 i- noted(NCONT); Err mx1.adamsgaard.dk 70 i- panicking = 1; Err mx1.adamsgaard.dk 70 i- rescue(); Err mx1.adamsgaard.dk 70 i- noted(NDFLT); Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-int Err mx1.adamsgaard.dk 70 i-newtmp(int num) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- int i, fd; Err mx1.adamsgaard.dk 70 i- static char tempnam[30]; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- i = getpid(); Err mx1.adamsgaard.dk 70 i- do Err mx1.adamsgaard.dk 70 i- snprint(tempnam, sizeof tempnam, "%s/%d%.4s%dsam", TMPDIR, num, getuser(), i++); Err mx1.adamsgaard.dk 70 i- while(access(tempnam, 0) == 0); Err mx1.adamsgaard.dk 70 i- fd = create(tempnam, ORDWR|OCEXEC|ORCLOSE, 0000); Err mx1.adamsgaard.dk 70 i- if(fd < 0){ Err mx1.adamsgaard.dk 70 i- remove(tempnam); Err mx1.adamsgaard.dk 70 i- fd = create(tempnam, ORDWR|OCEXEC|ORCLOSE, 0000); Err mx1.adamsgaard.dk 70 i- } Err mx1.adamsgaard.dk 70 i- return fd; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-int Err mx1.adamsgaard.dk 70 i-waitfor(int pid) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- int msg; Err mx1.adamsgaard.dk 70 i- Waitmsg *w; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- while((w = wait()) != nil){ Err mx1.adamsgaard.dk 70 i- if(w->pid != pid){ Err mx1.adamsgaard.dk 70 i- free(w); Err mx1.adamsgaard.dk 70 i- continue; Err mx1.adamsgaard.dk 70 i- } Err mx1.adamsgaard.dk 70 i- msg = (w->msg[0] != '\0'); Err mx1.adamsgaard.dk 70 i- free(w); Err mx1.adamsgaard.dk 70 i- return msg; Err mx1.adamsgaard.dk 70 i- } Err mx1.adamsgaard.dk 70 i- return -1; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void Err mx1.adamsgaard.dk 70 i-samerr(char *buf) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- sprint(buf, "%s/sam.err", TMPDIR); Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void* Err mx1.adamsgaard.dk 70 i-emalloc(ulong n) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- void *p; Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i- p = malloc(n); Err mx1.adamsgaard.dk 70 i- if(p == 0) Err mx1.adamsgaard.dk 70 i- panic("malloc fails"); Err mx1.adamsgaard.dk 70 i- memset(p, 0, n); Err mx1.adamsgaard.dk 70 i- return p; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 i- Err mx1.adamsgaard.dk 70 i-void* Err mx1.adamsgaard.dk 70 i-erealloc(void *p, ulong n) Err mx1.adamsgaard.dk 70 i-{ Err mx1.adamsgaard.dk 70 i- p = realloc(p, n); Err mx1.adamsgaard.dk 70 i- if(p == 0) Err mx1.adamsgaard.dk 70 i- panic("realloc fails"); Err mx1.adamsgaard.dk 70 i- return p; Err mx1.adamsgaard.dk 70 i-} Err mx1.adamsgaard.dk 70 .