From: Ben Gras Date: Wed, 7 Nov 2012 16:54:00 +0000 (+0100) Subject: mkfs: drop support for running on DOS X-Git-Tag: v3.2.1~241 X-Git-Url: http://zhaoyanbai.com/repos/%22http:/www.isc.org/icons/expt.png?a=commitdiff_plain;h=9d9a90c118a46a4bcf8ef8d67e2c6a093df6f886;p=minix.git mkfs: drop support for running on DOS --- diff --git a/usr.sbin/mkfs.mfs/mkfs.c b/usr.sbin/mkfs.mfs/mkfs.c index ecbb56f35..f5dd3c18e 100644 --- a/usr.sbin/mkfs.mfs/mkfs.c +++ b/usr.sbin/mkfs.mfs/mkfs.c @@ -41,12 +41,6 @@ #define max(a,b) ((a) > (b) ? (a) : (b)) #endif -#ifndef DOS -#ifndef UNIX -#define UNIX -#endif -#endif - #define INODE_MAP 2 #define MAX_TOKENS 10 #define LINE_LEN 200 @@ -57,11 +51,6 @@ #define SECTOR_SIZE 512 -#ifdef DOS -maybedefine O_RDONLY 4 /* O_RDONLY | BINARY_BIT */ - maybedefine BWRITE 5 /* O_WRONLY | BINARY_BIT */ -#endif - #if !defined(__minix) #define mul64u(a,b) ((a) * (b)) #define lseek64(a,b,c,d) lseek(a,b,c) @@ -128,8 +117,6 @@ void special(char *string); void get_block(block_t n, char *buf); void get_super_block(char *buf); void put_block(block_t n, char *buf); -void cache_init(void); -void flush(void); void mx_read(int blocknr, char *buf); void mx_write(int blocknr, char *buf); void dexit(char *s, int sectnum, int err); @@ -336,7 +323,6 @@ char *argv[]; /* Open special. */ special(argv[--optind]); -#ifdef UNIX if (!donttest) { short *testb; ssize_t w; @@ -377,12 +363,9 @@ printf("testb = 0x%x 0x%x 0x%x\n", testb[0], testb[1], testb[block_size-1]); lseek(fd, 0L, SEEK_SET); free(testb); } -#endif /* Make the file-system */ - cache_init(); - put_block((block_t) 0, zero); /* Write a null boot block. */ zones = nrblocks >> zone_shift; @@ -394,7 +377,6 @@ printf("testb = 0x%x 0x%x 0x%x\n", testb[0], testb[1], testb[block_size-1]); if (simple == 0) eat_dir(root_inum); if (print) print_fs(); - flush(); return(0); /* NOTREACHED */ @@ -1251,13 +1233,9 @@ error: uint32_t file_time(f) int f; { -#ifdef UNIX struct stat statbuf; fstat(f, &statbuf); return(statbuf.st_mtime); -#else /* fstat not supported by DOS */ - return(0L); -#endif } @@ -1267,7 +1245,6 @@ char *s; fprintf(stderr, "%s: %s\n", progname, s); if (lct != 0) fprintf(stderr, "Line %d being processed when error detected.\n", lct); - flush(); exit(2); } @@ -1384,257 +1361,6 @@ void usage() exit(1); } -/*================================================================ - * get_block & put_block for MS-DOS - *===============================================================*/ -#ifdef DOS - -/* - * These are the get_block and put_block routines - * when compiling & running mkfs.c under MS-DOS. - * - * It requires the (asembler) routines absread & abswrite - * from the file diskio.asm. Since these routines just do - * as they are told (read & write the sector specified), - * a local cache is used to minimize the i/o-overhead for - * frequently used blocks. - * - * The global variable "file" determines whether the output - * is to a disk-device or to a binary file. - */ - - -#define PH_SECTSIZE 512 /* size of a physical disk-sector */ - - -char *derrtab[14] = { - "no error", - "disk is read-only", - "unknown unit", - "device not ready", - "bad command", - "data error", - "internal error: bad request structure length", - "seek error", - "unknown media type", - "sector not found", - "printer out of paper (?)", - "write fault", - "read error", - "general error" -}; - -#define CACHE_SIZE 20 /* 20 block-buffers */ - - -struct cache { - char blockbuf[BLOCK_SIZE]; - block_t blocknum; - int dirty; - int usecnt; -} cache[CACHE_SIZE]; - - -void special(string) -char *string; -{ - - if (string[1] == ':' && string[2] == 0) { - /* Format: d: or d:fname */ - disk = (string[0] & ~32) - 'A'; - if (disk > 1 && !override) /* safety precaution */ - pexit("Bad drive specifier for special"); - } else { - file = 1; - if ((fd = creat(string, BWRITE)) == 0) - pexit("Can't open special file"); - } -} - -void get_block(n, buf) -block_t n; -char *buf; -{ - /* Get a block to the user */ - struct cache *bp, *fp; - - /* First access returns a zero block */ - if (read_and_set(n) == 0) { - copy(zero, buf, block_size); - return; - } - - /* Look for block in cache */ - fp = 0; - for (bp = cache; bp < &cache[CACHE_SIZE]; bp++) { - if (bp->blocknum == n) { - copy(bp, buf, block_size); - bp->usecnt++; - return; - } - - /* Remember clean block */ - if (bp->dirty == 0) - if (fp) { - if (fp->usecnt > bp->usecnt) fp = bp; - } else - fp = bp; - } - - /* Block not in cache, get it */ - if (!fp) { - /* No clean buf, flush one */ - for (bp = cache, fp = cache; bp < &cache[CACHE_SIZE]; bp++) - if (fp->usecnt > bp->usecnt) fp = bp; - mx_write(fp->blocknum, fp); - } - mx_read(n, fp); - fp->dirty = 0; - fp->usecnt = 0; - fp->blocknum = n; - copy(fp, buf, block_size); -} - -void put_block(n, buf) -block_t n; -char *buf; -{ - /* Accept block from user */ - struct cache *fp, *bp; - - (void) read_and_set(n); - - /* Look for block in cache */ - fp = 0; - for (bp = cache; bp < &cache[CACHE_SIZE]; bp++) { - if (bp->blocknum == n) { - copy(buf, bp, block_size); - bp->dirty = 1; - return; - } - - /* Remember clean block */ - if (bp->dirty == 0) - if (fp) { - if (fp->usecnt > bp->usecnt) fp = bp; - } else - fp = bp; - } - - /* Block not in cache */ - if (!fp) { - /* No clean buf, flush one */ - for (bp = cache, fp = cache; bp < &cache[CACHE_SIZE]; bp++) - if (fp->usecnt > bp->usecnt) fp = bp; - mx_write(fp->blocknum, fp); - } - fp->dirty = 1; - fp->usecnt = 1; - fp->blocknum = n; - copy(buf, fp, block_size); -} - -void cache_init() -{ - struct cache *bp; - for (bp = cache; bp < &cache[CACHE_SIZE]; bp++) bp->blocknum = -1; -} - -void flush() -{ - /* Flush all dirty blocks to disk */ - struct cache *bp; - - for (bp = cache; bp < &cache[CACHE_SIZE]; bp++) - if (bp->dirty) { - mx_write(bp->blocknum, bp); - bp->dirty = 0; - } -} - -/*================================================================== - * hard read & write etc. - *=================================================================*/ -#define MAX_RETRIES 5 - - -void mx_read(blocknr, buf) -int blocknr; -char *buf; -{ - - /* Read the requested MINIX-block in core */ - char (*bp)[PH_SECTSIZE]; - int sectnum, retries, err; - - if (file) { - lseek(fd, (off_t) blocknr * block_size, 0); - if (read(fd, buf, block_size) != block_size) - pexit("mx_read: error reading file"); - } else { - sectnum = blocknr * (block_size / PH_SECTSIZE); - for (bp = buf; bp < &buf[block_size]; bp++) { - retries = MAX_RETRIES; - do - err = absread(disk, sectnum, bp); - while (err && --retries); - - if (retries) { - sectnum++; - } else { - dexit("mx_read", sectnum, err); - } - } - } -} - -void mx_write(blocknr, buf) -int blocknr; -char *buf; -{ - /* Write the MINIX-block to disk */ - char (*bp)[PH_SECTSIZE]; - int retries, sectnum, err; - - if (file) { - lseek(fd, blocknr * block_size, 0); - if (write(fd, buf, block_size) != block_size) { - pexit("mx_write: error writing file"); - } - } else { - sectnum = blocknr * (block_size / PH_SECTSIZE); - for (bp = buf; bp < &buf[block_size]; bp++) { - retries = MAX_RETRIES; - do { - err = abswrite(disk, sectnum, bp); - } while (err && --retries); - - if (retries) { - sectnum++; - } else { - dexit("mx_write", sectnum, err); - } - } - } -} - - -void dexit(s, sectnum, err) -int sectnum, err; -char *s; -{ - printf("Error: %s, sector: %d, code: %d, meaning: %s\n", - s, sectnum, err, derrtab[err]); - exit(2); -} - -#endif - -/*================================================================ - * get_block & put_block for UNIX - *===============================================================*/ -#ifdef UNIX - void special(string) char *string; { @@ -1700,17 +1426,3 @@ char *buf; } } - -/* Dummy routines to keep source file clean from #ifdefs */ - -void flush() -{ - return; -} - -void cache_init() -{ - return; -} - -#endif