[Libguestfs] [PATCH] Remove multiple hacks that only apply to RHEL 5.

Richard W.M. Jones rjones at redhat.com
Mon Oct 5 12:50:06 UTC 2015


We don't support RHEL 5 upstream (see the 'oldlinux' branch for a
version that works with RHEL 5).  Therefore remove a bunch of hacks
that were only needed on RHEL 5.
---
 appliance/packagelist.in        |   2 -
 common-rules.mk                 |   8 -
 daemon/parted.c                 | 455 +++++++++++-----------------------------
 daemon/swap.c                   |  18 +-
 generator/actions.ml            |   4 +-
 generator/ruby.ml               |  14 --
 run.in                          |  13 +-
 src/inspect-apps.c              |  13 --
 tests/regressions/rhbz975797.sh |   5 +-
 tests/xml/fake-libvirt-xml.c    |   9 -
 10 files changed, 129 insertions(+), 412 deletions(-)

diff --git a/appliance/packagelist.in b/appliance/packagelist.in
index fee6fa0..aa5e07e 100644
--- a/appliance/packagelist.in
+++ b/appliance/packagelist.in
@@ -28,8 +28,6 @@ ifelse(REDHAT,1,
   cryptsetup
   cryptsetup-luks      dnl old name used before Fedora 17
   dhclient
-  dnl e4fsprogs only exists on RHEL 5, will be ignored everywhere else.
-  e4fsprogs
   genisoimage
   gfs-utils
   gfs2-utils
diff --git a/common-rules.mk b/common-rules.mk
index 312107e..e6b40d1 100644
--- a/common-rules.mk
+++ b/common-rules.mk
@@ -19,11 +19,3 @@
 # cf. 'subdir-rules.mk'
 
 -include $(top_builddir)/localenv
-
-# Old RHEL 5 autoconf defines these, but RHEL 5 automake doesn't
-# create variables for them.  So define them here if they're not
-# defined already.
-builddir     ?= @builddir@
-abs_builddir ?= @abs_builddir@
-srcdir       ?= @srcdir@
-abs_srcdir   ?= @abs_srcdir@
diff --git a/daemon/parted.c b/daemon/parted.c
index fab3423..df6b7e7 100644
--- a/daemon/parted.c
+++ b/daemon/parted.c
@@ -20,6 +20,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
 #include <stdint.h>
 #include <inttypes.h>
 #include <string.h>
@@ -33,13 +34,6 @@ GUESTFSD_EXT_CMD(str_parted, parted);
 GUESTFSD_EXT_CMD(str_sfdisk, sfdisk);
 GUESTFSD_EXT_CMD(str_sgdisk, sgdisk);
 
-enum parted_has_m_opt {
-  PARTED_INVALID = -1,
-  /* parted do not support -m option */
-  PARTED_OPT_NO_M = 0,
-  PARTED_OPT_HAS_M = 1,
-};
-
 /* Notes:
  *
  * Parted 1.9 sends error messages to stdout, hence use of the
@@ -319,43 +313,14 @@ get_table_field (const char *line, int n)
   return q;
 }
 
-/* RHEL 5 parted doesn't have the -m (machine readable) option so we
- * must do a lot more work to parse the output in
- * print_partition_table below.  Test for this option the first time
- * this function is called.
- */
-static enum parted_has_m_opt
-test_parted_m_opt (void)
-{
-  static enum parted_has_m_opt result = PARTED_INVALID;
-
-  if (result >= 0)
-    return result;
-
-  CLEANUP_FREE char *err = NULL;
-  int r = commandr (NULL, &err, str_parted, "-s", "-m", "/dev/null", NULL);
-  if (r == -1) {
-    /* Test failed, eg. missing or completely unusable parted binary. */
-    reply_with_error ("could not run 'parted' command");
-    return -1;
-  }
-
-  if (err && strstr (err, "invalid option -- m"))
-    result = PARTED_OPT_NO_M;
-  else
-    result = PARTED_OPT_HAS_M;
-  return result;
-}
-
 static char *
-print_partition_table (const char *device,
-                       enum parted_has_m_opt parted_has_m_opt)
+print_partition_table (const char *device, bool add_m_option)
 {
   char *out;
   CLEANUP_FREE char *err = NULL;
   int r;
 
-  if (PARTED_OPT_HAS_M == parted_has_m_opt)
+  if (add_m_option)
     r = command (&out, &err, str_parted, "-m", "-s", "--", device,
                  "unit", "b",
                  "print", NULL);
@@ -364,15 +329,13 @@ print_partition_table (const char *device,
                  "unit", "b",
                  "print", NULL);
   if (r == -1) {
-    /* Hack for parted 1.x which sends errors to stdout. */
-    const char *msg = *err ? err : out;
     int errcode = 0;
 
     /* Translate "unrecognised disk label" into an errno code. */
-    if (msg && strstr (msg, "unrecognised disk label") != NULL)
+    if (err && strstr (err, "unrecognised disk label") != NULL)
       errcode = EINVAL;
 
-    reply_with_error_errno (errcode, "parted print: %s: %s", device, msg);
+    reply_with_error_errno (errcode, "parted print: %s: %s", device, err);
     free (out);
     return NULL;
   }
@@ -383,93 +346,46 @@ print_partition_table (const char *device,
 char *
 do_part_get_parttype (const char *device)
 {
-  enum parted_has_m_opt parted_has_m_opt = test_parted_m_opt ();
-  if (parted_has_m_opt == PARTED_INVALID)
-    return NULL;
-
-  CLEANUP_FREE char *out = print_partition_table (device, parted_has_m_opt);
+  CLEANUP_FREE char *out = print_partition_table (device, true);
   if (!out)
     return NULL;
 
-  if (PARTED_OPT_HAS_M == parted_has_m_opt) {
-    /* New-style parsing using the "machine-readable" format from
-     * 'parted -m'.
-     */
-    CLEANUP_FREE_STRING_LIST char **lines = split_lines (out);
-
-    if (!lines)
-      return NULL;
-
-    if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
-      reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
-                        lines[0] ? lines[0] : "(signature was null)");
-      return NULL;
-    }
-
-    if (lines[1] == NULL) {
-      reply_with_error ("parted didn't return a line describing the device");
-      return NULL;
-    }
-
-    /* lines[1] is something like:
-     * "/dev/sda:1953525168s:scsi:512:512:msdos:ATA Hitachi HDT72101;"
-     */
-    char *r = get_table_field (lines[1], 5);
-    if (r == NULL) {
-      return NULL;
-    }
-
-    /* If "loop" return an error (RHBZ#634246). */
-    if (STREQ (r, "loop")) {
-      free (r);
-      reply_with_error ("not a partitioned device");
-      return NULL;
-    }
-
-    return r;
+  CLEANUP_FREE_STRING_LIST char **lines = split_lines (out);
+  if (!lines)
+    return NULL;
+
+  if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
+    reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
+                      lines[0] ? lines[0] : "(signature was null)");
+    return NULL;
   }
-  else {
-    /* Old-style.  Look for "\nPartition Table: <str>\n". */
-    char *p = strstr (out, "\nPartition Table: ");
-    if (!p) {
-      reply_with_error ("parted didn't return Partition Table line");
-      return NULL;
-    }
 
-    p += 18;
-    char *q = strchr (p, '\n');
-    if (!q) {
-      reply_with_error ("parted Partition Table has no end of line char");
-      return NULL;
-    }
-
-    *q = '\0';
-
-    p = strdup (p);
-    if (!p) {
-      reply_with_perror ("strdup");
-      return NULL;
-    }
-
-    /* If "loop" return an error (RHBZ#634246). */
-    if (STREQ (p, "loop")) {
-      free (p);
-      reply_with_error ("not a partitioned device");
-      return NULL;
-    }
+  if (lines[1] == NULL) {
+    reply_with_error ("parted didn't return a line describing the device");
+    return NULL;
+  }
 
-    return p;                   /* caller frees */
+  /* lines[1] is something like:
+   * "/dev/sda:1953525168s:scsi:512:512:msdos:ATA Hitachi HDT72101;"
+   */
+  char *r = get_table_field (lines[1], 5);
+  if (r == NULL)
+    return NULL;
+
+  /* If "loop" return an error (RHBZ#634246). */
+  if (STREQ (r, "loop")) {
+    free (r);
+    reply_with_error ("not a partitioned device");
+    return NULL;
   }
+
+  return r;
 }
 
 guestfs_int_partition_list *
 do_part_list (const char *device)
 {
-  enum parted_has_m_opt parted_has_m_opt = test_parted_m_opt ();
-  if (parted_has_m_opt == PARTED_INVALID)
-    return NULL;
-
-  CLEANUP_FREE char *out = print_partition_table (device, parted_has_m_opt);
+  CLEANUP_FREE char *out = print_partition_table (device, true);
   if (!out)
     return NULL;
 
@@ -480,97 +396,36 @@ do_part_list (const char *device)
 
   guestfs_int_partition_list *r;
 
-  if (PARTED_OPT_HAS_M == parted_has_m_opt) {
-    /* New-style parsing using the "machine-readable" format from
-     * 'parted -m'.
-     *
-     * lines[0] is "BYT;", lines[1] is the device line which we ignore,
-     * lines[2..] are the partitions themselves.  Count how many.
-     */
-    size_t nr_rows = 0, row;
-    for (row = 2; lines[row] != NULL; ++row)
-      ++nr_rows;
-
-    r = malloc (sizeof *r);
-    if (r == NULL) {
-      reply_with_perror ("malloc");
-      return NULL;
-    }
-    r->guestfs_int_partition_list_len = nr_rows;
-    r->guestfs_int_partition_list_val =
-      malloc (nr_rows * sizeof (guestfs_int_partition));
-    if (r->guestfs_int_partition_list_val == NULL) {
-      reply_with_perror ("malloc");
-      goto error2;
-    }
-
-    /* Now parse the lines. */
-    size_t i;
-    for (i = 0, row = 2; lines[row] != NULL; ++i, ++row) {
-      if (sscanf (lines[row], "%d:%" SCNi64 "B:%" SCNi64 "B:%" SCNi64 "B",
-                  &r->guestfs_int_partition_list_val[i].part_num,
-                  &r->guestfs_int_partition_list_val[i].part_start,
-                  &r->guestfs_int_partition_list_val[i].part_end,
-                  &r->guestfs_int_partition_list_val[i].part_size) != 4) {
-        reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
-        goto error3;
-      }
-    }
+  /* lines[0] is "BYT;", lines[1] is the device line which we ignore,
+   * lines[2..] are the partitions themselves.  Count how many.
+   */
+  size_t nr_rows = 0, row;
+  for (row = 2; lines[row] != NULL; ++row)
+    ++nr_rows;
+
+  r = malloc (sizeof *r);
+  if (r == NULL) {
+    reply_with_perror ("malloc");
+    return NULL;
+  }
+  r->guestfs_int_partition_list_len = nr_rows;
+  r->guestfs_int_partition_list_val =
+    malloc (nr_rows * sizeof (guestfs_int_partition));
+  if (r->guestfs_int_partition_list_val == NULL) {
+    reply_with_perror ("malloc");
+    goto error2;
   }
-  else {
-    /* Old-style.  Start at the line following "^Number", up to the
-     * next blank line.
-     */
-    size_t start = 0, end = 0, row;
-
-    for (row = 0; lines[row] != NULL; ++row)
-      if (STRPREFIX (lines[row], "Number")) {
-        start = row+1;
-        break;
-      }
-
-    if (start == 0) {
-      reply_with_error ("parted output has no \"Number\" line");
-      return NULL;
-    }
-
-    for (row = start; lines[row] != NULL; ++row)
-      if (STREQ (lines[row], "")) {
-        end = row;
-        break;
-      }
-
-    if (end == 0) {
-      reply_with_error ("parted output has no blank after end of table");
-      return NULL;
-    }
-
-    size_t nr_rows = end - start;
-
-    r = malloc (sizeof *r);
-    if (r == NULL) {
-      reply_with_perror ("malloc");
-      return NULL;
-    }
-    r->guestfs_int_partition_list_len = nr_rows;
-    r->guestfs_int_partition_list_val =
-      malloc (nr_rows * sizeof (guestfs_int_partition));
-    if (r->guestfs_int_partition_list_val == NULL) {
-      reply_with_perror ("malloc");
-      goto error2;
-    }
 
-    /* Now parse the lines. */
-    size_t i;
-    for (i = 0, row = start; row < end; ++i, ++row) {
-      if (sscanf (lines[row], " %d %" SCNi64 "B %" SCNi64 "B %" SCNi64 "B",
-                  &r->guestfs_int_partition_list_val[i].part_num,
-                  &r->guestfs_int_partition_list_val[i].part_start,
-                  &r->guestfs_int_partition_list_val[i].part_end,
-                  &r->guestfs_int_partition_list_val[i].part_size) != 4) {
-        reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
-        goto error3;
-      }
+  /* Now parse the lines. */
+  size_t i;
+  for (i = 0, row = 2; lines[row] != NULL; ++i, ++row) {
+    if (sscanf (lines[row], "%d:%" SCNi64 "B:%" SCNi64 "B:%" SCNi64 "B",
+                &r->guestfs_int_partition_list_val[i].part_num,
+                &r->guestfs_int_partition_list_val[i].part_start,
+                &r->guestfs_int_partition_list_val[i].part_end,
+                &r->guestfs_int_partition_list_val[i].part_size) != 4) {
+      reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
+      goto error3;
     }
   }
 
@@ -591,11 +446,7 @@ do_part_get_bootable (const char *device, int partnum)
     return -1;
   }
 
-  enum parted_has_m_opt parted_has_m_opt = test_parted_m_opt ();
-  if (parted_has_m_opt == PARTED_INVALID)
-    return -1;
-
-  CLEANUP_FREE char *out = print_partition_table (device, parted_has_m_opt);
+  CLEANUP_FREE char *out = print_partition_table (device, true);
   if (!out)
     return -1;
 
@@ -604,95 +455,41 @@ do_part_get_bootable (const char *device, int partnum)
   if (!lines)
     return -1;
 
-  if (PARTED_OPT_HAS_M == parted_has_m_opt) {
-    /* New-style parsing using the "machine-readable" format from
-     * 'parted -m'.
-     *
-     * Partitions may not be in any order, so we have to look for
-     * the matching partition number (RHBZ#602997).
-     */
-    if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
-      reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
-                        lines[0] ? lines[0] : "(signature was null)");
-      return -1;
-    }
-
-    if (lines[1] == NULL) {
-      reply_with_error ("parted didn't return a line describing the device");
-      return -1;
-    }
-
-    size_t row;
-    int pnum;
-    for (row = 2; lines[row] != NULL; ++row) {
-      if (sscanf (lines[row], "%d:", &pnum) != 1) {
-        reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
-        return -1;
-      }
-      if (pnum == partnum)
-        break;
-    }
-
-    if (lines[row] == NULL) {
-      reply_with_error ("partition number %d not found", partnum);
-      return -1;
-    }
-
-    CLEANUP_FREE char *boot = get_table_field (lines[row], 6);
-    if (boot == NULL)
-      return -1;
-
-    return strstr (boot, "boot") != NULL;
+  /* Partitions may not be in any order, so we have to look for
+   * the matching partition number (RHBZ#602997).
+   */
+  if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
+    reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
+                      lines[0] ? lines[0] : "(signature was null)");
+    return -1;
   }
-  else {
-    /* Old-style: First look for the line matching "^Number". */
-    size_t start = 0, header, row;
-
-    for (row = 0; lines[row] != NULL; ++row)
-      if (STRPREFIX (lines[row], "Number")) {
-        start = row+1;
-        header = row;
-        break;
-      }
 
-    if (start == 0) {
-      reply_with_error ("parted output has no \"Number\" line");
-      return -1;
-    }
+  if (lines[1] == NULL) {
+    reply_with_error ("parted didn't return a line describing the device");
+    return -1;
+  }
 
-    /* Now we have to look at the column number of the "Flags" field.
-     * This is because parted's output has no way to represent a
-     * missing field except as whitespace, so we cannot just count
-     * fields from the left.  eg. The "File system" field is often
-     * missing in the output.
-     */
-    char *p = strstr (lines[header], "Flags");
-    if (!p) {
-      reply_with_error ("parted output has no \"Flags\" field");
+  size_t row;
+  int pnum;
+  for (row = 2; lines[row] != NULL; ++row) {
+    if (sscanf (lines[row], "%d:", &pnum) != 1) {
+      reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
       return -1;
     }
-    size_t col = p - lines[header];
+    if (pnum == partnum)
+      break;
+  }
 
-    /* Partitions may not be in any order, so we have to look for
-     * the matching partition number (RHBZ#602997).
-     */
-    int pnum;
-    for (row = start; lines[row] != NULL; ++row) {
-      if (sscanf (lines[row], " %d", &pnum) != 1) {
-        reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
-        return -1;
-      }
-      if (pnum == partnum)
-        break;
-    }
+  if (lines[row] == NULL) {
+    reply_with_error ("partition number %d not found", partnum);
+    return -1;
+  }
 
-    if (lines[row] == NULL) {
-      reply_with_error ("partition number %d not found", partnum);
-      return -1;
-    }
+  CLEANUP_FREE char *boot = get_table_field (lines[row], 6);
+  if (boot == NULL)
+    return -1;
 
-    return STRPREFIX (&lines[row][col], "boot");
-  }
+  return strstr (boot, "boot") != NULL;
 }
 
 /* Test if sfdisk is recent enough to have --part-type, to be used instead
@@ -979,63 +776,51 @@ do_part_get_name (const char *device, int partnum)
     return NULL;
 
   if (STREQ (parttype, "gpt")) {
-    enum parted_has_m_opt parted_has_m_opt = test_parted_m_opt ();
-    if (parted_has_m_opt == PARTED_INVALID)
-      return NULL;
-
-    CLEANUP_FREE char *out = print_partition_table (device, parted_has_m_opt);
+    CLEANUP_FREE char *out = print_partition_table (device, true);
     if (!out)
       return NULL;
 
-    if (PARTED_OPT_HAS_M == parted_has_m_opt) {
-      /* New-style parsing using the "machine-readable" format from
-       * 'parted -m'.
-       */
-      CLEANUP_FREE_STRING_LIST char **lines = split_lines (out);
+    CLEANUP_FREE_STRING_LIST char **lines = split_lines (out);
 
-      if (!lines)
-        return NULL;
-
-      if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
-        reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
-                          lines[0] ? lines[0] : "(signature was null)");
-        return NULL;
-      }
+    if (!lines)
+      return NULL;
 
