Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 6 Aug 2008 11:48:23 +0000 (11:48 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 6 Aug 2008 11:48:23 +0000 (11:48 +0000)
* gpgconf-comp.c (retrieve_options_from_file): Transfer the
NO_CHANGE flag from the file name option to the list option.

tools/ChangeLog
tools/gpgconf-comp.c

index fad0c00..da435bb 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgconf-comp.c (retrieve_options_from_file): Transfer the
+       NO_CHANGE flag from the file name option to the list option.
+
 2008-06-19  Werner Koch  <wk@g10code.com>
 
        * gpgconf-comp.c (GC_ARG_TYPE_ALIAS_LIST): New.
index 28ee5a0..25d4415 100644 (file)
@@ -165,7 +165,7 @@ static struct
   /* The option name for the configuration filename of this backend.
      This must be an absolute filename.  It can be an option from a
      different backend (but then ordering of the options might
-     matter).  */
+     matter).  Note: This must be unique among all components.  */
   const char *option_config_filename;
 
   /* If this is a file backend rather than a program backend, then
@@ -1949,6 +1949,7 @@ static void
 retrieve_options_from_file (gc_component_t component, gc_backend_t backend)
 {
   gc_option_t *list_option;
+  gc_option_t *config_option;
   char *list_filename;
   FILE *list_file;
   char *line = NULL;
@@ -2008,6 +2009,12 @@ retrieve_options_from_file (gc_component_t component, gc_backend_t backend)
   list_option->active = 1;
   list_option->value = list;
 
+  /* Fix up the read-only flag.  */
+  config_option = find_option
+    (component, gc_backend[backend].option_config_filename, GC_BACKEND_ANY);
+  if (config_option->flags & GC_OPT_FLAG_NO_CHANGE)
+    list_option->flags |= GC_OPT_FLAG_NO_CHANGE;
+
   if (list_file && fclose (list_file) && ferror (list_file))
     gc_error (1, errno, "error closing %s", list_filename);
   xfree (line);