*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.203 2008/03/24 18:08:47 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.204 2008/07/08 22:17:41 tgl Exp $
*
*-------------------------------------------------------------------------
*/
static unsigned long seq = 0;
int len;
+ const char *nlpos;
/* Open syslog connection if not done yet */
if (!openlog_done)
* fact, it does work around by splitting up messages into smaller pieces.
*
* We divide into multiple syslog() calls if message is too long or if the
- * message contains embedded NewLine(s) '\n'.
+ * message contains embedded newline(s).
*/
len = strlen(line);
- if (len > PG_SYSLOG_LIMIT || strchr(line, '\n') != NULL)
+ nlpos = strchr(line, '\n');
+ if (len > PG_SYSLOG_LIMIT || nlpos != NULL)
{
int chunk_nr = 0;
while (len > 0)
{
char buf[PG_SYSLOG_LIMIT + 1];
- const char *nlpos;
int buflen;
int i;
{
line++;
len--;
+ /* we need to recompute the next newline's position, too */
+ nlpos = strchr(line, '\n');
continue;
}
/* copy one line, or as much as will fit, to buf */
- nlpos = strchr(line, '\n');
if (nlpos != NULL)
buflen = nlpos - line;
else