From 6e54b6785e6d5efc78417d3dcc24958a302ac74e Mon Sep 17 00:00:00 2001 From: tgl Date: Thu, 24 Jul 2008 17:43:45 +0000 Subject: [PATCH] Remove some redundant tests and improve comments in next_token(). Cosmetic, but it might make this a bit less confusing to the next reader. --- src/backend/libpq/hba.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 */ -- 2.11.4.GIT