Don't report a syntax error if a preference name without a "." is
authorGuy Harris <guy@alum.mit.edu>
Sun, 21 Jul 2013 00:56:42 +0000 (00:56 -0000)
committerGuy Harris <guy@alum.mit.edu>
Sun, 21 Jul 2013 00:56:42 +0000 (00:56 -0000)
specified, report it as "no such preference" instead.  That should be
less confusing; see

   http://stackoverflow.com/questions/17757659/how-to-apply-and-override-preferences-with-tshark

for an example of confusion.

#BACKPORT 1.10, 1.8

svn path=/trunk/; revision=50745

epan/prefs.c

index 3cb90f4cd2b2c516163e432c11929c76fb4d05c9..05e69af41847d125af47c11b8a93a79121c3a8f2 100644 (file)
@@ -3562,7 +3562,6 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
   gchar    *filter_expr = NULL;
   module_t *module;
   pref_t   *pref;
-  gboolean had_a_dot;
 
   if (strcmp(pref_name, PRS_GUI_FILTER_LABEL) == 0) {
     filter_label = g_strdup(value);
@@ -3624,21 +3623,12 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
       /* To which module does this preference belong? */
       module = NULL;
       last_dotp = pref_name;
-      had_a_dot = FALSE;
       while (!module) {
         dotp = strchr(last_dotp, '.');
         if (dotp == NULL) {
-            if (had_a_dot) {
-              /* no such module */
-              return PREFS_SET_NO_SUCH_PREF;
-            }
-            else {
-              /* no ".", so no module/name separator */
-              return PREFS_SET_SYNTAX_ERR;
-            }
-        }
-        else {
-            had_a_dot = TRUE;
+            /* Either there's no such module, or no module was specified.
+               In either case, that means there's no such preference. */
+            return PREFS_SET_NO_SUCH_PREF;
         }
         *dotp = '\0'; /* separate module and preference name */
         module = prefs_find_module(pref_name);