-      if (lines[1] == NULL) {
-        reply_with_error ("parted didn't return a line describing the device");
-        return NULL;
-      }
+    if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) {
+      reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s",
+                        lines[0] ? lines[0] : "(signature was null)");
+      return NULL;
+    }
 
-      size_t row;
-      int pnum;
-      for (row = 2; lines[row] != NULL; ++row) {
-        if (sscanf (lines[row], "%d:", &pnum) != 1) {
-          reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
-          return NULL;
-        }
-        if (pnum == partnum)
-          break;
-      }
+    if (lines[1] == NULL) {
+      reply_with_error ("parted didn't return a line describing the device");
+      return NULL;
+    }
 
-      if (lines[row] == NULL) {
-        reply_with_error ("partition number %d not found", partnum);
+    size_t row;
+    int pnum;
+    for (row = 2; lines[row] != NULL; ++row) {
+      if (sscanf (lines[row], "%d:", &pnum) != 1) {
+        reply_with_error ("could not parse row from output of parted print command: %s", lines[row]);
         return NULL;
       }
+      if (pnum == partnum)
+        break;
+    }
 
-      char *name = get_table_field (lines[row], 5);
-      if (name == NULL)
-        reply_with_error ("cannot get the name field from '%s'", lines[row]);
-
-      return name;
+    if (lines[row] == NULL) {
+      reply_with_error ("partition number %d not found", partnum);
+      return NULL;
     }
+
+    char *name = get_table_field (lines[row], 5);
+    if (name == NULL)
+      reply_with_error ("cannot get the name field from '%s'", lines[row]);
+
+    return name;
   } else {
     reply_with_error ("part-get-name can only be used on GUID Partition Tables");
     return NULL;
   }
