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);