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