guestfs.h: Include <stdint.h>.
[libguestfs.git] / daemon / guestfsd.c
index 520a4a4..5265ab5 100644 (file)
@@ -928,6 +928,28 @@ split_lines (char *str)
   return lines;
 }
 
+/* Skip leading and trailing whitespace, updating the original string
+ * in-place.
+ */
+void
+trim (char *str)
+{
+  size_t len = strlen (str);
+
+  while (len > 0 && c_isspace (str[len-1])) {
+    str[len-1] = '\0';
+    len--;
+  }
+
+  const char *p = str;
+  while (*p && c_isspace (*p)) {
+    p++;
+    len--;
+  }
+
+  memmove (str, p, len+1);
+}
+
 /* printf helper function so we can use %Q ("quoted") and %R to print
  * shell-quoted strings.  See HACKING file for more details.
  */
@@ -1038,31 +1060,19 @@ device_name_translation (char *device, const char *func)
  * involved.  eg. You can create or remove some device, but the /dev
  * device node won't appear until some time later.  This means that
  * you get an error if you run one command followed by another.
+ *
  * Use 'udevadm settle' after certain commands, but don't be too
  * fussed if it fails.
+ *
+ * 'udevsettle' was the old name for this command (RHEL 5).  This was
+ * deprecated in favour of 'udevadm settle'.  The old 'udevsettle'
+ * command was left as a symlink.  Then in Fedora 13 the old symlink
+ * remained but it stopped working (RHBZ#548121), so we have to be
+ * careful not to assume that we can use 'udevsettle' if it exists.
  */
 void
 udev_settle (void)
 {
-  static int which_prog = 0;
-
-  if (which_prog == 0) {
-    if (access ("/sbin/udevsettle", X_OK) == 0)
-      which_prog = 2;
-    else if (access ("/sbin/udevadm", X_OK) == 0)
-      which_prog = 1;
-    else
-      which_prog = 3;
-  }
-
-  switch (which_prog) {
-  case 1:
-    command (NULL, NULL, "/sbin/udevadm", "settle", NULL);
-    break;
-  case 2:
-    command (NULL, NULL, "/sbin/udevsettle", NULL);
-    break;
-  default:
-    ;
-  }
+  (void) command (NULL, NULL, "/sbin/udevadm", "settle", NULL);
+  (void) command (NULL, NULL, "/sbin/udevsettle", NULL);
 }