non-linux support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Right, it may sound a bit odd, but util-linux is pretty much useful for
non-linux OSes too.  Here is a patch that makes it work on GNU/Hurd, and
will probably help a lot for other OSes too.

It leaves the linux part untouched, except

- #include <linux/types.h> is turned into #include <stdint.h>, much more
  portable, and __uxy were turned into uintxy_t.
- #include <termio.h> turned into #include <termios.h>: termio.h is
  deprecated since a lot time, we should really use termios.h instead.
- ioctl(0, TCFLSH, x) is turned into tcflush(0, x). These are really
  equivalents (see the glibc implementation of tcflush). TCSA &such
  ioctls should most probably also be replaced by tcsetattr & such, but
  since glibc's implementation is not that straightforward and according
  to comments there are some kludges, I preferred to do this change for
  GNU/Hurd only.

Samuel
diff -ur util-linux-2.13~rc3/configure.ac util-linux-2.13~rc3-mine/configure.ac
--- util-linux-2.13~rc3/configure.ac	2007-08-10 17:51:27.000000000 +0000
+++ util-linux-2.13~rc3-mine/configure.ac	2007-08-10 18:01:55.000000000 +0000
@@ -224,6 +224,14 @@
 [AC_MSG_NOTICE([Your libc thinks that swapon has 1 arg only.])
 ])
 
+case "${host_os}" in
+  linux*)
+    AM_CONDITIONAL(LINUX,true)
+    ;;
+  *)
+    AM_CONDITIONAL(LINUX,false)
+    ;;
+esac
 
 dnl UTIL_SET_ARCH(ARCHNAME, PATTERN)
 dnl ---------------------------------
--- util-linux-2.13~rc3/disk-utils/Makefile.am	2007-05-17 08:31:16.000000000 +0000
+++ util-linux-2.13~rc3-mine/disk-utils/Makefile.am	2007-08-10 18:03:02.000000000 +0000
@@ -1,6 +1,6 @@
 include $(top_srcdir)/config/include-Makefile.am
 
-man_MANS = blockdev.8 fdformat.8 isosize.8 mkfs.8 mkswap.8 \
+man_MANS = blockdev.8 isosize.8 mkfs.8 mkswap.8 \
            fsck.minix.8 mkfs.minix.8 mkfs.bfs.8
 
 sbin_PROGRAMS = mkfs mkswap blockdev fsck.minix mkfs.minix mkfs.bfs
@@ -9,7 +9,12 @@
 mkfs_bfs_SOURCES = mkfs.bfs.c
 mkswap_SOURCES = mkswap.c swapheader.h
 
-usrbinexec_PROGRAMS = fdformat isosize
+usrbinexec_PROGRAMS = isosize
+
+if LINUX
+man_MANS += fdformat.8
+usrbinexec_PROGRAMS += fdformat
+endif
 
 if BUILD_ELVTUNE
 sbin_PROGRAMS += elvtune
--- util-linux-2.13~rc3/fdisk/cfdisk.c	2007-07-02 14:55:45.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/cfdisk.c	2007-08-10 16:42:16.000000000 +0000
@@ -78,7 +78,6 @@
 #include <string.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
-#include <linux/types.h>
 
 #include "nls.h"
 #include "xstrncpy.h"
--- util-linux-2.13~rc3/fdisk/fdiskaixlabel.h	2007-06-29 10:19:43.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdiskaixlabel.h	2007-08-10 16:32:11.000000000 +0000
@@ -1,7 +1,7 @@
 #ifndef FDISK_AIX_LABEL_H
 #define FDISK_AIX_LABEL_H
 
-#include <linux/types.h>   /* for __u32 etc */
+#include <stdint.h>   /* for uint32_t etc */
 /*
  * Copyright (C) Andreas Neuper, Sep 1998.
  *	This file may be redistributed under
--- util-linux-2.13~rc3/fdisk/fdiskbsdlabel.c	2007-04-25 12:43:38.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdiskbsdlabel.c	2007-08-10 18:12:36.000000000 +0000
@@ -62,6 +62,10 @@
 #define DKTYPENAMES
 #include "fdiskbsdlabel.h"
 
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 4096
+#endif
+
 static void xbsd_delete_part (void);
 static void xbsd_new_part (void);
 static void xbsd_write_disklabel (void);
--- util-linux-2.13~rc3/fdisk/fdiskbsdlabel.h	2007-06-29 10:19:43.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdiskbsdlabel.h	2007-08-10 16:32:11.000000000 +0000
@@ -34,10 +34,10 @@
  * SUCH DAMAGE.
  */
 
-#include <linux/types.h>	/* for __u32, __u16, __u8, __s16 */
+#include <stdint.h>	/* for uint32_t, uint16_t, uint8_t, int16_t */
 
 #ifndef BSD_DISKMAGIC
-#define BSD_DISKMAGIC     ((__u32) 0x82564557)
+#define BSD_DISKMAGIC     ((uint32_t) 0x82564557)
 #endif
 
 #ifndef BSD_MAXPARTITIONS
