--- /dev/null
+#
+# $Header: /cvsroot/pgsql/contrib/pg_logger/Attic/Makefile,v 1.1 2001/02/11 02:18:27 momjian Exp $
+#
+
+subdir = contrib/pg_logger
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+
+OBJS = pg_logger.o
+
+all: pg_logger
+
+pg_logger: $(OBJS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
+
+install: all installdirs
+ $(INSTALL_PROGRAM) pg_logger$(X) $(bindir)
+ $(INSTALL_DATA) README.pg_logger $(docdir)/contrib
+
+installdirs:
+ $(mkinstalldirs) $(bindir) $(docdir)/contrib
+
+uninstall:
+ rm -f $(bindir)/pg_logger$(X) $(docdir)/contrib/README.pg_logger
+
+clean distclean maintainer-clean:
+ rm -f pg_logger$(X) $(OBJS)
+
+depend dep:
+ $(CC) -MM -MG $(CFLAGS) *.c > depend
+
+ifeq (depend,$(wildcard depend))
+include depend
+endif
--- /dev/null
+/* pg_logger: stdin-to-syslog gateway for postgresql.
+ *
+ * Copyright 2001 by Nathan Myers <ncm@nospam.cantrip.org>
+ * This software is distributed free of charge with no warranty of any kind.
+ * You have permission to make copies for any purpose, provided that (1)
+ * this copyright notice is retained unchanged, and (2) you agree to
+ * absolve the author of all responsibility for all consequences arising
+ * from any use.
+ */
+
+#include <stdio.h>
+#include <stddef.h>
+#include <syslog.h>
+#include <string.h>
+
+struct {
+ const char *tag;
+ int size;
+ int priority;
+} tags[] = {
+ { "", 0, LOG_NOTICE },
+ { "emerg:", sizeof("emerg"), LOG_EMERG },
+ { "alert:", sizeof("alert"), LOG_ALERT },
+ { "crit:", sizeof("crit"), LOG_CRIT },
+ { "err:", sizeof("err"), LOG_ERR },
+ { "error:", sizeof("error"), LOG_ERR },
+ { "warning:", sizeof("warning"), LOG_WARNING },
+ { "notice:", sizeof("notice"), LOG_NOTICE },
+ { "info:", sizeof("info"), LOG_INFO },
+ { "debug:", sizeof("debug"), LOG_DEBUG }
+};
+
+int main()
+{
+ char buf[301];
+ int c;
+ char *pos = buf;
+ const char *colon = 0;
+
+#ifndef DEBUG
+ openlog("postgresql", LOG_CONS, LOG_LOCAL1);
+#endif
+ while ( (c = getchar()) != EOF) {
+ if (c == '\r') {
+ continue;
+ }
+ if (c == '\n') {
+ int level = sizeof(tags)/sizeof(*tags);
+ char *bol;
+
+ if (colon == 0 || (size_t)(colon - buf) > sizeof("warning")) {
+ level = 1;
+ }
+ *pos = 0;
+ while (--level) {
+ if (pos - buf >= tags[level].size
+ && strncmp(buf, tags[level].tag, tags[level].size) == 0) {
+ break;
+ }
+ }
+ bol = buf + tags[level].size;
+ if (bol > buf && *bol == ' ') {
+ ++bol;
+ }
+ if (pos - bol > 0) {
+#ifndef DEBUG
+ syslog(tags[level].priority, "%s", bol);
+#else
+ printf("%d/%s\n", tags[level].priority, bol);
+#endif
+ }
+ pos = buf;
+ colon = (char const *)0;
+ continue;
+ }
+ if (c == ':' && !colon) {
+ colon = pos;
+ }
+ if ((size_t)(pos - buf) < sizeof(buf)-1) {
+ *pos++ = c;
+ }
+ }
+ return 0;
+}
+