summaryrefslogtreecommitdiffstats
path: root/sendmail.c
diff options
context:
space:
mode:
Diffstat (limited to 'sendmail.c')
-rw-r--r--sendmail.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/sendmail.c b/sendmail.c
index 46d0e4b..b62fef8 100644
--- a/sendmail.c
+++ b/sendmail.c
@@ -45,6 +45,38 @@ void mailq()
45 _exit(111); 45 _exit(111);
46} 46}
47 47
48void do_sender(s)
49const char *s;
50{
51 char *x;
52 int n;
53 int a;
54 int i;
55
56 env_unset("QMAILNAME");
57 env_unset("MAILNAME");
58 env_unset("NAME");
59 env_unset("QMAILHOST");
60 env_unset("MAILHOST");
61
62 n = str_len(s);
63 a = str_rchr(s, '@');
64 if (a == n)
65 {
66 env_put2("QMAILUSER", s);
67 return;
68 }
69 env_put2("QMAILHOST", s + a + 1);
70
71 x = (char *) alloc((a + 1) * sizeof(char));
72 if (!x) nomem();
73 for (i = 0; i < a; i++)
74 x[i] = s[i];
75 x[i] = 0;
76 env_put2("QMAILUSER", x);
77 alloc_free(x);
78}
79
48int flagh; 80int flagh;
49char *sender; 81char *sender;
50 82
@@ -118,6 +150,7 @@ char **argv;
118 if (sender) { 150 if (sender) {
119 *arg++ = "-f"; 151 *arg++ = "-f";
120 *arg++ = sender; 152 *arg++ = sender;
153 do_sender(sender);
121 } 154 }
122 *arg++ = "--"; 155 *arg++ = "--";
123 for (i = 0;i < argc;++i) *arg++ = argv[i]; 156 for (i = 0;i < argc;++i) *arg++ = argv[i];