@@ -63,31 +63,31 @@
 #define	BSD_SBSIZE        8192		/* max size of fs superblock */
 
 struct xbsd_disklabel {
-	__u32	d_magic;		/* the magic number */
-	__s16	d_type;			/* drive type */
-	__s16	d_subtype;		/* controller/d_type specific */
+	uint32_t	d_magic;		/* the magic number */
+	int16_t	d_type;			/* drive type */
+	int16_t	d_subtype;		/* controller/d_type specific */
 	char	d_typename[16];		/* type name, e.g. "eagle" */
 	char	d_packname[16];			/* pack identifier */ 
 			/* disk geometry: */
-	__u32	d_secsize;		/* # of bytes per sector */
-	__u32	d_nsectors;		/* # of data sectors per track */
-	__u32	d_ntracks;		/* # of tracks per cylinder */
-	__u32	d_ncylinders;		/* # of data cylinders per unit */
-	__u32	d_secpercyl;		/* # of data sectors per cylinder */
-	__u32	d_secperunit;		/* # of data sectors per unit */
+	uint32_t	d_secsize;		/* # of bytes per sector */
+	uint32_t	d_nsectors;		/* # of data sectors per track */
+	uint32_t	d_ntracks;		/* # of tracks per cylinder */
+	uint32_t	d_ncylinders;		/* # of data cylinders per unit */
+	uint32_t	d_secpercyl;		/* # of data sectors per cylinder */
+	uint32_t	d_secperunit;		/* # of data sectors per unit */
 	/*
 	 * Spares (bad sector replacements) below
 	 * are not counted in d_nsectors or d_secpercyl.
 	 * Spare sectors are assumed to be physical sectors
 	 * which occupy space at the end of each track and/or cylinder.
 	 */
-	__u16	d_sparespertrack;	/* # of spare sectors per track */
-	__u16	d_sparespercyl;		/* # of spare sectors per cylinder */
+	uint16_t	d_sparespertrack;	/* # of spare sectors per track */
+	uint16_t	d_sparespercyl;		/* # of spare sectors per cylinder */
 	/*
 	 * Alternate cylinders include maintenance, replacement,
 	 * configuration description areas, etc.
 	 */
-	__u32	d_acylinders;		/* # of alt. cylinders per unit */
+	uint32_t	d_acylinders;		/* # of alt. cylinders per unit */
 
 			/* hardware characteristics: */
 	/*
@@ -106,30 +106,30 @@
 	 * Finally, d_cylskew is the offset of sector 0 on cylinder N
 	 * relative to sector 0 on cylinder N-1.
 	 */
-	__u16	d_rpm;			/* rotational speed */
-	__u16	d_interleave;		/* hardware sector interleave */
-	__u16	d_trackskew;		/* sector 0 skew, per track */
-	__u16	d_cylskew;		/* sector 0 skew, per cylinder */
-	__u32	d_headswitch;		/* head switch time, usec */
-	__u32	d_trkseek;		/* track-to-track seek, usec */
-	__u32	d_flags;		/* generic flags */
+	uint16_t	d_rpm;			/* rotational speed */
+	uint16_t	d_interleave;		/* hardware sector interleave */
+	uint16_t	d_trackskew;		/* sector 0 skew, per track */
+	uint16_t	d_cylskew;		/* sector 0 skew, per cylinder */
+	uint32_t	d_headswitch;		/* head switch time, usec */
+	uint32_t	d_trkseek;		/* track-to-track seek, usec */
+	uint32_t	d_flags;		/* generic flags */
 #define NDDATA 5
-	__u32	d_drivedata[NDDATA];	/* drive-type specific information */
+	uint32_t	d_drivedata[NDDATA];	/* drive-type specific information */
 #define NSPARE 5
-	__u32	d_spare[NSPARE];	/* reserved for future use */
-	__u32	d_magic2;		/* the magic number (again) */
-	__u16	d_checksum;		/* xor of data incl. partitions */
+	uint32_t	d_spare[NSPARE];	/* reserved for future use */
+	uint32_t	d_magic2;		/* the magic number (again) */
+	uint16_t	d_checksum;		/* xor of data incl. partitions */
 			/* filesystem and partition information: */
-	__u16	d_npartitions;	        /* number of partitions in following */
-	__u32	d_bbsize;	        /* size of boot area at sn0, bytes */
-	__u32	d_sbsize;	        /* max size of fs superblock, bytes */
+	uint16_t	d_npartitions;	        /* number of partitions in following */
+	uint32_t	d_bbsize;	        /* size of boot area at sn0, bytes */
+	uint32_t	d_sbsize;	        /* max size of fs superblock, bytes */
 	struct xbsd_partition	 {	/* the partition table */
-		__u32	p_size;	        /* number of sectors in partition */
-		__u32	p_offset;       /* starting sector */
-		__u32	p_fsize;        /* filesystem basic fragment size */
-		__u8	p_fstype;       /* filesystem type, see below */
-		__u8	p_frag;	        /* filesystem fragments per block */
-		__u16	p_cpg;	        /* filesystem cylinders per group */
+		uint32_t	p_size;	        /* number of sectors in partition */
+		uint32_t	p_offset;       /* starting sector */
+		uint32_t	p_fsize;        /* filesystem basic fragment size */
+		uint8_t	p_fstype;       /* filesystem type, see below */
+		uint8_t	p_frag;	        /* filesystem fragments per block */
+		uint16_t	p_cpg;	        /* filesystem cylinders per group */
 	} d_partitions[BSD_MAXPARTITIONS]; /* actually may be more */
 };
 
