aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/tapefs/32vfs.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2006-05-21 18:24:59 +0000
committerrsc <devnull@localhost>2006-05-21 18:24:59 +0000
commit38c7eb9bd22e05ef32998858b178edaf8269cbab (patch)
treeb0bfee2343be74547d4c221f29dd4163b6c65c47 /src/cmd/tapefs/32vfs.c
parent3bff492520ffc551fe1951ea6f0d806f837f05d5 (diff)
downloadplan9port-38c7eb9bd22e05ef32998858b178edaf8269cbab.tar.gz
plan9port-38c7eb9bd22e05ef32998858b178edaf8269cbab.tar.bz2
plan9port-38c7eb9bd22e05ef32998858b178edaf8269cbab.zip
plan 9 import
Diffstat (limited to 'src/cmd/tapefs/32vfs.c')
-rw-r--r--src/cmd/tapefs/32vfs.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/cmd/tapefs/32vfs.c b/src/cmd/tapefs/32vfs.c
index c273bcf4..adccd590 100644
--- a/src/cmd/tapefs/32vfs.c
+++ b/src/cmd/tapefs/32vfs.c
@@ -20,9 +20,11 @@
#define VSUPERB 1
#define VROOT 2 /* root inode */
#define VNAMELEN 14
-#define BLSIZE 512
+#define MAXBLSIZE 1024
+int BLSIZE;
#define LINOPB (BLSIZE/sizeof(struct v32dinode))
-#define LNINDIR (BLSIZE/sizeof(unsigned long))
+#define LNINDIR (BLSIZE/4)
+#define MAXLNINDIR (MAXBLSIZE/4)
struct v32dinode {
unsigned char flags[2];
@@ -51,6 +53,13 @@ populate(char *name)
{
Fileinf f;
+ BLSIZE = 512; /* 32v */
+ if(blocksize){
+ /* 1024 for 4.1BSD */
+ if(blocksize != 512 && blocksize != 1024)
+ error("bad block size");
+ BLSIZE = blocksize;
+ }
replete = 0;
tapefile = open(name, OREAD);
if (tapefile<0)
@@ -106,7 +115,7 @@ docreate(Ram *r)
char *
doread(Ram *r, vlong off, long cnt)
{
- static char buf[Maxbuf+BLSIZE];
+ static char buf[Maxbuf+MAXBLSIZE];
int bno, i;
bno = off/BLSIZE;
@@ -147,7 +156,7 @@ dopermw(Ram *r)
Fileinf
iget(int ino)
{
- char buf[BLSIZE];
+ char buf[MAXBLSIZE];
struct v32dinode *dp;
long flags, i;
Fileinf f;