psql as an execve(2) interpreter
От | |
---|---|
Тема | psql as an execve(2) interpreter |
Дата | |
Msg-id | 17127.1634.62446.428480@trillium.aquilegia.com обсуждение исходный текст |
Ответы |
Re: psql as an execve(2) interpreter
|
Список | pgsql-hackers |
I would like to use pgsl as an interpreter (in the sense of execve(2)). In short, if a file begins with the line #! /path/to/psql -f it should be interpretable by psql. The normal semantics of execve(2) ensure that this will work perfectly (indeed a file containing "#!/path/to/psql -l" works as expected), except for psql's nasty habit of not interpreting the first line as a comment. It seems that a simple fix to the following function in src/bin/psql/input.c would do the trick. char * gets_fromFile(FILE *source) { PQExpBufferData buffer; char line[1024]; initPQExpBuffer(&buffer); while (fgets(line, sizeof(line), source) != NULL) { appendPQExpBufferStr(&buffer, line); if (buffer.data[buffer.len- 1] == '\n') { buffer.data[buffer.len - 1] = '\0'; return buffer.data; } } if (buffer.len > 0) return buffer.data; /* EOF after reading some bufferload(s) */ /* EOF, so return null */ termPQExpBuffer(&buffer); return NULL; } For example, this feature could be achieved by 1) including a static variable to differentiate the first from subsequent calls and 2) discarding the first line (and returning the second) on the first call if the first line begins with #!. Thus, I have two questions. - Is this a feature that would be generally accepted and useful for the postgresql community (i.e., would it be incorporatedinto the code base)? - Is this the correct solution or are there other portions of the code that need to be considered? I appreciate any feedback you can give me on this. Thank you very much. Cheers, Brook
В списке pgsql-hackers по дате отправления: