Re: Reporting hba lines
| От | Tom Lane | 
|---|---|
| Тема | Re: Reporting hba lines | 
| Дата | |
| Msg-id | 23650.1340980793@sss.pgh.pa.us обсуждение исходный текст | 
| Ответ на | Re: Reporting hba lines (Magnus Hagander <magnus@hagander.net>) | 
| Ответы | Re: Reporting hba lines | 
| Список | pgsql-hackers | 
Magnus Hagander <magnus@hagander.net> writes:
> Turned out to be a bit more work than I thought, since the current
> parser reads pg_hba byte by byte, and not line by line. So I had to
> change that. See attached, seems reasonable?
A couple of comments:
* In some places you have "if ((c = *(*lineptr)++) != '\0')" and in other
places just "if ((c = *(*lineptr)++))".  This should be consistent (and
personally I prefer the first way).
* I'm not sure that this conversion is right:
!     if (c != EOF)
!         ungetc(c, fp);
---
!     if (c != '\0')
!         (*lineptr)--;
In the file case, it's impossible to push back EOF, and unnecessary
since another getc will produce EOF again anyway.  In the string case,
though, I think you might need to decrement the lineptr unconditionally,
else next call will run off the end of the string no?
* This bit seems a bit ugly, and not Windows-aware either:
!                         /* We don't store the trailing newline */
!                         if (rawline[strlen(rawline)-1] == '\n')
!                             rawline[strlen(rawline)-1] = '\0';
!
It might be better to strip trailing \n and \r from the line immediately
upon read, rather than here.
        regards, tom lane
		
	В списке pgsql-hackers по дате отправления: