projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge into the new kernel
[unix-history]
/
usr
/
src
/
sbin
/
clri
/
clri.c
diff --git
a/usr/src/sbin/clri/clri.c
b/usr/src/sbin/clri/clri.c
index
af3f87d
..
883762b
100644
(file)
--- a/
usr/src/sbin/clri/clri.c
+++ b/
usr/src/sbin/clri/clri.c
@@
-1,84
+1,102
@@
-/* Copyright (c) 1981 Regents of the University of California */
+static char sccsid[] = "@(#)clri.c 2.1 %G%";
-static char sccsid[] = "@(#)clri.c 1.1 %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 ...
*/
+#ifndef SIMFS
#include <sys/param.h>
#include <sys/param.h>
-#include <sys/ino.h>
+#include <sys/inode.h>
+#include <sys/fs.h>
+#else
+#include "../h/param.h"
+#include "../h/inode.h"
+#include "../h/fs.h"
+#endif
#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)
-char *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;
- if(argc < 3) {
+ if
(argc < 3) {
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);
- if(f < 0) {
+ if
(f < 0) {
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]);
- if(n == 0) {
+ if
(n == 0) {
printf("%s: is zero\n", argv[i]);
status = 1;
continue;
}
printf("%s: is zero\n", argv[i]);
status = 1;
continue;
}
- off =
itod(n) *
BSIZE;
+ off =
fsbtodb(&sblock, itod(&sblock, n)) * DEV_
BSIZE;
lseek(f, off, 0);
lseek(f, off, 0);
- 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;
}
}
- if(status)
+ if
(status)
exit(status);
exit(status);
- 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 =
itod(n) *
BSIZE;
+ off =
fsbtodb(&sblock, itod(&sblock, n)) * DEV_
BSIZE;
lseek(f, off, 0);
lseek(f, off, 0);
- read(f, (char *)buf,
BSIZE
);
- j = itoo(n);
- for
(k=0; k<
ISIZE; k++)
+ read(f, (char *)buf,
sblock.fs_bsize
);
+ j = itoo(
&sblock,
n);
+ 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)
-char *s;
+
char *s;
{
register c;
while(c = *s++)
{
register c;
while(c = *s++)
- if(c < '0' || c > '9')
+ if
(c < '0' || c > '9')
return(0);
return(1);
}
return(0);
return(1);
}