Minor code beautification in conninfo_uri_parse_params().

Reading this made me itch, so clean the logic a bit.
This commit is contained in:
Tom Lane 2015-02-21 13:27:12 -05:00
parent b26e208142
commit 3d9b6f31ee
1 changed files with 19 additions and 36 deletions

View File

@ -4934,36 +4934,30 @@ conninfo_uri_parse_params(char *params,
{ {
printfPQExpBuffer(errorMessage, printfPQExpBuffer(errorMessage,
libpq_gettext("extra key/value separator \"=\" in URI query parameter: \"%s\"\n"), libpq_gettext("extra key/value separator \"=\" in URI query parameter: \"%s\"\n"),
params); keyword);
return false; return false;
} }
/* Cut off keyword, advance to value */ /* Cut off keyword, advance to value */
*p = '\0'; *p++ = '\0';
value = ++p; value = p;
} }
else if (*p == '&' || *p == '\0') else if (*p == '&' || *p == '\0')
{ {
char prevchar; /*
* If not at the end, cut off value and advance; leave p
/* Cut off value, remember old value */ * pointing to start of the next parameter, if any.
prevchar = *p; */
*p = '\0'; if (*p != '\0')
*p++ = '\0';
/* Was there '=' at all? */ /* Was there '=' at all? */
if (value == NULL) if (value == NULL)
{ {
printfPQExpBuffer(errorMessage, printfPQExpBuffer(errorMessage,
libpq_gettext("missing key/value separator \"=\" in URI query parameter: \"%s\"\n"), libpq_gettext("missing key/value separator \"=\" in URI query parameter: \"%s\"\n"),
params); keyword);
return false; return false;
} }
/* Got keyword and value, go process them. */
/*
* If not at the end, advance; now pointing to start of the
* next parameter, if any.
*/
if (prevchar != '\0')
++p;
break; break;
} }
else else
@ -5007,24 +5001,12 @@ conninfo_uri_parse_params(char *params,
if (!conninfo_storeval(connOptions, keyword, value, if (!conninfo_storeval(connOptions, keyword, value,
errorMessage, true, false)) errorMessage, true, false))
{ {
/* /* Insert generic message if conninfo_storeval didn't give one. */
* Check if there was a hard error when decoding or storing the if (errorMessage->len == 0)
* option. printfPQExpBuffer(errorMessage,
*/ libpq_gettext("invalid URI query parameter: \"%s\"\n"),
if (errorMessage->len != 0) keyword);
{ /* And fail. */
if (malloced)
{
free(keyword);
free(value);
}
return false;
}
printfPQExpBuffer(errorMessage,
libpq_gettext(
"invalid URI query parameter: \"%s\"\n"),
keyword);
if (malloced) if (malloced)
{ {
free(keyword); free(keyword);
@ -5032,13 +5014,14 @@ conninfo_uri_parse_params(char *params,
} }
return false; return false;
} }
if (malloced) if (malloced)
{ {
free(keyword); free(keyword);
free(value); free(value);
} }
/* Proceed to next key=value pair */ /* Proceed to next key=value pair, if any */
params = p; params = p;
} }