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