SCCS-vsn: sbin/clri/clri.c 1.2
/* Copyright (c) 1981 Regents of the University of California */
/* Copyright (c) 1981 Regents of the University of California */
-static char sccsid[] = "@(#)clri.c 1.1 %G%";
+static char sccsid[] = "@(#)clri.c 1.2 %G%";
-static char *sccsid = "@(#)clri.c 4.1 (Berkeley) 10/1/80";
+/* static char *sccsid = "@(#)clri.c 4.1 (Berkeley) 10/1/80"; */
/*
* clri filsys inumber ...
*/
/*
* clri filsys inumber ...
*/
-#include <sys/param.h>
-#include <sys/ino.h>
+#include "../h/param.h"
+#include "../h/inode.h"
+#include "../h/fs.h"
#define ISIZE (sizeof(struct dinode))
#define ISIZE (sizeof(struct dinode))
-#define NI (BSIZE/ISIZE)
-struct ino
-{
+#define NI (MAXBSIZE/ISIZE)
+struct ino {
char junk[ISIZE];
};
struct ino buf[NI];
char junk[ISIZE];
};
struct ino buf[NI];
+
+union {
+ char dummy[SBSIZE];
+ struct fs sblk;
+} sb_un;
+#define sblock sb_un.sblk
+
int status;
main(argc, argv)
int status;
main(argc, argv)
+ int argc;
+ char *argv[];
{
register i, f;
unsigned n;
int j, k;
long off;
{
register i, f;
unsigned n;
int j, k;
long off;
printf("usage: clri filsys inumber ...\n");
exit(4);
}
f = open(argv[1], 2);
printf("usage: clri filsys inumber ...\n");
exit(4);
}
f = open(argv[1], 2);
printf("cannot open %s\n", argv[1]);
exit(4);
}
printf("cannot open %s\n", argv[1]);
exit(4);
}
- for(i=2; i<argc; i++) {
- if(!isnumber(argv[i])) {
+ lseek(f, SBLOCK * DEV_BSIZE, 0);
+ if (read(f, &sblock, SBSIZE) != SBSIZE) {
+ printf("cannot read %s\n", argv[1]);
+ exit(4);
+ }
+ for (i = 2; i < argc; i++) {
+ if (!isnumber(argv[i])) {
printf("%s: is not a number\n", argv[i]);
status = 1;
continue;
}
n = atoi(argv[i]);
printf("%s: is not a number\n", argv[i]);
status = 1;
continue;
}
n = atoi(argv[i]);
printf("%s: is zero\n", argv[i]);
status = 1;
continue;
}
printf("%s: is zero\n", argv[i]);
status = 1;
continue;
}
+ off = fsbtodb(&sblock, itod(n, &sblock)) * DEV_BSIZE;
- if(read(f, (char *)buf, BSIZE) != BSIZE) {
+ if (read(f, (char *)buf, sblock.fs_bsize) != sblock.fs_bsize) {
printf("%s: read error\n", argv[i]);
status = 1;
}
}
printf("%s: read error\n", argv[i]);
status = 1;
}
}
- for(i=2; i<argc; i++) {
+ for (i = 2; i < argc; i++) {
n = atoi(argv[i]);
printf("clearing %u\n", n);
n = atoi(argv[i]);
printf("clearing %u\n", n);
+ off = fsbtodb(&sblock, itod(n, &sblock)) * DEV_BSIZE;
- read(f, (char *)buf, BSIZE);
- j = itoo(n);
- for(k=0; k<ISIZE; k++)
+ read(f, (char *)buf, sblock.fs_bsize);
+ j = itoo(n, &sblock);
+ for (k = 0; k < ISIZE; k++)
buf[j].junk[k] = 0;
lseek(f, off, 0);
buf[j].junk[k] = 0;
lseek(f, off, 0);
- write(f, (char *)buf, BSIZE);
+ write(f, (char *)buf, sblock.fs_bsize);
}
exit(status);
}
isnumber(s)
}
exit(status);
}
isnumber(s)
{
register c;
while(c = *s++)
{
register c;
while(c = *s++)
+ if (c < '0' || c > '9')