chiark / gitweb /
udev: add btrfs support
[elogind.git] / src / udev / udev-builtin.c
index 6509f5881d4d513e4f1c696b99bb506c5b48ea48..b632edaae15eabab1b49fa74b7fdd523935da39b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2009 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2007-2012 Kay Sievers <kay.sievers@vrfy.org>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 #include "udev.h"
 
+static bool initialized;
+
 static const struct udev_builtin *builtins[] = {
         [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
+        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
         [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware,
         [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
         [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
@@ -44,6 +47,9 @@ int udev_builtin_init(struct udev *udev)
         unsigned int i;
         int err = 0;
 
+        if (initialized)
+                return 0;
+
         for (i = 0; i < ELEMENTSOF(builtins); i++) {
                 if (builtins[i]->init) {
                         err = builtins[i]->init(udev);
@@ -51,6 +57,8 @@ int udev_builtin_init(struct udev *udev)
                                 break;
                 }
         }
+
+        initialized = true;
         return err;
 }
 
@@ -58,9 +66,14 @@ void udev_builtin_exit(struct udev *udev)
 {
         unsigned int i;
 
+        if (!initialized)
+                return;
+
         for (i = 0; i < ELEMENTSOF(builtins); i++)
                 if (builtins[i]->exit)
                         builtins[i]->exit(udev);
+
+        initialized = false;
 }
 
 bool udev_builtin_validate(struct udev *udev)
@@ -130,7 +143,6 @@ int udev_builtin_add_property(struct udev_device *dev, bool test, const char *ke
         if (key[0] != '.')
                 udev_list_entry_set_num(entry, true);
 
-        log_debug("%s=%s\n", key, val);
         if (test)
                 printf("%s=%s\n", key, val);
         return 0;