-
-  reply_with_error ("cannot get the partition name from '%s' layouts", parttype);
-  return NULL;
 }
 
 char *
@@ -1052,7 +837,7 @@ do_part_get_mbr_part_type (const char *device, int partnum)
    * partition type info.
    * Use traditional style.
    */
-  CLEANUP_FREE char *out = print_partition_table (device, PARTED_OPT_NO_M);
+  CLEANUP_FREE char *out = print_partition_table (device, false);
   if (!out)
     return NULL;
 
diff --git a/daemon/swap.c b/daemon/swap.c
index 26fe30d..9d7839e 100644
--- a/daemon/swap.c
+++ b/daemon/swap.c
@@ -38,26 +38,10 @@ GUESTFSD_EXT_CMD(str_swaplabel, swaplabel);
 /* Confirmed this is true for Linux swap partitions from the Linux sources. */
 #define SWAP_LABEL_MAX 16
 
-/* Convenient place to test for the later version of e2fsprogs
- * and util-linux which supports -U parameters to specify UUIDs.
- * (Not supported in RHEL 5).
- */
 int
 optgroup_linuxfsuuid_available (void)
 {
-  CLEANUP_FREE char *err = NULL;
-  int av;
-
-  /* Upstream util-linux have been gradually changing '--help' to go
-   * from stderr to stdout, and changing the return code from 1 to 0.
-   * Thus we need to fold stdout and stderr together, and ignore the
-   * return code.
-   */
-  ignore_value (commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR,
-                          str_mkswap, "--help", NULL));
-
-  av = strstr (err, "-U") != NULL;
-  return av;
+  return 1;
 }
 
 /* Takes optional arguments, consult optargs_bitmask. */