--- util-linux-2.13~rc3/fdisk/fdiskmaclabel.h	2007-06-29 10:19:43.500000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdiskmaclabel.h	2007-08-10 16:32:11.000000000 +0000
@@ -1,7 +1,7 @@
 #ifndef FDISK_MAC_LABEL_H
 #define FDISK_MAC_LABEL_H
 
-#include <linux/types.h>   /* for __u32 etc */
+#include <stdint.h>   /* for uint32_t etc */
 /*
  * Copyright (C) Andreas Neuper, Sep 1998.
  *	This file may be redistributed under
--- util-linux-2.13~rc3/fdisk/fdisksgilabel.c	2007-07-16 21:15:33.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdisksgilabel.c	2007-08-10 16:39:03.000000000 +0000
@@ -19,10 +19,10 @@
 #include <sys/ioctl.h>          /* ioctl */
 #include <sys/stat.h>           /* stat */
 #include <assert.h>             /* assert */
+#include <stdint.h>		/* uint*_t */
 
 #include <endian.h>
 #include "nls.h"
-#include <linux/major.h>        /* FLOPPY_MAJOR */
 
 #include "common.h"
 #include "fdisk.h"
@@ -100,11 +100,11 @@
 
 static inline unsigned short
 __swap16(unsigned short x) {
-        return (((__u16)(x) & 0xFF) << 8) | (((__u16)(x) & 0xFF00) >> 8);
+        return (((uint16_t)(x) & 0xFF) << 8) | (((uint16_t)(x) & 0xFF00) >> 8);
 }
 
