]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: optimize addition of already present matches
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 29 Apr 2020 12:33:51 +0000 (14:33 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 May 2020 15:01:33 +0000 (17:01 +0200)
Our hashmap and set helpers return a different code whenever an entry
already exists, so let's use this to avoid unsetting scan_uptodate when
not necessary.

Thus, the return convention for
sd_device_enumerator_add_match_subsystem,
sd_device_enumerator_add_match_sysattr,
sd_device_enumerator_add_match_property,
sd_device_enumerator_add_match_sysname,
sd_device_enumerator_add_match_tag,
device_enumerator_add_match_parent_incremental,
sd_device_enumerator_add_match_parent,
sd_device_enumerator_allow_uninitialized,
device_enumerator_add_match_is_initialized
is that "1" is returned if action was taken, and "0" on noop.

src/libsystemd/sd-device/device-enumerator.c

index f9b14f2ffb407ddfb8f0b82c3b5987b75fccf9b3..94352e129cc07d6254054474d03daaedf6f699ee 100644 (file)
@@ -98,12 +98,12 @@ _public_ int sd_device_enumerator_add_match_subsystem(sd_device_enumerator *enum
                 set = &enumerator->nomatch_subsystem;
 
         r = set_put_strdup(set, subsystem);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumerator, const char *sysattr, const char *value, int match) {
@@ -119,12 +119,12 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer
                 hashmap = &enumerator->nomatch_sysattr;
 
         r = hashmap_put_strdup(hashmap, sysattr, value);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enumerator, const char *property, const char *value) {
@@ -134,12 +134,12 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume
         assert_return(property, -EINVAL);
 
         r = hashmap_put_strdup(&enumerator->match_property, property, value);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 _public_ int sd_device_enumerator_add_match_sysname(sd_device_enumerator *enumerator, const char *sysname) {
@@ -149,12 +149,12 @@ _public_ int sd_device_enumerator_add_match_sysname(sd_device_enumerator *enumer
         assert_return(sysname, -EINVAL);
 
         r = set_put_strdup(&enumerator->match_sysname, sysname);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 _public_ int sd_device_enumerator_add_match_tag(sd_device_enumerator *enumerator, const char *tag) {
@@ -164,12 +164,12 @@ _public_ int sd_device_enumerator_add_match_tag(sd_device_enumerator *enumerator
         assert_return(tag, -EINVAL);
 
         r = set_put_strdup(&enumerator->match_tag, tag);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 static void device_enumerator_clear_match_parent(sd_device_enumerator *enumerator) {
@@ -191,12 +191,12 @@ int device_enumerator_add_match_parent_incremental(sd_device_enumerator *enumera
                 return r;
 
         r = set_put_strdup(&enumerator->match_parent, path);
-        if (r < 0)
+        if (r <= 0)
                 return r;
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 _public_ int sd_device_enumerator_add_match_parent(sd_device_enumerator *enumerator, sd_device *parent) {
@@ -211,7 +211,7 @@ _public_ int sd_device_enumerator_allow_uninitialized(sd_device_enumerator *enum
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 int device_enumerator_add_match_is_initialized(sd_device_enumerator *enumerator) {
@@ -221,7 +221,7 @@ int device_enumerator_add_match_is_initialized(sd_device_enumerator *enumerator)
 
         enumerator->scan_uptodate = false;
 
-        return 0;
+        return 1;
 }
 
 static int device_compare(sd_device * const *_a, sd_device * const *_b) {