#include #include #include #include #include #include #include #include #include "util.h" #include "email.h" static void write_complete (int fd, const void *_buf, size_t len) { ssize_t writ; const char *buf = _buf; while (len) { writ = write (fd, buf, len); if (writ <= 0) return; len -= writ; buf += writ; } } static void write_str (int fd, const char *str) { write_complete (fd, str, strlen (str)); } void send_email (const char *to, const char *subject, const char *body) { int pipes[2]; if (daemonish (0, 1)) return; pipe (pipes); switch (fork()) { case 0: close (pipes[1]); dup2 (pipes[0], 0); close (pipes[0]); execl ("/usr/lib/sendmail", "sendmail", to, (char *) 0); _exit (1); case -1: _exit (1); } close (pipes[0]); write_str (pipes[1], "Subject: "); write_str (pipes[1], subject); write_str (pipes[1], "\n\n"); write_str (pipes[1], body); write_str (pipes[1], "\n\n"); close (pipes[1]); _exit (0); }