diff --git a/generator/actions.ml b/generator/actions.ml
index 12d5e5a..2f29f7a 100644
--- a/generator/actions.ml
+++ b/generator/actions.ml
@@ -6169,11 +6169,11 @@ the command C<mount -o loop file mountpoint>." };
       InitEmpty, Always, TestRun (
         [["part_disk"; "/dev/sda"; "mbr"];
          ["mkswap"; "/dev/sda1"; "hello"; "NOARG"]]), [];
-      InitEmpty, IfAvailable "linuxfsuuid", TestResultString (
+      InitEmpty, Always, TestResultString (
         [["part_disk"; "/dev/sda"; "mbr"];
          ["mkswap"; "/dev/sda1"; "NOARG"; uuid];
          ["vfs_uuid"; "/dev/sda1"]], uuid), [];
-      InitEmpty, IfAvailable "linuxfsuuid", TestResultString (
+      InitEmpty, Always, TestResultString (
         [["part_disk"; "/dev/sda"; "mbr"];
          ["mkswap"; "/dev/sda1"; "hello"; uuid];
          ["vfs_label"; "/dev/sda1"]], "hello"), []
diff --git a/generator/ruby.ml b/generator/ruby.ml
index 87bb34a..cb187b0 100644
--- a/generator/ruby.ml
+++ b/generator/ruby.ml
@@ -84,20 +84,6 @@ let rec generate_ruby_c () =
 #define RSTRING_PTR(r) (RSTRING((r))->ptr)
 #endif
 
-/* For RHEL 5 (Ruby 1.8.5) */
-#ifndef HAVE_RB_HASH_LOOKUP
-VALUE
-rb_hash_lookup (VALUE hash, VALUE key)
-{
-  volatile VALUE val;
-
-  if (!st_lookup (RHASH(hash)->tbl, key, &val))
-    return Qnil;
-
-  return val;
-}
-#endif /* !HAVE_RB_HASH_LOOKUP */
-
 static VALUE m_guestfs;			/* guestfs module */
 static VALUE c_guestfs;			/* guestfs_h handle */
 static VALUE e_Error;			/* used for all errors */
diff --git a/run.in b/run.in
index 42f8cc8..46dbaf0 100755
--- a/run.in
+++ b/run.in
@@ -238,14 +238,11 @@ fi
 timeout_period=4h
 timeout_kill=30s
 
-# Do we have Padraig's timeout utility (from coreutils)?
-if timeout --help >/dev/null 2>&1; then
-    # Must use the --foreground option (RHBZ#1025269).
-    if timeout --foreground 2 sleep 0 >/dev/null 2>&1; then
-        # Does this version of timeout have the -k option?  (Not on RHEL 6)
-        if timeout -k 10s 10s true >/dev/null 2>&1; then
-            timeout="timeout --foreground -k $timeout_kill $timeout_period"
-        fi
+# Must use the --foreground option (RHBZ#1025269).
+if timeout --foreground 2 sleep 0 >/dev/null 2>&1; then
+    # Does this version of timeout have the -k option?  (Not on RHEL 6)
+    if timeout -k 10s 10s true >/dev/null 2>&1; then
+        timeout="timeout --foreground -k $timeout_kill $timeout_period"
     fi
 fi
 
diff --git a/src/inspect-apps.c b/src/inspect-apps.c
index a7da1dc..b54cf07 100644
--- a/src/inspect-apps.c
+++ b/src/inspect-apps.c
@@ -30,12 +30,6 @@
 #include <sys/endian.h>
 #endif
 
-/* be32toh is usually a macro defined in <endian.h>, but it might be
- * a function in some system so check both, and if neither is defined
- * then define be32toh for RHEL 5.
- */
-#if !defined(HAVE_BE32TOH) && !defined(be32toh)
-
 #if defined __APPLE__ && defined __MACH__
 /* Define/include necessary items on MacOS X */
 #include <machine/endian.h>
@@ -46,13 +40,6 @@
 #define __bswap_32      OSSwapConstInt32
 #endif /* __APPLE__ */
 
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define be32toh(x) __bswap_32 (x)
-#else
-#define be32toh(x) (x)
-#endif
-#endif
-
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
diff --git a/tests/regressions/rhbz975797.sh b/tests/regressions/rhbz975797.sh
index 938c1c5..3c536a9 100755
--- a/tests/regressions/rhbz975797.sh
+++ b/tests/regressions/rhbz975797.sh
@@ -51,10 +51,7 @@ fi
 
 rm -f rhbz975797-*.img
 
-# The timeout utility was not available in RHEL 5.
-if timeout --help >/dev/null 2>&1; then
-    timeout="timeout 600"
-fi
+timeout="timeout 600"
 
 # Use real disk images here since the code for adding /dev/null may
 # take shortcuts.
diff --git a/tests/xml/fake-libvirt-xml.c b/tests/xml/fake-libvirt-xml.c
index b7ab7a8..a34b700 100644
--- a/tests/xml/fake-libvirt-xml.c
+++ b/tests/xml/fake-libvirt-xml.c
@@ -25,15 +25,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-/* We're not using gnulib here so that we don't have to link to gnulib
- * rpl_* libraries (not possible since this is an LD_PRELOAD lib).
- * However that does mean we have to define O_CLOEXEC explicitly for
- * RHEL 5.
- */
-#ifndef O_CLOEXEC
-#define O_CLOEXEC 0
-#endif
-
 /* Old <libvirt.h> had a slightly different definition of
  * virDomainGetXMLDesc (using 'int' for flags instead of 'unsigned
  * int').  To avoid an error trying to redefine it with a different
-- 
2.5.0




More information about the Libguestfs mailing list