From: Wouter Verhelst Date: Thu, 9 Jun 2011 14:08:24 +0000 (+0200) Subject: Remove some more crack X-Git-Url: http://git.alex.org.uk Remove some more crack - Don't touch values unless they're actually set in the config file - Remove silly test for port thing. This is broken in so many ways, I'm not even going to try explaining it anymore. --- diff --git a/nbd-server.c b/nbd-server.c index e733c3e..133bc7e 100644 --- a/nbd-server.c +++ b/nbd-server.c @@ -793,7 +793,9 @@ GArray* parse_cfile(gchar* f, GError** e) { GQuark errdomain; GArray *retval=NULL; gchar **groups; - gboolean value; + gboolean bval; + gint ival; + gchar* sval; gchar* startgroup; gint i; gint j; @@ -827,25 +829,29 @@ GArray* parse_cfile(gchar* f, GError** e) { g_assert(p[j].ptype==PARAM_INT||p[j].ptype==PARAM_STRING||p[j].ptype==PARAM_BOOL); switch(p[j].ptype) { case PARAM_INT: - *((gint*)p[j].target) = - g_key_file_get_integer(cfile, + ival = g_key_file_get_integer(cfile, groups[i], p[j].paramname, &err); + if(!err) { + *((gint*)p[j].target) = ival; + } break; case PARAM_STRING: - *((gchar**)p[j].target) = - g_key_file_get_string(cfile, + sval = g_key_file_get_string(cfile, groups[i], p[j].paramname, &err); + if(!err) { + *((gchar**)p[j].target) = sval; + } break; case PARAM_BOOL: - value = g_key_file_get_boolean(cfile, + bval = g_key_file_get_boolean(cfile, groups[i], p[j].paramname, &err); if(!err) { - if(value) { + if(bval) { *((gint*)p[j].target) |= p[j].flagval; } else { *((gint*)p[j].target) &= ~(p[j].flagval); @@ -853,11 +859,6 @@ GArray* parse_cfile(gchar* f, GError** e) { } break; } - if(!strcmp(p[j].paramname, "port") && !strcmp(p[j].target, modernport)) { - g_set_error(e, errdomain, CFILE_INCORRECT_PORT, "Config file specifies new-style port for oldstyle export"); - g_key_file_free(cfile); - return NULL; - } if(err) { if(err->code == G_KEY_FILE_ERROR_KEY_NOT_FOUND) { if(!p[j].required) {