|
|
researchv10 Norman
#include <errno.h>
#define SMAGIC 0x21746967
#define DMAGIC 0x3A746967
typedef struct Superblock
{
long magic; /* magic number for Superblock */
unsigned short blocksize; /* physical size of blocks */
short version; /* type of superblock */
long nblocks; /* number of blocks on device */
long zero; /* first logical data block */
long nfree; /* number of free blocks */
long ninodes; /* number of inodes */
long ninochars; /* number of bytes of inode names */
long binodes; /* start of inodes */
long nextffree; /* next free file block */
long nextsb; /* next superblock */
short fd; /* fildes for device (in core) */
char vol_id[128]; /* name the disk can be mounted as */
char comment[128]; /* comments */
long myblock; /* where this superblock is */
long nF; /* bytes for .F (VBTREE) */
long nT; /* bytes for .T (VBTREE) */
long ctime; /* create time for this superblock */
} Superblock;
typedef struct Inode
{
long magic; /* magic number for Dirent */
long block; /* starting block of file */
long nbytes; /* bytes in file */
long ctime; /* creation time */
union {
char *n; /* core - name */
long o; /* disk - offset into chars block */
} name; /* filename */
long pad1; /* to 32 bytes */
short mode; /* a la stat */
short uid; /* owner */
short gid; /* owner */
short pad2; /* to 32 bytes */
} Inode;
#define IPERB (s->blocksize/sizeof(Inode))
extern char *openinode(), *lkwri(), *lkwsb();
extern char *mapdev();
extern Inode *(*inodefn)();
extern void (*traversefn)();
extern long numinodes;
extern long numnamechars;
extern char *timenow();
#define inodeof(s) (*inodefn)(s)
#define inodetraverse(fn) (*traversefn)(fn)
#define VLINK 1 /* linked list version */
#define VBTREE 2 /* cbt */
#define NBLKS(s, x) (long)(((s)->blocksize-1+(x))/(s)->blocksize)
/*
flags for openinode
*/
#define DO_INODE 1
#define SPIN_DOWN 2
#define BIGBLOCK (60*1024L) /* max read/write */
/*
in.c declarations
*/
extern int bad;
extern long nbytes;
extern long blkdone;
extern long nfiles;
extern char *argout;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.