Upstream qmail 1.03
[qmail] / qmail-tcpok.c
diff --git a/qmail-tcpok.c b/qmail-tcpok.c
new file mode 100644 (file)
index 0000000..a9b9652
--- /dev/null
@@ -0,0 +1,35 @@
+#include "strerr.h"
+#include "substdio.h"
+#include "lock.h"
+#include "open.h"
+#include "readwrite.h"
+#include "auto_qmail.h"
+#include "exit.h"
+
+#define FATAL "qmail-tcpok: fatal: "
+
+char buf[1024]; /* XXX: must match size in tcpto_clean.c, tcpto.c */
+substdio ss;
+
+void main()
+{
+  int fd;
+  int i;
+
+  if (chdir(auto_qmail) == -1)
+    strerr_die4sys(111,FATAL,"unable to chdir to ",auto_qmail,": ");
+  if (chdir("queue/lock") == -1)
+    strerr_die4sys(111,FATAL,"unable to chdir to ",auto_qmail,"/queue/lock: ");
+
+  fd = open_write("tcpto");
+  if (fd == -1)
+    strerr_die4sys(111,FATAL,"unable to write ",auto_qmail,"/queue/lock/tcpto: ");
+  if (lock_ex(fd) == -1)
+    strerr_die4sys(111,FATAL,"unable to lock ",auto_qmail,"/queue/lock/tcpto: ");
+
+  substdio_fdbuf(&ss,write,fd,buf,sizeof buf);
+  for (i = 0;i < sizeof buf;++i) substdio_put(&ss,"",1);
+  if (substdio_flush(&ss) == -1)
+    strerr_die4sys(111,FATAL,"unable to clear ",auto_qmail,"/queue/lock/tcpto: ");
+  _exit(0);
+}