summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--disk-utils/fsck.minix.c6
-rw-r--r--disk-utils/mkfs.minix.c5
-rw-r--r--include/bitops.h16
3 files changed, 21 insertions, 6 deletions
diff --git a/disk-utils/fsck.minix.c b/disk-utils/fsck.minix.c
index c9bd65359..31b5ef6c2 100644
--- a/disk-utils/fsck.minix.c
+++ b/disk-utils/fsck.minix.c
@@ -100,12 +100,12 @@
#include <termios.h>
#include <mntent.h>
#include <sys/stat.h>
-#include <sys/param.h>
#include <signal.h>
#include "minix.h"
#include "nls.h"
#include "pathnames.h"
+#include "bitops.h"
#define ROOT_INO 1
@@ -166,8 +166,8 @@ static unsigned char * zone_count = NULL;
static void recursive_check(unsigned int ino);
static void recursive_check2(unsigned int ino);
-#define inode_in_use(x) (isset(inode_map,(x)))
-#define zone_in_use(x) (isset(zone_map,(x)-FIRSTZONE+1))
+#define inode_in_use(x) (isset(inode_map,(x)) != 0)
+#define zone_in_use(x) (isset(zone_map,(x)-FIRSTZONE+1) != 0)
#define mark_inode(x) (setbit(inode_map,(x)),changed=1)
#define unmark_inode(x) (clrbit(inode_map,(x)),changed=1)
diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c
index ebef5188e..391f09b84 100644
--- a/disk-utils/mkfs.minix.c
+++ b/disk-utils/mkfs.minix.c
@@ -68,7 +68,6 @@
#include <stdlib.h>
#include <termios.h>
#include <sys/stat.h>
-#include <sys/param.h>
#include <mntent.h>
#include <getopt.h>
@@ -76,6 +75,7 @@
#include "minix.h"
#include "nls.h"
#include "pathnames.h"
+#include "bitops.h"
#define MINIX_ROOT_INO 1
#define MINIX_BAD_INO 2
@@ -131,8 +131,7 @@ static unsigned short good_blocks_table[MAX_GOOD_BLOCKS];
static int used_good_blocks = 0;
static unsigned long req_nr_inodes = 0;
-#define inode_in_use(x) (isset(inode_map,(x)))
-#define zone_in_use(x) (isset(zone_map,(x)-FIRSTZONE+1))
+#define zone_in_use(x) (isset(zone_map,(x)-FIRSTZONE+1) != 0)
#define mark_inode(x) (setbit(inode_map,(x)))
#define unmark_inode(x) (clrbit(inode_map,(x)))
diff --git a/include/bitops.h b/include/bitops.h
index e6eaff18c..e283b8355 100644
--- a/include/bitops.h
+++ b/include/bitops.h
@@ -4,6 +4,22 @@
#include <stdint.h>
#include <endian.h>
+/*
+ * Bit map related macros. Usually provided by libc.
+ */
+#include <sys/param.h>
+
+#ifndef NBBY
+# define NBBY CHAR_BIT
+#endif
+
+#ifndef setbit
+# define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
+# define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
+# define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
+# define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
+#endif
+
#if !defined __BYTE_ORDER || !(__BYTE_ORDER == __LITTLE_ENDIAN) && !(__BYTE_ORDER == __BIG_ENDIAN)
#error missing __BYTE_ORDER
#endif