From f8b5d730de0d6ada7f9723c37d00400d1914ff93 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 8 Mar 2000 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2000-03-08 --- alphapc/devfloppy.c | 2 +- alphapc/devvga.c | 2 +- boot/aux.c | 17 ----------------- boot/boot.c | 2 +- ip/arp.c | 2 +- ip/bootp.c | 2 +- ip/ipmux.c | 4 ++-- ip/netlog.c | 2 +- pc/devata.c | 12 ++++++------ pc/devfloppy.c | 2 +- pc/devusb.c | 34 ++-------------------------------- pc/devvga.c | 2 +- port/devaudio.c | 2 +- port/devdraw.c | 2 +- port/devmouse.c | 2 +- port/devsd.c | 6 +++--- port/lib.h | 1 + port/parse.c | 19 +------------------ port/portfns.h | 6 ++---- 19 files changed, 28 insertions(+), 93 deletions(-) diff --git a/alphapc/devfloppy.c b/alphapc/devfloppy.c index dbb1e246cb707c36a764cc7779df7a39a9b26765..2f8da2e89f2df3055c799ba6b843e3067f0c0f21 100644 --- a/alphapc/devfloppy.c +++ b/alphapc/devfloppy.c @@ -911,7 +911,7 @@ floppyformat(FDrive *dp, char *params) /* * set the type */ - if(parsefields(params, f, 3, " ") > 1){ + if(getfields(params, f, 3, 1, " ") > 1){ for(t = floppytype; t < &floppytype[nelem(floppytype)]; t++){ if(strcmp(f[1], t->name)==0 && t->dt==dp->dt){ dp->t = t; diff --git a/alphapc/devvga.c b/alphapc/devvga.c index b8161f1d00741c8bff7e18e622531fa942b32fcc..0256f44dbdecfb00e37c7bf075857477eafeca93 100644 --- a/alphapc/devvga.c +++ b/alphapc/devvga.c @@ -157,7 +157,7 @@ vgactl(char* a) extern VGAdev *vgadev[]; extern VGAcur *vgacur[]; - n = parsefields(a, field, 4, " "); + n = getfields(a, field, 4, 1, " "); if(n < 2) error(Ebadarg); diff --git a/boot/aux.c b/boot/aux.c index 75a8b48c7c85f5ea54ce89a9e438d6807ab5b3e9..68fde824930ddbd2c7408e6fcacc883afe4772af 100644 --- a/boot/aux.c +++ b/boot/aux.c @@ -171,20 +171,3 @@ outin(char *prompt, char *def, int len) } return n; } - -int -parsefields(char *lp, char **fields, int n, char *sep) -{ - int i; - - for(i=0; lp && *lp && i 0 && buf[len-1] == '\n') buf[len-1] = 0; - n = parsefields(buf, f, 4, " "); + n = getfields(buf, f, 4, 1, " "); if(strcmp(f[0], "flush") == 0){ qlock(arp); for(a = arp->cache; a < &arp->cache[NCACHE]; a++){ diff --git a/ip/bootp.c b/ip/bootp.c index 7eabcd207b73d35b9d3a8132fe743e5b48cf1e99..3d5a8f10cfb36c9f7f13d954baa80d5559bb95d3 100644 --- a/ip/bootp.c +++ b/ip/bootp.c @@ -81,7 +81,7 @@ rcvbootp(void *a) rp = (Bootp*)rcvbuf; if(memcmp(req.chaddr, rp->chaddr, 6) == 0 && rp->htype == 1 && rp->hlen == 6 - && parsefields((char*)rp->vend+4, field, 4, " ") == 4 + && getfields((char*)rp->vend+4, field, 4, 1, " ") == 4 && strncmp((char*)rp->vend, "p9 ", 4) == 0){ if(ipaddr == 0) ipaddr = nhgetl(rp->yiaddr); diff --git a/ip/ipmux.c b/ip/ipmux.c index a57a95ffd470cc853affddbfd125990d868418d4..ba5e8b3dbc32566b3014ff5794b9af35dca0a329 100644 --- a/ip/ipmux.c +++ b/ip/ipmux.c @@ -264,7 +264,7 @@ parsemux(char *p) } /* parse vals */ - f->n = parsefields(val, vals, sizeof(vals)/sizeof(char*), "|"); + f->n = getfields(val, vals, sizeof(vals)/sizeof(char*), 1, "|"); if(f->n == 0) goto parseerror; f->val = smalloc(f->n*f->len); @@ -540,7 +540,7 @@ ipmuxconnect(Conv *c, char **argv, int argc) if(argc != 2) return Ebadarg; - n = parsefields(argv[1], field, nelem(field), ";"); + n = getfields(argv[1], field, nelem(field), 1, ";"); if(n <= 0) return Ebadarg; diff --git a/ip/netlog.c b/ip/netlog.c index 4e81ee84545107fe1f80576b7a54ec69c81c705f..d7be9a8e32bb12f67df69497543bcf2c46ec2b0f 100644 --- a/ip/netlog.c +++ b/ip/netlog.c @@ -167,7 +167,7 @@ netlogctl(Fs *f, char* s, int len) if(len > 0 && buf[len-1] == '\n') buf[len-1] = 0; - n = parsefields(buf, fields, 10, " "); + n = getfields(buf, fields, 10, 1, " "); if(n < 2) return Ebadnetctl; diff --git a/pc/devata.c b/pc/devata.c index 31e54c7d3157b149d74a0a73342d9071b5146d4a..548e002598720657fcc0447d5ae0aea60674d33a 100644 --- a/pc/devata.c +++ b/pc/devata.c @@ -1582,12 +1582,12 @@ atareplinit(Drive *dp) /* * parse replacement table. */ - n = parsefields((char*)buf, line, Nrepl+1, "\n"); + n = getfields((char*)buf, line, Nrepl+1, 1, "\n"); if(strncmp(line[0], REPLMAGIC, sizeof(REPLMAGIC)-1)){ dp->repl.p = 0; } else { for(dp->repl.nrepl = 0, i = 1; i < n; i++, dp->repl.nrepl++){ - if(parsefields(line[i], field, 1, " ") != 1) + if(getfields(line[i], field, 1, 1, " ") != 1) break; dp->repl.blk[dp->repl.nrepl] = strtoul(field[0], 0, 0); if(dp->repl.blk[dp->repl.nrepl] <= 0) @@ -1663,13 +1663,13 @@ atapart(Drive *dp) ataxfer(dp, &dp->p[0], Cread, (dp->p[0].end-2)* (vlong)dp->bytes, dp->bytes, buf); buf[dp->bytes-1] = 0; - n = parsefields((char*)buf, line, Npart+1, "\n"); + n = getfields((char*)buf, line, Npart+1, 1, "\n"); if(n > 0 && strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1) == 0) i = 1; else{ ataxfer(dp, &dp->p[1], Cread, 0, dp->bytes, buf); buf[dp->bytes-1] = 0; - n = parsefields((char*)buf, line, Npart+1, "\n"); + n = getfields((char*)buf, line, Npart+1, 1, "\n"); if(n == 0 || strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1)) i = 1; } @@ -1681,7 +1681,7 @@ atapart(Drive *dp) } else{ strcpy((char*)buf, p); - n = parsefields((char*)buf, line, Npart+1, "\n"); + n = getfields((char*)buf, line, Npart+1, 1, "\n"); } /* @@ -1689,7 +1689,7 @@ atapart(Drive *dp) */ if(n > 0 && strncmp(line[0], PARTMAGIC, sizeof(PARTMAGIC)-1) == 0){ for(i = 1; i < n; i++){ - if(parsefields(line[i], field, 3, " ") != 3) + if(getfields(line[i], field, 3, 1, " ") != 3) break; if(pp >= &dp->p[Npart]) break; diff --git a/pc/devfloppy.c b/pc/devfloppy.c index 74559e8bfab31b511a0f1b1e3a0ef8ee49131328..f5290791e6be9c0da604d1cf7c831b46e668aace 100644 --- a/pc/devfloppy.c +++ b/pc/devfloppy.c @@ -880,7 +880,7 @@ floppyformat(FDrive *dp, char *params) /* * set the type */ - if(parsefields(params, f, 3, " ") > 1){ + if(getfields(params, f, 3, 1, " ") > 1){ for(t = floppytype; t < &floppytype[nelem(floppytype)]; t++){ if(strcmp(f[1], t->name)==0 && t->dt==dp->dt){ dp->t = t; diff --git a/pc/devusb.c b/pc/devusb.c index d84049fc689ab65c02ea424c96c263c86634c4ec..665e5363392fb887726b35a9ddcfa789ed052019 100644 --- a/pc/devusb.c +++ b/pc/devusb.c @@ -1776,36 +1776,6 @@ writeusb(Endpt *e, void *a, long n, int tok) return p-(uchar*)a; } -int -getfields(char *ss, char **sp, int nptrs) -{ - uchar *s = (uchar*)ss; - uchar **p = (uchar**)sp; - uint c; - - c = 0; - for(;;){ - if(--nptrs < 0) - break; - *p++ = s; - do { - c = *s++; - if (c == ' ') break; - if (c == '\t') break; - if (c == '\n') break; - } while(c); - if(c == 0) - break; - s[-1] = 0; - } - if(nptrs > 0) - *p = 0; - else - if(--s >= (uchar*)ss) - *s = c; - return p - (uchar**)sp; -} - long usbwrite(Chan *c, void *a, long n, vlong) { @@ -1822,7 +1792,7 @@ usbwrite(Chan *c, void *a, long n, vlong) n = sizeof(cmd)-1; memmove(cmd, a, n); cmd[n] = 0; - nf = getfields(cmd, fields, nelem(fields)); + nf = getfields(cmd, fields, nelem(fields), 0, " \t\n"); if(nf==1 && strcmp(fields[0], "dump")==0){ dumpframe(-1, -1); return n; @@ -1850,7 +1820,7 @@ usbwrite(Chan *c, void *a, long n, vlong) n = sizeof(cmd)-1; memmove(cmd, a, n); cmd[n] = 0; - nf = getfields(cmd, fields, nelem(fields)); + nf = getfields(cmd, fields, nelem(fields), 0, " \t\n"); if(nf > 1 && strcmp(fields[0], "speed") == 0){ d->ls = strtoul(fields[1], nil, 0) == 0; } else if(nf > 5 && strcmp(fields[0], "class") == 0){ diff --git a/pc/devvga.c b/pc/devvga.c index 195f7e820795220171e7c9cef3d409d29d8fadf8..abbfa4abee2b09905dffd5fef17c74d9b39fc637 100644 --- a/pc/devvga.c +++ b/pc/devvga.c @@ -142,7 +142,7 @@ vgactl(char* a) extern VGAcur *vgacur[]; Rectangle r; - n = parsefields(a, field, nelem(field), " "); + n = getfields(a, field, nelem(field), 1, " "); if(n < 1) error(Ebadarg); diff --git a/port/devaudio.c b/port/devaudio.c index 06c9a549be3aee525c82a44d03b732e8f5f8ab69..28560b268de86699549217dd06ed295c566f4384 100644 --- a/port/devaudio.c +++ b/port/devaudio.c @@ -1081,7 +1081,7 @@ audiowrite(Chan *c, void *vp, long n, vlong) memmove(buf, a, n); buf[n] = '\0'; - nf = parsefields(buf, field, Ncmd, " \t\n"); + nf = getfields(buf, field, Ncmd, 1, " \t\n"); for(i = 0; i < nf; i++){ /* * a number is volume diff --git a/port/devdraw.c b/port/devdraw.c index 964e5a124b70187c16b35a7082c6ce17b99ff187..4f7e2215a701d5cfb95213b7929a7bfd5b29487e 100644 --- a/port/devdraw.c +++ b/port/devdraw.c @@ -1145,7 +1145,7 @@ drawwrite(Chan *c, void *a, long n, vlong off) a = (char*)a + i; m -= i; *q = 0; - if(parsefields(buf, fields, nelem(fields), " ") != 4) + if(getfields(buf, fields, nelem(fields), 1, " ") != 4) error("eb1"); //error(Ebadarg); i = strtoul(fields[0], 0, 0); red = strtoul(fields[1], 0, 0); diff --git a/port/devmouse.c b/port/devmouse.c index edb859fb7c7f2664cc672c14163091b4bb46d765..107203ac3514953986969236f52e3d96f9ab7599 100644 --- a/port/devmouse.c +++ b/port/devmouse.c @@ -311,7 +311,7 @@ mousewrite(Chan *c, void *va, long n, vlong) buf[n-1] = 0; else buf[n] = 0; - nf = parsefields(buf, field, 3, " "); + nf = getfields(buf, field, 3, 1, " "); if(strcmp(field[0], "swap") == 0){ if(mouseswap) setbuttonmap("123"); diff --git a/port/devsd.c b/port/devsd.c index d9bbf7d3b9207911d496b663b93cedbff97b454c..1ae8a54cd3418683c12a450c91b1fa0bf972e2d3 100644 --- a/port/devsd.c +++ b/port/devsd.c @@ -350,12 +350,12 @@ sdrdpart(Disk *d) */ scsibio(d->t, d->lun, SCSIread, b, 1, d->bsize, d->table[0].end-2); b[d->bsize-1] = '\0'; - n = parsefields(b, line, nelem(line), "\n"); + n = getfields(b, line, nelem(line), 1, "\n"); if(n <= 0 || strncmp(line[0], MAGIC, sizeof(MAGIC)-1) != 0){ /* try the last */ scsibio(d->t, d->lun, SCSIread, b, 1, d->bsize, d->table[0].end-1); b[d->bsize-1] = '\0'; - n = parsefields(b, line, nelem(line), "\n"); + n = getfields(b, line, nelem(line), 1, "\n"); /* only point partition file at last sector if there is one there */ if(n > 0 && strncmp(line[0], MAGIC, sizeof(MAGIC)-1) == 0){ d->table[1].beg++; @@ -368,7 +368,7 @@ sdrdpart(Disk *d) */ if(n > 0 && strncmp(line[0], MAGIC, sizeof(MAGIC)-1) == 0) { for(i = 1; i < n; i++) { - if(parsefields(line[i], field, nelem(field), " ") != 3) + if(getfields(line[i], field, nelem(field), 1, " ") != 3) break; if(p >= &d->table[Npart]) break; diff --git a/port/lib.h b/port/lib.h index d4b8d027a91ca04b597eee979d46402487d99b67..c28f0ee2f3915344adce22a2f1ecad6decf3d529 100644 --- a/port/lib.h +++ b/port/lib.h @@ -77,6 +77,7 @@ extern uvlong strtoull(char*, char**, int); extern char etext[]; extern char edata[]; extern char end[]; +extern int getfields(char*, char**, int, int, char*); /* * Syscall data structures diff --git a/port/parse.c b/port/parse.c index b35c1151f547e1617e8a41e25c6041c11d9eddba..352bd0a7db2cdc3eda39b514955aa97a5ab1f003 100644 --- a/port/parse.c +++ b/port/parse.c @@ -5,23 +5,6 @@ #include "fns.h" #include "../port/error.h" -int -parsefields(char *lp, char **fields, int n, char *sep) -{ - int i; - - for(i=0; lp && *lp && i 0 && cb->buf[n-1] == '\n') n--; cb->buf[n] = '\0'; - cb->nf = parsefields(cb->buf, cb->f, nelem(cb->f), " "); + cb->nf = getfields(cb->buf, cb->f, nelem(cb->f), 1, " "); return cb; } diff --git a/port/portfns.h b/port/portfns.h index 6c291a81fcdbbc2f12640b6bc84a65b34e48b3c2..85b3984aca56bb5904b5bb68adb8f9116566576e 100644 --- a/port/portfns.h +++ b/port/portfns.h @@ -114,8 +114,8 @@ void freepte(Segment*, Pte*); void freesegs(int); void freesession(Session*); void getcolor(ulong, ulong*, ulong*, ulong*); -ulong getmalloctag(void*); -ulong getrealloctag(void*); +ulong getmalloctag(void*); +ulong getrealloctag(void*); void gotolabel(Label*); int haswaitq(void*); long hostdomainwrite(char*, int); @@ -191,8 +191,6 @@ void pagechainhead(Page*); void pageinit(void); void pagersummary(void); void panic(char*, ...); -int parseether(uchar*, char*); -int parsefields(char*, char**, int, char*); Cmdbuf* parsecmd(char *a, int n); void pexit(char*, int); void pgrpcpy(Pgrp*, Pgrp*);