fsversion.c
来自「minix操作系统最新版本(3.1.1)的源代码」· C语言 代码 · 共 53 行
C
53 行
/* This procedure examines a file system and figures out whether it is * version 1 or version 2. It returns the result as an int. If the * file system is neither, it returns -1. A typical call is: * * n = fsversion("/dev/hd1", "df"); * * The first argument is the special file for the file system. * The second is the program name, which is used in error messages. */#include <sys/types.h>#include <minix/config.h>#include <minix/const.h>#include <minix/minlib.h>#include <minix/type.h>#include <fcntl.h>#include <unistd.h>#include <stdio.h>#include "fs/const.h"#include "fs/type.h"#include "fs/super.h"static struct super_block super, *sp;int fsversion(dev, prog)char *dev, *prog;{ int fd; if ((fd = open(dev, O_RDONLY)) < 0) { std_err(prog); std_err(" cannot open "); perror(dev); return(-1); } lseek(fd, (off_t) SUPER_BLOCK_BYTES, SEEK_SET); /* skip boot block */ if (read(fd, (char *) &super, (unsigned) SUPER_SIZE) != SUPER_SIZE) { std_err(prog); std_err(" cannot read super block on "); perror(dev); close(fd); return(-1); } close(fd); sp = &super; if (sp->s_magic == SUPER_MAGIC) return(1); if (sp->s_magic == SUPER_V2) return(2); if (sp->s_magic == SUPER_V3) return(3); return(-1);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?