mdev: enlarge inline documentation
[oweals/busybox.git] / util-linux / fsck_minix.c
index 63f915ac5e17185ae4e76a848bdea48c714df507..78a7c826b71c82c5080da22963c2e2896eb4f870 100644 (file)
@@ -29,7 +29,7 @@
  * 28.02.93  - added support for different directory entry sizes..
  *
  * Sat Mar  6 18:59:42 1993, faith@cs.unc.edu: Output namelen with
- *                           super-block information
+ *                           superblock information
  *
  * Sat Oct  9 11:17:11 1993, faith@cs.unc.edu: make exit status conform
  *                           to that required by fsutil
@@ -64,7 +64,7 @@
  * 06.11.96  - Added v2 code submitted by Joerg Dorchain, but written by
  *             Andreas Schwab.
  *
- * 1999-02-22 Arkadiusz MiΒΆkiewicz <misiek@misiek.eu.org>
+ * 1999-02-22 Arkadiusz Mickiewicz <misiek@misiek.eu.org>
  * - added Native Language Support
  *
  *
@@ -79,7 +79,7 @@
  *     -a for automatic repairs (not implemented)
  *     -r for repairs (interactive) (not implemented)
  *     -v for verbose (tells how many files)
- *     -s for super-block info
+ *     -s for superblock info
  *     -m for minix-like "mode not cleared" warnings
  *     -f force filesystem check even if filesystem marked as valid
  *
@@ -121,8 +121,9 @@ enum { version2 = 0 };
 
 enum { MAX_DEPTH = 32 };
 
+enum { dev_fd = 3 };
+
 struct globals {
-       int dev_fd;
 #if ENABLE_FEATURE_MINIX2
        smallint version2;
 #endif
@@ -147,7 +148,7 @@ struct globals {
 
        /* Bigger stuff */
        struct termios sv_termios;
-       char super_block_buffer[BLOCK_SIZE];
+       char superblock_buffer[BLOCK_SIZE];
        char add_zone_ind_blk[BLOCK_SIZE];
        char add_zone_dind_blk[BLOCK_SIZE];
        USE_FEATURE_MINIX2(char add_zone_tind_blk[BLOCK_SIZE];)
@@ -158,7 +159,6 @@ struct globals {
 };
 
 #define G (*ptr_to_globals)
-#define dev_fd             (G.dev_fd             )
 #if ENABLE_FEATURE_MINIX2
 #define version2           (G.version2           )
 #endif
@@ -183,7 +183,7 @@ struct globals {
 #define name_depth         (G.name_depth         )
 #define name_component     (G.name_component     )
 #define sv_termios         (G.sv_termios         )
-#define super_block_buffer (G.super_block_buffer )
+#define superblock_buffer  (G.superblock_buffer )
 #define add_zone_ind_blk   (G.add_zone_ind_blk   )
 #define add_zone_dind_blk  (G.add_zone_dind_blk  )
 #define add_zone_tind_blk  (G.add_zone_tind_blk  )
@@ -223,7 +223,7 @@ enum {
 #define Inode1 (((struct minix1_inode *) inode_buffer)-1)
 #define Inode2 (((struct minix2_inode *) inode_buffer)-1)
 
-#define Super (*(struct minix_super_block *)(super_block_buffer))
+#define Super (*(struct minix_superblock *)(superblock_buffer))
 
 #if ENABLE_FEATURE_MINIX2
 # define ZONES    ((unsigned)(version2 ? Super.s_zones : Super.s_nzones))
@@ -244,15 +244,15 @@ static ALWAYS_INLINE unsigned div_roundup(unsigned size, unsigned n)
        return (size + n-1) / n;
 }
 
-#if ENABLE_FEATURE_MINIX2
-#define INODE_BLOCKS div_roundup(INODES, (version2 ? MINIX2_INODES_PER_BLOCK \
-                                   : MINIX1_INODES_PER_BLOCK))
+#if !ENABLE_FEATURE_MINIX2
+#define INODE_BLOCKS            div_roundup(INODES, MINIX1_INODES_PER_BLOCK)
 #else
-#define INODE_BLOCKS div_roundup(INODES, MINIX1_INODES_PER_BLOCK)
+#define INODE_BLOCKS            div_roundup(INODES, \
+                                (version2 ? MINIX2_INODES_PER_BLOCK : MINIX1_INODES_PER_BLOCK))
 #endif
 
-#define INODE_BUFFER_SIZE (INODE_BLOCKS * BLOCK_SIZE)
-#define NORM_FIRSTZONE    (2 + IMAPS + ZMAPS + INODE_BLOCKS)
+#define INODE_BUFFER_SIZE       (INODE_BLOCKS * BLOCK_SIZE)
+#define NORM_FIRSTZONE          (2 + IMAPS + ZMAPS + INODE_BLOCKS)
 
 /* Before you ask "where they come from?": */
 /* setbit/clrbit are supplied by sys/param.h */