-static inline __u32
-__swap32(__u32 x) {
+static inline uint32_t
+__swap32(uint32_t x) {
         return (((x & 0xFF) << 24) |
 		((x & 0xFF00) << 8) |
 		((x & 0xFF0000) >> 8) |
@@ -222,8 +222,8 @@
 	       w + 1, _("Device"));
 	for (i = 0 ; i < partitions; i++) {
 		if (sgi_get_num_sectors(i) || debug) {
-			__u32 start = sgi_get_start_sector(i);
-			__u32 len = sgi_get_num_sectors(i);
+			uint32_t start = sgi_get_start_sector(i);
+			uint32_t len = sgi_get_num_sectors(i);
 			kpi++;		/* only count nonempty partitions */
 			printf(
 				"%2d: %s %4s %9ld %9ld %9ld  %2x  %s\n",
@@ -244,8 +244,8 @@
 	       sgilabel->boot_file);
 	for (i = 0 ; i < volumes; i++) {
 		if (sgilabel->directory[i].vol_file_size) {
-			__u32 start = SSWAP32(sgilabel->directory[i].vol_file_start);
-			__u32 len = SSWAP32(sgilabel->directory[i].vol_file_size);
+			uint32_t start = SSWAP32(sgilabel->directory[i].vol_file_start);
+			uint32_t len = SSWAP32(sgilabel->directory[i].vol_file_size);
 			unsigned char *name = sgilabel->directory[i].vol_file_name;
 			printf(_("%2d: %-10s sector%5u size%8u\n"),
 			       i, name, (unsigned int) start,
--- util-linux-2.13~rc3/fdisk/fdisksgilabel.h	2007-07-16 21:15:33.610000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdisksgilabel.h	2007-08-10 16:32:11.000000000 +0000
@@ -1,7 +1,7 @@
 #ifndef FDISK_SGI_LABEL_H
 #define FDISK_SGI_LABEL_H
 
-#include <linux/types.h>   /* for __u32 etc */
+#include <stdint.h>   /* for uint32_t etc */
 /*
  * Copyright (C) Andreas Neuper, Sep 1998.
  *	This file may be modified and redistributed under
@@ -99,9 +99,9 @@
 #define	SGI_INFO_MAGIC		0x00072959
 #define	SGI_INFO_MAGIC_SWAPPED	0x59290700
 #define SSWAP16(x) (other_endian ? __swap16(x) \
-                                 : (__u16)(x))
+                                 : (uint16_t)(x))
 #define SSWAP32(x) (other_endian ? __swap32(x) \
-                                 : (__u32)(x))
+                                 : (uint32_t)(x))
 
 /* fdisk.c */
 #define sgilabel ((sgi_partition *)MBRbuffer)
--- util-linux-2.13~rc3/fdisk/fdisksunlabel.c	2007-07-16 21:15:33.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdisksunlabel.c	2007-08-10 16:41:20.000000000 +0000
@@ -17,6 +17,7 @@
 #include <sys/ioctl.h>		/* ioctl */
 #include <sys/stat.h>		/* stat */
 #include <sys/sysmacros.h>	/* major */
+#include <stdint.h>		/* uint*_t */
 
 #include "nls.h"
 
@@ -26,7 +27,9 @@
 #include <scsi/scsi.h>		/* SCSI_IOCTL_GET_IDLUN */
 #undef u_char
 #endif
+#ifdef __linux__
 #include <linux/major.h>	/* FLOPPY_MAJOR */
+#endif
 
 #include "common.h"
 #include "fdisk.h"
@@ -57,17 +60,20 @@
 };
 
 static inline unsigned short __swap16(unsigned short x) {
-        return (((__u16)(x) & 0xFF) << 8) | (((__u16)(x) & 0xFF00) >> 8);
+        return (((uint16_t)(x) & 0xFF) << 8) | (((uint16_t)(x) & 0xFF00) >> 8);
 }
-static inline __u32 __swap32(__u32 x) {
-        return (((__u32)(x) & 0xFF) << 24) | (((__u32)(x) & 0xFF00) << 8) | (((__u32)(x) & 0xFF0000) >> 8) | (((__u32)(x) & 0xFF000000) >> 24);
+static inline uint32_t __swap32(uint32_t x) {
+        return (((uint32_t)(x) & 0xFF) << 24) | (((uint32_t)(x) & 0xFF00) << 8) | (((uint32_t)(x) & 0xFF0000) >> 8) | (((uint32_t)(x) & 0xFF000000) >> 24);
 }
 
 #define SSWAP16(x) (other_endian ? __swap16(x) \
-				 : (__u16)(x))
+				 : (uint16_t)(x))
 #define SSWAP32(x) (other_endian ? __swap32(x) \
-				 : (__u32)(x))
+				 : (uint32_t)(x))
 
+#ifndef FLOPPY_MAJOR
+#define FLOPPY_MAJOR 2
+#endif
 #ifndef IDE0_MAJOR
 #define IDE0_MAJOR 3
 #endif
@@ -96,7 +102,7 @@
 	}
 }
 
-static void set_sun_partition(int i, __u32 start, __u32 stop, __u16 sysid)
+static void set_sun_partition(int i, uint32_t start, uint32_t stop, uint16_t sysid)
 {
 	sunlabel->part_tags[i].tag = SSWAP16(sysid);
 	sunlabel->part_tags[i].flag = SSWAP16(0);
@@ -270,7 +276,7 @@
 	set_changed(0);
 }
 
-void toggle_sunflags(int i, __u16 mask)
+void toggle_sunflags(int i, uint16_t mask)
 {
 	struct sun_tag_flag *p = &sunlabel->part_tags[i];
 
@@ -279,7 +285,7 @@
 	set_changed(i);
 }
 
-static void fetch_sun(__u32 *starts, __u32 *lens, __u32 *start, __u32 *stop)
+static void fetch_sun(uint32_t *starts, uint32_t *lens, uint32_t *start, uint32_t *stop)
 {
 	int i, continuous = 1;
 
@@ -328,7 +334,7 @@
 
 void verify_sun(void)
 {
-    __u32 starts[SUN_NUM_PARTITIONS], lens[SUN_NUM_PARTITIONS], start, stop;
+    uint32_t starts[SUN_NUM_PARTITIONS], lens[SUN_NUM_PARTITIONS], start, stop;
     int i,j,k,starto,endo;
     int array[SUN_NUM_PARTITIONS];
 
@@ -394,10 +400,10 @@
 
 void add_sun_partition(int n, int sys)
 {
-	__u32 starts[SUN_NUM_PARTITIONS], lens[SUN_NUM_PARTITIONS];
+	uint32_t starts[SUN_NUM_PARTITIONS], lens[SUN_NUM_PARTITIONS];
 	struct sun_partition *part = &sunlabel->partitions[n];
 	struct sun_tag_flag *tag = &sunlabel->part_tags[n];
-	__u32 start, stop, stop2;
+	uint32_t start, stop, stop2;
 	int whole_disk = 0;
 		
 	char mesg[256];
@@ -530,7 +536,7 @@
 	part->num_sectors = 0;
 }
 
-int sun_change_sysid(int i, __u16 sys)
+int sun_change_sysid(int i, uint16_t sys)
 {
 	struct sun_partition *part = &sunlabel->partitions[i];
 	struct sun_tag_flag *tag = &sunlabel->part_tags[i];
@@ -597,8 +603,8 @@
 		struct sun_tag_flag *tag = &sunlabel->part_tags[i];
 
 		if (part->num_sectors) {
-			__u32 start = SSWAP32(part->start_cylinder) * heads * sectors;
-			__u32 len = SSWAP32(part->num_sectors);
+			uint32_t start = SSWAP32(part->start_cylinder) * heads * sectors;
+			uint32_t len = SSWAP32(part->num_sectors);
 			printf(
 			    "%s %c%c %9ld %9ld %9ld%c  %2x  %s\n",
 /* device */		  partname(disk_device, i+1, w),
--- util-linux-2.13~rc3/fdisk/fdisksunlabel.h	2007-07-16 21:15:33.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/fdisksunlabel.h	2007-08-10 16:32:11.980000000 +0000
@@ -1,15 +1,15 @@
 #ifndef FDISK_SUN_LABEL_H
 #define FDISK_SUN_LABEL_H
 
-#include <linux/types.h>   /* for __u16, __u32 */
+#include <stdint.h>   /* for uint16_t, uint32_t */
 
 struct sun_partition {
-	__u32	start_cylinder;
-	__u32	num_sectors;
+	uint32_t	start_cylinder;
+	uint32_t	num_sectors;
 };
 
 struct sun_tag_flag {
-	__u16	tag;
+	uint16_t	tag;
 #define SUN_TAG_UNASSIGNED	0x00	/* Unassigned partition */
 #define SUN_TAG_BOOT		0x01	/* Boot partition	*/
 #define SUN_TAG_ROOT		0x02	/* Root filesystem	*/
@@ -27,7 +27,7 @@
 #define SUN_TAG_LINUX_LVM	0x8e	/* Linux LVM		*/
 #define SUN_TAG_LINUX_RAID	0xfd	/* LInux RAID		*/
 
-	__u16	flag;
+	uint16_t	flag;
 #define SUN_FLAG_UNMNT		0x01	/* Unmountable partition*/
 #define SUN_FLAG_RONLY		0x10	/* Read only		*/
 };
@@ -43,32 +43,32 @@
 
 struct sun_disk_label {
 	char			label_id[SUN_LABEL_ID_SIZE];
-	__u32			version;
+	uint32_t			version;
 	char			volume_id[SUN_VOLUME_ID_SIZE];
-	__u16			num_partitions;
+	uint16_t			num_partitions;
 	struct sun_tag_flag	part_tags[SUN_NUM_PARTITIONS];
-	__u32			bootinfo[3];
-	__u32			sanity;
-	__u32			resv[10];
-	__u32			part_timestamps[SUN_NUM_PARTITIONS];
-	__u32			write_reinstruct;
-	__u32			read_reinstruct;
-	__u8			pad[148];
-	__u16			rpm;
-	__u16			pcyl;
-	__u16			apc;
-	__u16			resv1;
-	__u16			resv2;
-	__u16			intrlv;
-	__u16			ncyl;
-	__u16			acyl;
-	__u16			nhead;
-	__u16			nsect;
-	__u16			resv3;
-	__u16			resv4;
+	uint32_t			bootinfo[3];
+	uint32_t			sanity;
+	uint32_t			resv[10];
+	uint32_t			part_timestamps[SUN_NUM_PARTITIONS];
+	uint32_t			write_reinstruct;
+	uint32_t			read_reinstruct;
+	uint8_t			pad[148];
+	uint16_t			rpm;
+	uint16_t			pcyl;
+	uint16_t			apc;
+	uint16_t			resv1;
+	uint16_t			resv2;
+	uint16_t			intrlv;
+	uint16_t			ncyl;
+	uint16_t			acyl;
+	uint16_t			nhead;
+	uint16_t			nsect;
+	uint16_t			resv3;
+	uint16_t			resv4;
 	struct sun_partition	partitions[SUN_NUM_PARTITIONS];
-	__u16			magic;
-	__u16			cksum;
+	uint16_t			magic;
+	uint16_t			cksum;
 };
 
 #define SUN_LABEL_MAGIC		0xDABE
@@ -82,7 +82,7 @@
 extern void sun_nolabel(void);
 extern void create_sunlabel(void);
 extern void sun_delete_partition(int i);
-extern int sun_change_sysid(int i, __u16 sys);
+extern int sun_change_sysid(int i, uint16_t sys);
 extern void sun_list_table(int xtra);
 extern void verify_sun(void);
 extern void add_sun_partition(int n, int sys);
@@ -93,7 +93,7 @@
 extern void sun_set_ilfact(void);
 extern void sun_set_rspeed(void);
 extern void sun_set_pcylcount(void);
-extern void toggle_sunflags(int i, __u16 mask);
+extern void toggle_sunflags(int i, uint16_t mask);
 extern int sun_get_sysid(int i);
 
 #endif /* FDISK_SUN_LABEL_H */
--- util-linux-2.13~rc3/fdisk/sfdisk.c	2007-07-10 23:18:26.000000000 +0000
+++ util-linux-2.13~rc3-mine/fdisk/sfdisk.c	2007-08-10 16:41:50.000000000 +0000
@@ -46,7 +46,6 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <sys/utsname.h>
-#include <linux/unistd.h>	/* _syscall */
 #include "nls.h"
 #include "common.h"
 
--- util-linux-2.13~rc3/login-utils/agetty.c	2007-08-10 17:51:27.000000000 +0000
+++ util-linux-2.13~rc3-mine/login-utils/agetty.c	2007-08-10 18:17:53.000000000 +0000
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <termio.h>
+#include <termios.h>
 #include <signal.h>
 #include <errno.h>
 #include <sys/types.h>
@@ -40,6 +40,8 @@
 #include "pathnames.h"
 #include <sys/param.h>
 #define USE_SYSLOG
+#elif defined(__GNU__)
+#define _PATH_LOGIN "/bin/login"
 #endif
 
  /* If USE_SYSLOG is undefined all diagnostics go directly to /dev/console. */
@@ -116,6 +118,10 @@
 #define	TCSETAW	TCSETSW
 #endif
 
+#ifdef __GNU__
+#define termio termios
+#endif
+
  /*
   * This program tries to not use the standard-i/o library.  This keeps the
   * executable small on systems that do not have shared libraries (System V
@@ -789,7 +795,11 @@
      * 5 seconds seems to be a good value.
      */
 
+#ifdef __GNU__
+    if (tcgetattr(0, tp) < 0)
+#else
     if (ioctl(0, TCGETA, tp) < 0)
+#endif
 	error("%s: ioctl: %m", tty);
 
     /*
@@ -826,17 +836,26 @@
      * reads will be done in raw mode anyway. Errors will be dealt with
      * lateron.
      */
-#ifdef __linux__
+#if defined(__linux__) || defined(__GNU__)
     /* flush input and output queues, important for modems! */
-    (void) ioctl(0, TCFLSH, TCIOFLUSH);
+    (void) tcflush(0, TCIOFLUSH);
 #endif
 
+#ifdef __GNU__
+    tp->c_cflag = CS8 | HUPCL | CREAD;
+    cfsetispeed(tp, speed);
+    cfsetospeed(tp, speed);
+#else
     tp->c_cflag = CS8 | HUPCL | CREAD | speed;
+#endif
     if (op->flags & F_LOCAL) {
 	tp->c_cflag |= CLOCAL;
     }
 
-    tp->c_iflag = tp->c_lflag = tp->c_oflag = tp->c_line = 0;
+    tp->c_iflag = tp->c_lflag = tp->c_oflag = 0;
+#ifndef __GNU__
+    tp->c_line = 0;
+#endif
     tp->c_cc[VMIN] = 1;
     tp->c_cc[VTIME] = 0;
 
@@ -847,7 +866,11 @@
 	tp->c_cflag |= CRTSCTS;
 #endif
 
+#ifdef __GNU__
+    (void) tcsetattr(0, TCSANOW, tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 
     /* go to blocking input even in local mode */
     fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) & ~O_NONBLOCK);
@@ -891,7 +914,11 @@
     tp->c_iflag |= ISTRIP;			/* enable 8th-bit stripping */
     vmin = tp->c_cc[VMIN];
     tp->c_cc[VMIN] = 0;				/* don't block if queue empty */
+#ifdef __GNU__
+    (void) tcsetattr(0, TCSANOW, tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 
     /*
      * Wait for a while, then read everything the modem has said so far and
@@ -904,8 +931,13 @@
 	for (bp = buf; bp < buf + nread; bp++) {
 	    if (isascii(*bp) && isdigit(*bp)) {
 		if ((speed = bcode(bp))) {
+#ifdef __GNU__
+		    cfsetispeed(tp, speed);
+		    cfsetospeed(tp, speed);
+#else
 		    tp->c_cflag &= ~CBAUD;
 		    tp->c_cflag |= speed;
+#endif
 		}
 		break;
 	    }
@@ -915,7 +947,11 @@
 
     tp->c_iflag = iflag;
     tp->c_cc[VMIN] = vmin;
+#ifdef __GNU__
+    (void) tcsetattr(0, TCSANOW, tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 }
 
 /* do_prompt - show login prompt, optionally preceded by /etc/issue contents */
@@ -938,7 +974,11 @@
     if ((op->flags & F_ISSUE) && (fd = fopen(op->issue, "r"))) {
 	oflag = tp->c_oflag;			/* save current setting */
 	tp->c_oflag |= (ONLCR | OPOST);		/* map NL in output to CR-NL */
+#ifdef __GNU__
+	(void) tcsetattr(0, TCSADRAIN, tp);
+#else
 	(void) ioctl(0, TCSETAW, tp);
+#endif
 
 
 	while ((c = getc(fd)) != EOF)
@@ -971,7 +1011,7 @@
 
 		  case 'o':
 		   {
-		     char domainname[HOST_NAME_MAX+1];
+		     char domainname[HOSTNAME_LENGTH+1];
 #ifdef HAVE_GETDOMAINNAME
 		     if (getdomainname(domainname, sizeof(domainname)))
 #endif
@@ -984,7 +1024,7 @@
 		  case 'O':
 		   {
 			char *dom = "unknown_domain";
-			char host[HOST_NAME_MAX + 1];
+			char host[HOSTNAME_LENGTH + 1];
 			struct addrinfo hints, *info = NULL;
 
 			memset(&hints, 0, sizeof(hints));
@@ -1042,7 +1082,11 @@
 			int i;
 
 			for (i = 0; speedtab[i].speed; i++) {
+#ifdef __GNU__
+			    if (speedtab[i].code == cfgetispeed(tp)) {
+#else
 			    if (speedtab[i].code == (tp->c_cflag & CBAUD)) {
+#endif
 				printf("%ld", speedtab[i].speed);
 				break;
 			    }
@@ -1074,12 +1118,16 @@
 	fflush(stdout);
 
 	tp->c_oflag = oflag;			/* restore settings */
+#ifdef __GNU__
+	(void) tcsetattr(0, TCSADRAIN, tp);
+#else
 	(void) ioctl(0, TCSETAW, tp);		/* wait till output is gone */
+#endif
 	(void) fclose(fd);
     }
 #endif
     {
-	char hn[HOST_NAME_MAX+1];
+	char hn[HOSTNAME_LENGTH+1];
 	if (gethostname(hn, sizeof(hn)) == 0)
 	    write(1, hn, strlen(hn));
     }
@@ -1095,9 +1143,15 @@
     static int baud_index = FIRST_SPEED;/* current speed index */
 
     baud_index = (baud_index + 1) % op->numspeed;
+#ifdef __GNU__
+    cfsetispeed(tp, op->speeds[baud_index]);
+    cfsetospeed(tp, op->speeds[baud_index]);
+    (void) tcsetattr(0, TCSANOW, tp);
+#else
     tp->c_cflag &= ~CBAUD;
     tp->c_cflag |= op->speeds[baud_index];
     (void) ioctl(0, TCSETA, tp);
+#endif
 }
 
 /* get_logname - get user name, establish parity, speed, erase, kill, eol */
@@ -1127,7 +1181,7 @@
     /* Flush pending input (esp. after parsing or switching the baud rate). */
 
     (void) sleep(1);
-    (void) ioctl(0, TCFLSH, TCIFLUSH);
+    (void) tcflush(0, TCIFLUSH);
 
     /* Prompt for and read a login name. */
 
@@ -1232,7 +1286,7 @@
     tp->c_cc[VEOL] = DEF_EOL;
 #ifdef __linux__
     tp->c_cc[VSWTC] = DEF_SWITCH;		/* default switch character */
-#else
+#elif defined(VSWTCH)
     tp->c_cc[VSWTCH] = DEF_SWITCH;		/* default switch character */
 #endif
 
@@ -1266,7 +1320,9 @@
 
     if (cp->capslock) {
 	tp->c_iflag |= IUCLC;
+#ifdef XCASE
 	tp->c_lflag |= XCASE;
+#endif
 	tp->c_oflag |= OLCUC;
     }
     /* Optionally enable hardware flow control */
@@ -1278,7 +1334,11 @@
 
     /* Finally, make the new settings effective */
 
+#ifdef __GNU__
+    if (tcsetattr(0, TCSANOW, tp) < 0)
+#else
     if (ioctl(0, TCSETA, tp) < 0)
+#endif
 	error("%s: ioctl: TCSETA: %m", op->tty);
 }
 
--- util-linux-2.13~rc3/login-utils/checktty.c	2007-04-25 12:43:38.000000000 +0000
+++ util-linux-2.13~rc3-mine/login-utils/checktty.c	2007-08-10 16:44:56.800000000 +0000
@@ -25,7 +25,9 @@
 #include "nls.h"
 
 #include <sys/sysmacros.h>
+#ifdef __linux__
 #include <linux/major.h>
+#endif
 
 #include "pathnames.h"
 #include "login.h"
@@ -118,6 +120,7 @@
 static int
 isapty(const char *tty)
 {
+#ifdef __linux__
     char devname[100];
     struct stat stb;
 
@@ -147,6 +150,7 @@
 #endif
 
     }
+#endif
     return 0;
 }
 
--- util-linux-2.13~rc3/login-utils/wall.c	2007-07-16 13:21:29.960000000 +0000
+++ util-linux-2.13~rc3-mine/login-utils/wall.c	2007-08-10 17:25:03.000000000 +0000
@@ -63,6 +63,10 @@
 #include "pathnames.h"
 #include "carefulputc.h"
 
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 64
+#endif
+
 void	makemsg __P((char *));
 
 #define	IGNOREUSER	"sleeper"
--- util-linux-2.13~rc3/Makefile.am	2007-07-26 13:20:24.280000000 +0000
+++ util-linux-2.13~rc3-mine/Makefile.am	2007-08-10 18:04:05.000000000 +0000
@@ -5,17 +5,21 @@
 	disk-utils \
 	fdisk \
 	getopt \
-	hwclock \
 	login-utils \
 	misc-utils \
-	mount \
-        partx \
 	po \
 	schedutils \
 	sys-utils \
 	text-utils \
 	tests
 
+if LINUX
+SUBDIRS += \
+	hwclock \
+	mount \
+        partx
+endif
+
 ACLOCAL_AMFLAGS = -I m4
 
 EXTRA_DIST = \
--- util-linux-2.13~rc3/misc-utils/Makefile.am	2007-07-16 10:30:38.000000023 +0000
+++ util-linux-2.13~rc3-mine/misc-utils/Makefile.am	2007-08-10 18:04:26.000000000 +0000
@@ -34,8 +34,10 @@
 endif
 
 if HAVE_NCURSES
+if LINUX
 usrbinexec_PROGRAMS += setterm
 man_MANS += setterm.1
+endif
 if HAVE_TINFO
 setterm_LDADD = -ltinfo
 else
--- util-linux-2.13~rc3/misc-utils/namei.c	2007-04-25 12:43:38.000000000 +0000
+++ util-linux-2.13~rc3-mine/misc-utils/namei.c	2007-08-10 17:26:42.000000000 +0000
@@ -59,6 +59,10 @@
 #include <sys/param.h>
 #include "nls.h"
 
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 4096
+#endif
+
 #define ERR	strerror(errno),errno
 
 int symcount;
--- util-linux-2.13~rc3/misc-utils/script.c	2007-08-06 22:10:01.000000000 +0000
+++ util-linux-2.13~rc3-mine/misc-utils/script.c	2007-08-10 17:27:38.000000000 +0000
@@ -53,6 +53,8 @@
 #include <sys/file.h>
 #include <sys/signal.h>
 #include <errno.h>
+#include <getopt.h>
+#include <string.h>
 #include "nls.h"
 
 #ifdef __linux__
--- util-linux-2.13~rc3/schedutils/Makefile.am	2007-04-25 12:43:38.000000000 +0000
+++ util-linux-2.13~rc3-mine/schedutils/Makefile.am	2007-08-10 18:05:12.000000000 +0000
@@ -2,7 +2,11 @@
 
 if BUILD_SCHEDUTILS
 
-usrbinexec_PROGRAMS = chrt ionice taskset
-man_MANS = chrt.1 ionice.1 taskset.1
+usrbinexec_PROGRAMS = chrt
+man_MANS = chrt.1
+if LINUX
+usrbinexec_PROGRAMS += ionice taskset
+man_MANS += ionice.1 taskset.1
+endif
 
 endif
--- util-linux-2.13~rc3/sys-utils/Makefile.am	2007-07-25 17:03:26.000000000 +0000
+++ util-linux-2.13~rc3-mine/sys-utils/Makefile.am	2007-08-10 18:07:09.000000000 +0000
@@ -1,14 +1,25 @@
 include $(top_srcdir)/config/include-Makefile.am
 
-bin_PROGRAMS = dmesg
+bin_PROGRAMS =
+if LINUX
+bin_PROGRAMS += dmesg
+endif
 
-usrbinexec_PROGRAMS = cytune flock ipcrm ipcs renice setsid setarch
+usrbinexec_PROGRAMS = flock ipcrm ipcs renice setsid 
+if LINUX
+usrbinexec_PROGRAMS += cytune setarch
+endif
 
 cytune_SOURCES = cytune.c cyclades.h
 
+if LINUX
 sbin_PROGRAMS = ctrlaltdel
+endif
 
-usrsbinexec_PROGRAMS = readprofile tunelp rtcwake
+usrsbinexec_PROGRAMS = readprofile 
+if LINUX
+usrsbinexec_PROGRAMS += tunelp rtcwake
+endif
 
 tunelp_SOURCES = tunelp.c lp.h
 
diff -ur util-linux-2.13~rc3/sys-utils/rdev.c util-linux-2.13~rc3-mine/sys-utils/rdev.c
--- util-linux-2.13~rc3/sys-utils/rdev.c	2007-04-25 12:43:38.000000000 +0000
+++ util-linux-2.13~rc3-mine/sys-utils/rdev.c	2007-08-10 17:44:39.160000000 +0000
@@ -94,6 +94,10 @@
 
 #define DEFAULT_OFFSET 508
 
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
 
 static void
 die(char *msg) {
--- util-linux-2.13~rc3/text-utils/more.c	2007-06-29 10:19:34.000000000 +0000
+++ util-linux-2.13~rc3-mine/text-utils/more.c	2007-08-10 17:46:17.000000023 +0000
@@ -1558,7 +1558,7 @@
     }
     if (feof (file)) {
 	if (!no_intty) {
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__GNU__)
 				/* No longer in libc 4.5.8. . . */
 	    file->_flags &= ~STDIO_S_EOF_SEEN; /* why doesn't fseek do this ??!!??! */
 #endif
@@ -1802,7 +1802,11 @@
     no_intty = tcgetattr(fileno(stdin), &otty);
     tcgetattr(fileno(stderr), &otty);
     savetty0 = otty;
+#ifdef __GNU__
+    slow_tty = cfgetispeed(&otty) < B1200;
+#else
     slow_tty = (otty.c_cflag & CBAUD) < B1200;
+#endif
     hardtabs = (otty.c_oflag & TABDLY) != XTABS;
     if (!no_tty) {
 	otty.c_lflag &= ~(ICANON|ECHO);

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux