From: Tom Lane Date: Thu, 24 Jul 2008 17:43:45 +0000 (+0000) Subject: Remove some redundant tests and improve comments in next_token(). X-Git-Tag: recoveryinfrav9~788 X-Git-Url: http://git.postgresql.org/gitweb/irc:/static/gitweb.js?a=commitdiff_plain;h=5c1ffd3b720f1b3813b5575c4cf4a000d6d4e16b;p=users%2Fsimon%2Fpostgres.git Remove some redundant tests and improve comments in next_token(). Cosmetic, but it might make this a bit less confusing to the next reader. --- diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index 235f357c43..ecc59dcde3 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -98,7 +98,7 @@ pg_isblank(const char c) * Grab one token out of fp. Tokens are strings of non-blank * characters bounded by blank characters, commas, beginning of line, and * end of line. Blank means space or tab. Tokens can be delimited by - * double quotes (and usually are, in current usage). + * double quotes (this allows the inclusion of blanks, but not newlines). * * The token, if any, is returned at *buf (a buffer of size bufsz). * @@ -110,7 +110,9 @@ pg_isblank(const char c) * beginning of the next line or EOF, whichever comes first. * * Handle comments. Treat unquoted keywords that might be role names or - * database names specially, by appending a newline to them. + * database names specially, by appending a newline to them. Also, when + * a token is terminated by a comma, the comma is included in the returned + * token. */ static bool next_token(FILE *fp, char *buf, int bufsz) @@ -139,7 +141,7 @@ next_token(FILE *fp, char *buf, int bufsz) * or unquoted whitespace. */ while (c != EOF && c != '\n' && - (!pg_isblank(c) || in_quote == true)) + (!pg_isblank(c) || in_quote)) { /* skip comments to EOL */ if (c == '#' && !in_quote) @@ -165,11 +167,11 @@ next_token(FILE *fp, char *buf, int bufsz) break; } - if (c != '"' || (c == '"' && was_quote)) + if (c != '"' || was_quote) *buf++ = c; /* We pass back the comma so the caller knows there is more */ - if ((pg_isblank(c) || c == ',') && !in_quote) + if (c == ',' && !in_quote) break; /* Literal double-quote is two double-quotes */