@@ -289,11 +289,11 @@ static void recursive_check(unsigned ino);
 static void recursive_check2(unsigned ino);
 #endif
 
-static void die(const char *str) ATTRIBUTE_NORETURN;
+static void die(const char *str) NORETURN;
 static void die(const char *str)
 {
        if (termios_set)
-               tcsetattr(0, TCSANOW, &sv_termios);
+               tcsetattr_stdin_TCSANOW(&sv_termios);
        bb_error_msg_and_die("%s", str);
 }
 
@@ -378,7 +378,7 @@ static void check_mount(void)
        struct mntent *mnt;
        int cont;
        int fd;
-
+//XXX:FIXME use find_mount_point()
        f = setmntent(MOUNTED, "r");
        if (f == NULL)
                return;
@@ -405,7 +405,7 @@ static void check_mount(void)
                cont = ask("Do you really want to continue", 0);
        if (!cont) {
                printf("Check aborted\n");
-               exit(0);
+               exit(EXIT_SUCCESS);
        }
 }
 
@@ -560,7 +560,7 @@ static int map_block2(struct minix2_inode *inode, unsigned blknr)
 }
 #endif
 
-static void write_super_block(void)
+static void write_superblock(void)
 {
        /*
         * Set the state of the filesystem based on whether or not there
@@ -572,13 +572,13 @@ static void write_super_block(void)
                Super.s_state &= ~MINIX_ERROR_FS;
 
        xlseek(dev_fd, BLOCK_SIZE, SEEK_SET);
-       if (BLOCK_SIZE != full_write(dev_fd, super_block_buffer, BLOCK_SIZE))
-               die("cannot write super-block");
+       if (BLOCK_SIZE != full_write(dev_fd, superblock_buffer, BLOCK_SIZE))
+               die("cannot write superblock");
 }
 
 static void write_tables(void)
 {
-       write_super_block();
+       write_superblock();
 
        if (IMAPS * BLOCK_SIZE != write(dev_fd, inode_map, IMAPS * BLOCK_SIZE))
                die("cannot write inode map");
@@ -614,8 +614,8 @@ static void get_dirsize(void)
 static void read_superblock(void)
 {
        xlseek(dev_fd, BLOCK_SIZE, SEEK_SET);
-       if (BLOCK_SIZE != full_read(dev_fd, super_block_buffer, BLOCK_SIZE))
-               die("cannot read super block");
+       if (BLOCK_SIZE != full_read(dev_fd, superblock_buffer, BLOCK_SIZE))
+               die("cannot read superblock");
        /* already initialized to:
        namelen = 14;
        dirsize = 16;
@@ -634,13 +634,13 @@ static void read_superblock(void)
                version2 = 1;
 #endif
        } else
-               die("bad magic number in super-block");
+               die("bad magic number in superblock");
        if (ZONESIZE != 0 || BLOCK_SIZE != 1024)
                die("only 1k blocks/zones supported");
        if (IMAPS * BLOCK_SIZE * 8 < INODES + 1)
-               die("bad s_imap_blocks field in super-block");
+               die("bad s_imap_blocks field in superblock");
        if (ZMAPS * BLOCK_SIZE * 8 < ZONES - FIRSTZONE + 1)
-               die("bad s_zmap_blocks field in super-block");
+               die("bad s_zmap_blocks field in superblock");
 }
 
 static void read_tables(void)
@@ -1204,7 +1204,7 @@ void check2(void);
 #endif
 
 int fsck_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int fsck_minix_main(int argc, char **argv)
+int fsck_minix_main(int argc UNUSED_PARAM, char **argv)
 {
        struct termios tmp;
        int retcode = 0;
@@ -1223,7 +1223,7 @@ int fsck_minix_main(int argc, char **argv)
                if (!isatty(0) || !isatty(1))
                        die("need terminal for interactive repairs");
        }
-       dev_fd = xopen(device_name, OPT_repair ? O_RDWR : O_RDONLY);
+       xmove_fd(xopen(device_name, OPT_repair ? O_RDWR : O_RDONLY), dev_fd);
 
        /*sync(); paranoia? */
        read_superblock();
@@ -1254,7 +1254,7 @@ int fsck_minix_main(int argc, char **argv)
                tcgetattr(0, &sv_termios);
                tmp = sv_termios;
                tmp.c_lflag &= ~(ICANON | ECHO);
-               tcsetattr(0, TCSANOW, &tmp);
+               tcsetattr_stdin_TCSANOW(&tmp);
                termios_set = 1;
        }
 
@@ -1296,10 +1296,10 @@ int fsck_minix_main(int argc, char **argv)
                printf("FILE SYSTEM HAS BEEN CHANGED\n");
                sync();
        } else if (OPT_repair)
-               write_super_block();
+               write_superblock();
 
        if (OPT_manual)
-               tcsetattr(0, TCSANOW, &sv_termios);
+               tcsetattr_stdin_TCSANOW(&sv_termios);
 
        if (changed)
                retcode += 3;