summaryrefslogtreecommitdiff
path: root/mail/milter-regex/files/patch-milter-regex.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/milter-regex/files/patch-milter-regex.c')
-rw-r--r--mail/milter-regex/files/patch-milter-regex.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/mail/milter-regex/files/patch-milter-regex.c b/mail/milter-regex/files/patch-milter-regex.c
new file mode 100644
index 000000000000..f953d92c6bd0
--- /dev/null
+++ b/mail/milter-regex/files/patch-milter-regex.c
@@ -0,0 +1,85 @@
+*** milter-regex.c.orig Sun Mar 6 06:42:53 2005
+--- milter-regex.c Wed Sep 6 16:00:00 2006
+***************
+*** 86,93 ****
+ static void usage(const char *);
+ static void msg(int, struct context *, const char *, ...);
+
+ #define USER "_milter-regex"
+ #define OCONN "unix:/var/spool/milter-regex/sock"
+ #define RCODE_REJECT "554"
+ #define RCODE_TEMPFAIL "451"
+ #define XCODE_REJECT "5.7.1"
+--- 86,94 ----
+ static void usage(const char *);
+ static void msg(int, struct context *, const char *, ...);
+
+ #define USER "_milter-regex"
+ #define OCONN "unix:/var/spool/milter-regex/sock"
++ #define OPID "/var/spool/milter-regex/milter-regex.pid"
+ #define RCODE_REJECT "554"
+ #define RCODE_TEMPFAIL "451"
+ #define XCODE_REJECT "5.7.1"
+***************
+*** 556,565 ****
+--- 557,570 ----
+ {
+ int ch;
+ const char *oconn = OCONN;
++ const char *pid_file_name = OPID;
+ const char *user = USER;
+ sfsistat r = MI_FAILURE;
+ const char *ofile = NULL;
+
++ pid_t pid;
++ FILE *pid_fd = NULL;
++
+ tzset();
+ openlog("milter-regex", LOG_PID | LOG_NDELAY, LOG_DAEMON);
+
+***************
+*** 577,582 ****
+--- 582,590 ----
+ case 'u':
+ user = optarg;
+ break;
++ case 'r':
++ pid_file_name = optarg;
++ break;
+ default:
+ usage(argv[0]);
+ }
+***************
+*** 638,646 ****
+ fprintf(stderr, "daemon: %s\n", strerror(errno));
+ goto done;
+ }
+- umask(0177);
+
+ msg(LOG_INFO, NULL, "started: %s", rcsid);
+ r = smfi_main();
+ if (r != MI_SUCCESS)
+ msg(LOG_ERR, NULL, "smfi_main: terminating due to error");
+--- 646,667 ----
+ fprintf(stderr, "daemon: %s\n", strerror(errno));
+ goto done;
+ }
+
+ msg(LOG_INFO, NULL, "started: %s", rcsid);
++
++ umask(0006);
++
++ if((pid_fd = fopen(pid_file_name, "w")) == NULL) {
++ msg(LOG_ERR, NULL, "can't open file: %s", pid_file_name);
++ goto done;
++ } else {
++ pid = getpid();
++ fprintf(pid_fd, "%d", (int) pid);
++ fclose(pid_fd);
++ }
++
++ umask(0177);
++
+ r = smfi_main();
+ if (r != MI_SUCCESS)
+ msg(LOG_ERR, NULL, "smfi_main: terminating due to error");