cfg: Add new function cfg_is_dirty().
authorBen Pfaff <blp@nicira.com>
Wed, 20 May 2009 21:32:42 +0000 (14:32 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 21 May 2009 16:42:53 +0000 (09:42 -0700)
lib/cfg.c
lib/cfg.h
utilities/ovs-cfg-mod.c

index 67545f37a1c69e234c149d48f0ff379a6d81dec9..a6595a58153537c98afc3fbd02493e445c35d7dc 100644 (file)
--- a/lib/cfg.c
+++ b/lib/cfg.c
@@ -254,6 +254,8 @@ cfg_read(void)
     }
     svec_destroy(&old_cfg);
 
+    dirty = false;
+
     return 0;
 }
 
@@ -392,6 +394,14 @@ cfg_write_data(uint8_t *data, size_t len)
     return retval;
 }
 
+/* Returns true if the configuration has changed since the last time it was
+ * read or written. */
+bool
+cfg_is_dirty(void)
+{
+    return dirty;
+}
+
 void
 cfg_buf_put(struct ofpbuf *buffer)
 {
index 1216e062d56e5c39e76b163a1f99dfc0f847f4f0..ebd937843a4d8db868e69304846aa77bd6dfaab8 100644 (file)
--- a/lib/cfg.h
+++ b/lib/cfg.h
@@ -43,6 +43,7 @@ int cfg_lock(uint8_t *cookie, int timeout);
 void cfg_unlock(void);
 int cfg_write(void);
 int cfg_write_data(uint8_t *data, size_t len);
+bool cfg_is_dirty(void);
 
 void cfg_get_all(struct svec *);
 
index fdda753432f6528ea2b3762d4f818ddff2fee001..cb21a8d870bd4474a91d3d81bfc9d8f96be0fa51 100644 (file)
@@ -144,7 +144,6 @@ int main(int argc, char *argv[])
     };
     char *short_options;
     bool config_set = false;
-    bool modified = false;
 
     set_program_name(argv[0]);
     time_init();
@@ -172,22 +171,18 @@ int main(int argc, char *argv[])
 
        case 'a':
             cfg_add_entry("%s", optarg);
-            modified = true;
             break;
 
         case 'd':
             cfg_del_entry("%s", optarg);
-            modified = true;
             break;
 
         case 'D':
             cfg_del_section("%s", optarg);
-            modified = true;
             break;
 
         case OPT_DEL_MATCH:
             cfg_del_match("%s", optarg);
-            modified = true;
             break;
 
         case 'q':
@@ -224,7 +219,7 @@ int main(int argc, char *argv[])
                   "(use --help for help)");
     }
 
-    if (modified) {
+    if (cfg_is_dirty()) {
         cfg_write();
     }
     cfg_unlock();