From 01bc072ba508d802b1a233f1b4b11d970027d242 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 23 Feb 1996 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1996-02-23 --- carrera/devrtc.c | 1 - carrera/kbd.c | 1 - pc/devastar.c | 1 - pc/devata.c | 1 - pc/devconfig.c | 207 --------------------------------------------- pc/devfloppy.c | 1 - pc/devrtc.c | 1 - port/cache.c | 1 - port/dev.c | 1 - port/devXXX.c | 1 - port/devaudio.c | 1 - port/devboot.c | 1 - port/devcons.c | 1 - port/devdup.c | 1 - port/devenv.c | 1 - port/devkprof.c | 1 - port/devmnt.c | 1 - port/devmouse.c | 1 - port/devns16552.c | 1 - port/devpipe.c | 1 - port/devproc.c | 1 - port/devroot.c | 1 - port/devsd.c | 1 - port/devsrv.c | 1 - port/devssl.c | 211 +++++++++++++++++++++++----------------------- port/devtinyfs.c | 1 - power/devduart.c | 1 - power/devrtc.c | 1 - 28 files changed, 105 insertions(+), 339 deletions(-) delete mode 100644 pc/devconfig.c diff --git a/carrera/devrtc.c b/carrera/devrtc.c index 688c1ec0f2fc681ea778520f8113d277400e2b4d..0fcc1e8d5ff727433f0a173adcf063e4e5f0c819 100644 --- a/carrera/devrtc.c +++ b/carrera/devrtc.c @@ -4,7 +4,6 @@ #include "dat.h" #include "fns.h" #include "../port/error.h" -#include "devtab.h" #include "io.h" /* diff --git a/carrera/kbd.c b/carrera/kbd.c index daabfe594995067ebb818deb89f9b6a36daff4b4..e3b3f206c94cd8050359964bae6c95e59a10e7a4 100644 --- a/carrera/kbd.c +++ b/carrera/kbd.c @@ -6,7 +6,6 @@ #include "io.h" #include "../port/error.h" -#include "devtab.h" enum { diff --git a/pc/devastar.c b/pc/devastar.c index d503b895bdf5545518ec9678a31064dbbbc66b28..6510a95d63ae267fb641d529e685095b1158e243 100644 --- a/pc/devastar.c +++ b/pc/devastar.c @@ -6,7 +6,6 @@ #include "io.h" #include "../port/error.h" -#include "devtab.h" /* * Stargate's Avanstar serial board. There are ISA, EISA, microchannel diff --git a/pc/devata.c b/pc/devata.c index 59f56a057da15ed99b0a475b072962f40907107f..0fe0a31bf9d0a7b64f4685cd94cf94d74f0965f3 100644 --- a/pc/devata.c +++ b/pc/devata.c @@ -10,7 +10,6 @@ #include "io.h" #include "../port/error.h" -#include "devtab.h" #define DPRINT if(0)print #define XPRINT if(0)print diff --git a/pc/devconfig.c b/pc/devconfig.c deleted file mode 100644 index 6a5ae6edcd71cdd0ba86f5f70dfeb4485202ff40..0000000000000000000000000000000000000000 --- a/pc/devconfig.c +++ /dev/null @@ -1,207 +0,0 @@ -#include "u.h" -#include "../port/lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" -#include "io.h" -#include "../port/error.h" - -#include -#include "devtab.h" -#include "vga.h" - -/* - * Driver for various VGA cards - */ - -char vgacard[NAMELEN]; /* vga card type */ -struct screeninfo { - int maxx, maxy; /* current bits per screen */ - int packed; /* 0=planar, 1=packed */ - int interlaced; /* != 0 if interlaced */ -} screeninfo; - -enum { - Qdir= 0, - Qvgasize= 1, - Qvgatype= 2, - Qvgaport= 3, - Nvga= 4, -}; - -Dirtab vgadir[]={ - "vgatype", {Qvgatype}, 0, 0666, - "vgasize", {Qvgasize}, 0, 0666, - "vgaport", {Qvgaport}, 0, 0666, -}; - -/* a routine from ../port/devcons.c */ -extern int readstr(ulong, char *, ulong, char *); - -void -configsetup(void) { -} - -void -configreset(void) { - strcpy(vgacard, "generic"); - screeninfo.maxx = 640; - screeninfo.maxy = 480; - screeninfo.packed = 0; - screeninfo.interlaced = 0; -} - -void -configinit(void) -{ -} - -Chan* -configattach(char *upec) -{ - return devattach('v', upec); -} - -Chan* -configclone(Chan *c, Chan *nc) -{ - return devclone(c, nc); -} - -int -configwalk(Chan *c, char *name) -{ - return devwalk(c, name, vgadir, Nvga, devgen); -} - -void -configstat(Chan *c, char *dp) -{ - devstat(c, dp, vgadir, Nvga, devgen); -} - -Chan* -configopen(Chan *c, int omode) -{ - return devopen(c, omode, vgadir, Nvga, devgen); -} - -void -configcreate(Chan*, char*, int, ulong) -{ - error(Eperm); -} - -void -configclose(Chan *c) -{ - USED(c); -} - -long -configread(Chan *c, void *buf, long n, ulong offset) -{ - int port; - uchar *cp = buf; - - switch(c->qid.path&~CHDIR){ - case Qdir: - return devdirread(c, buf, n, vgadir, Nvga, devgen); - case Qvgatype: - return readstr(offset, buf, n, vgacard); - case Qvgaport: - if (offset + n >= 0x8000) - error(Ebadarg); - for (port=offset; portqid.path&~CHDIR){ - case Qdir: - error(Eperm); - case Qvgatype: - error(Eperm); - case Qvgasize: - if(offset != 0) - error(Ebadarg); - if(n >= sizeof(cbuf)) - n = sizeof(cbuf) - 1; - memmove(cbuf, buf, n); - cbuf[n] = 0; - cp = cbuf; - maxx = strtoul(cp, &cp, 0); - if(*cp!=0) - cp++; - maxy = strtoul(cp, &cp, 0); - if(*cp!=0) - cp++; - switch(strtoul(cp, &cp, 0)){ - case 1: - ldepth = 0; - break; - case 2: - ldepth = 1; - break; - case 4: - ldepth = 2; - break; - case 8: - ldepth = 3; - break; - default: - ldepth = -1; - } - if(maxx == 0 || maxy == 0 - || maxx > 1280 || maxy > 1024 - || ldepth > 3 || ldepth < 0) - error(Ebadarg); - setscreen(maxx, maxy, ldepth); - return n; - case Qvgaport: - cp = buf; - if (offset + n >= 0x8000) - error(Ebadarg); - for (port=offset; port -#include "devtab.h" typedef struct OneWay OneWay; struct OneWay @@ -191,32 +190,6 @@ sslclose(Chan *c) } } -long -sslread(Chan *c, void *a, long n, ulong offset) -{ - Block *b; - - switch(c->qid.path & ~CHDIR){ - case Qdir: - return devdirread(c, a, n, digesttab, Ndigesttab, devgen); - } - - b = sslbread(c, n, offset); - - if(waserror()){ - freeb(b); - nexterror(); - } - - n = BLEN(b); - memmove(a, b->rp, n); - freeb(b); - - poperror(); - - return n; -} - Block* sslbread(Chan *c, long n, ulong offset) { @@ -301,94 +274,28 @@ sslbread(Chan *c, long n, ulong offset) } long -sslwrite(Chan *c, void *a, long n, ulong offset) +sslread(Chan *c, void *a, long n, ulong offset) { - Dstate *s; Block *b; - int m; - char *p, *e, buf[32]; switch(c->qid.path & ~CHDIR){ - case Qclone: - break; - default: - error(Ebadusefd); + case Qdir: + return devdirread(c, a, n, digesttab, Ndigesttab, devgen); } - s = c->aux; - if(s == 0) - error(Ebadusefd); + b = sslbread(c, n, offset); - switch(s->state){ - case Algwait: - /* get algorithm */ - if(n >= sizeof(buf)) - error(Ebadarg); - strncpy(buf, a, n); - buf[n] = 0; - s->blocklen = 1; - s->diglen = 0; - if(strcmp(buf, "md5") == 0){ - s->hf = md5; - s->diglen = MD5dlen; - } else if(strcmp(buf, "sha") == 0){ - s->hf = sha; - s->diglen = SHAdlen; - } else if(strcmp(buf, "descbc") == 0){ - s->encryptalg = DESCBC; - s->blocklen = 8; - } else if(strcmp(buf, "desecb") == 0){ - s->encryptalg = DESECB; - s->blocklen = 8; - } else - error(Ebadarg); - s->state = Fdwait; - break; - case Fdwait: - /* get communications channel */ - s->c = buftochan(a, n); - s->state = Secretinwait; - break; - case Secretinwait: - /* get secret for incoming messages */ - setsecret(s, &s->in, a, n); - s->state = Secretoutwait; - break; - case Secretoutwait: - /* get secret for outgoing messages */ - setsecret(s, &s->out, a, n); - if(s->blocklen != 1){ - s->max = (1<<15) - s->diglen; - s->max -= s->max % s->blocklen; - s->maxpad = (1<<14) - s->diglen; - s->maxpad -= s->maxpad % s->blocklen; - } else - s->maxpad = s->max = (1<<15) - s->diglen; - s->state = Established; - break; - case Established: - p = a; - for(e = p + n; p < e; p += m){ - m = e - p; - if(m > s->max) - m = s->max; - - b = allocb(m); - if(waserror()){ - freeb(b); - nexterror(); - } - memmove(b->wp, p, m); - poperror(); - b->wp += m; - - sslbwrite(c, b, offset); - } - break; - default: - error(Ebadusefd); + if(waserror()){ + freeb(b); + nexterror(); } + n = BLEN(b); + memmove(a, b->rp, n); + freeb(b); + + poperror(); + return n; } @@ -485,6 +392,98 @@ sslbwrite(Chan *c, Block *b, ulong offset) return rv; } +long +sslwrite(Chan *c, void *a, long n, ulong offset) +{ + Dstate *s; + Block *b; + int m; + char *p, *e, buf[32]; + + switch(c->qid.path & ~CHDIR){ + case Qclone: + break; + default: + error(Ebadusefd); + } + + s = c->aux; + if(s == 0) + error(Ebadusefd); + + switch(s->state){ + case Algwait: + /* get algorithm */ + if(n >= sizeof(buf)) + error(Ebadarg); + strncpy(buf, a, n); + buf[n] = 0; + s->blocklen = 1; + s->diglen = 0; + if(strcmp(buf, "md5") == 0){ + s->hf = md5; + s->diglen = MD5dlen; + } else if(strcmp(buf, "sha") == 0){ + s->hf = sha; + s->diglen = SHAdlen; + } else if(strcmp(buf, "descbc") == 0){ + s->encryptalg = DESCBC; + s->blocklen = 8; + } else if(strcmp(buf, "desecb") == 0){ + s->encryptalg = DESECB; + s->blocklen = 8; + } else + error(Ebadarg); + s->state = Fdwait; + break; + case Fdwait: + /* get communications channel */ + s->c = buftochan(a, n); + s->state = Secretinwait; + break; + case Secretinwait: + /* get secret for incoming messages */ + setsecret(s, &s->in, a, n); + s->state = Secretoutwait; + break; + case Secretoutwait: + /* get secret for outgoing messages */ + setsecret(s, &s->out, a, n); + if(s->blocklen != 1){ + s->max = (1<<15) - s->diglen; + s->max -= s->max % s->blocklen; + s->maxpad = (1<<14) - s->diglen; + s->maxpad -= s->maxpad % s->blocklen; + } else + s->maxpad = s->max = (1<<15) - s->diglen; + s->state = Established; + break; + case Established: + p = a; + for(e = p + n; p < e; p += m){ + m = e - p; + if(m > s->max) + m = s->max; + + b = allocb(m); + if(waserror()){ + freeb(b); + nexterror(); + } + memmove(b->wp, p, m); + poperror(); + b->wp += m; + + sslbwrite(c, b, offset); + } + break; + default: + error(Ebadusefd); + } + + return n; +} + /* * make sure we have at least 'n' bytes in list 'l' */ diff --git a/port/devtinyfs.c b/port/devtinyfs.c index 4b06eb751d19a84a7a9f2cf0399cad87372a0ec4..02bd886be9f659ccb9f72160c11db17c29786fef 100644 --- a/port/devtinyfs.c +++ b/port/devtinyfs.c @@ -9,7 +9,6 @@ #include "fns.h" #include "../port/error.h" -#include "devtab.h" enum{ Qdir, diff --git a/power/devduart.c b/power/devduart.c index f7c1f7612894979f29cd7e337fb103c9fd0ed5e3..bbd06133d651dda2156d239d9f8af4a2b8e01193 100644 --- a/power/devduart.c +++ b/power/devduart.c @@ -6,7 +6,6 @@ #include "io.h" #include "../port/error.h" -#include "devtab.h" #include "../port/netif.h" /* diff --git a/power/devrtc.c b/power/devrtc.c index fdf15512292d1889df17ac39ce65ef8a596e2026..a2da2f506110d4327a9fdad37d2a1d8402571fc5 100644 --- a/power/devrtc.c +++ b/power/devrtc.c @@ -4,7 +4,6 @@ #include "dat.h" #include "fns.h" #include "../port/error.h" -#include "devtab.h" #include "io.h"