From de01b96d9826175e88ffb97146ee0575c7bc6152 Mon Sep 17 00:00:00 2001 From: Ken Thompson Date: Wed, 10 Jan 1979 15:01:30 -0500 Subject: [PATCH] Research V7 development Work on file usr/src/cmd/dmesg.c Work on file usr/src/cmd/df.c Co-Authored-By: Dennis Ritchie Synthesized-from: v7 --- usr/src/cmd/df.c | 96 +++++++++++++++++++++++++++++++++++++ usr/src/cmd/dmesg.c | 113 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+) create mode 100644 usr/src/cmd/df.c create mode 100644 usr/src/cmd/dmesg.c diff --git a/usr/src/cmd/df.c b/usr/src/cmd/df.c new file mode 100644 index 0000000000..b773b7721d --- /dev/null +++ b/usr/src/cmd/df.c @@ -0,0 +1,96 @@ +#include +#include +#include +#include + +daddr_t blkno = 1; +char *dargv[] = { + 0, + "/dev/rp0", + "/dev/rp3", + 0 +}; + + +struct filsys sblock; + +int fi; +daddr_t alloc(); + +main(argc, argv) +char **argv; +{ + int i; + + if(argc <= 1) { + for(argc = 1; dargv[argc]; argc++); + argv = dargv; + } + + for(i=1; i=NICFREE) { + printf("bad free count, b=%D\n", blkno); + return(0); + } + b = sblock.s_free[i]; + if(b == 0) + return(0); + if(b=sblock.s_fsize) { + printf("bad free block (%D)\n", b); + return(0); + } + if(sblock.s_nfree <= 0) { + bread(b, (char *)&buf, sizeof(buf)); + blkno = b; + sblock.s_nfree = buf.df_nfree; + for(i=0; i +#include +#include + +char msgbuf[MSGBUFS]; +char *msgbufp; +int sflg; +int of = -1; + +struct { + char *omsgflg; + int omindex; + char omsgbuf[MSGBUFS]; +} omesg; +struct nlist nl[3] = { + {"_msgbuf"}, + {"_msgbufp"} +}; + +main(argc, argv) +char **argv; +{ + int mem; + register char *mp, *omp, *mstart; + int samef; + + if (argc>1 && argv[1][0] == '-') { + sflg++; + argc--; + argv++; + } + if (sflg) + of = open("/usr/adm/msgbuf", 2); + read(of, (char *)&omesg, sizeof(omesg)); + lseek(of, 0L, 0); + sflg = 0; + nlist(argc>2? argv[2]:"/unix", nl); + if (nl[0].n_type==0) + done("No namelist\n"); + if ((mem = open((argc>1? argv[1]: "/dev/mem"), 0)) < 0) + done("No mem\n"); + lseek(mem, (long)nl[0].n_value, 0); + read(mem, msgbuf, MSGBUFS); + lseek(mem, (long)nl[1].n_value, 0); + read(mem, (char *)&msgbufp, sizeof(msgbufp)); + if (msgbufp < (char *)nl[0].n_value || msgbufp >= (char *)nl[0].n_value+MSGBUFS) + done("Namelist mismatch\n"); + msgbufp += msgbuf - (char *)nl[0].n_value; + mstart = &msgbuf[omesg.omindex]; + omp = &omesg.omsgbuf[msgbufp-msgbuf]; + mp = msgbufp; + samef = 1; + do { + if (*mp++ != *omp++) { + mstart = msgbufp; + samef = 0; + pdate(); + printf("...\n"); + break; + } + if (mp == &msgbuf[MSGBUFS]) + mp = msgbuf; + if (omp == &omesg.omsgbuf[MSGBUFS]) + omp = omesg.omsgbuf; + } while (mp != mstart); + if (samef && mstart == msgbufp) + exit(0); + mp = mstart; + do { + pdate(); + if (*mp) + putchar(*mp); + mp++; + if (mp == &msgbuf[MSGBUFS]) + mp = msgbuf; + } while (mp != msgbufp); + done((char *)NULL); +} + +done(s) +char *s; +{ + register char *p, *q; + + if (s && s!=omesg.omsgflg && sflg==0) { + pdate(); + printf(s); + } + omesg.omsgflg = s; + q = omesg.omsgbuf; + for (p = msgbuf; p < &msgbuf[MSGBUFS]; ) + *q++ = *p++; + omesg.omindex = msgbufp - msgbuf; + write(of, (char *)&omesg, sizeof(omesg)); + exit(s!=NULL); +} + +pdate() +{ + extern char *ctime(); + static firstime; + time_t tbuf; + + if (firstime==0) { + firstime++; + time(&tbuf); + printf("\n%.12s\n", ctime(&tbuf)+4); + } +} -- 2.20.1