summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--src/columnt.c22
-rw-r--r--src/condredirect.c2
-rw-r--r--src/control.c5
-rw-r--r--src/dns.c15
-rw-r--r--src/dns_tlsa.c3
-rw-r--r--src/dnsmxip.c3
-rw-r--r--src/fastforward.c18
-rw-r--r--src/forward.c5
-rw-r--r--src/headerbody.c8
-rw-r--r--src/hfield.c6
-rw-r--r--src/hier.c4
-rw-r--r--src/hmac_md5.c5
-rw-r--r--src/include/commands.h8
-rw-r--r--src/include/constmap.h8
-rw-r--r--src/include/datetime.h4
-rw-r--r--src/include/headerbody.h5
-rw-r--r--src/include/hfield.h8
-rw-r--r--src/include/hier.h12
-rw-r--r--src/include/ipalloc.h5
-rw-r--r--src/include/ipme.h8
-rw-r--r--src/include/meson.build61
-rw-r--r--src/include/newfield.h6
-rw-r--r--src/include/now.h2
-rw-r--r--src/include/prioq.h6
-rw-r--r--src/include/prot.h4
-rw-r--r--src/include/qsutil.h1
-rw-r--r--src/include/rcpthosts.h4
-rw-r--r--src/include/readsubdir.h8
-rw-r--r--src/include/recipients.h6
-rw-r--r--src/include/smtpdlog.h7
-rw-r--r--src/include/spawn.h12
-rw-r--r--src/include/srs2.h2
-rw-r--r--src/include/tcpto.h16
-rw-r--r--src/include/tls_errors.h8
-rw-r--r--src/include/tls_timeoutio.h13
-rw-r--r--src/include/token822.h39
-rw-r--r--src/include/trigger.h10
-rw-r--r--src/include/triggerpull.h6
-rw-r--r--src/install.c12
-rw-r--r--src/instcheck.c15
-rw-r--r--src/ipalloc.c8
-rw-r--r--src/ipme.c14
-rw-r--r--src/maildir2mbox.c4
-rw-r--r--src/maildirwatch.c14
-rw-r--r--src/matchup.c47
-rw-r--r--src/md5c.c28
-rw-r--r--src/meson.build124
-rw-r--r--src/mfrules.c3
-rw-r--r--src/myctime.c4
-rw-r--r--src/newaliases.c25
-rw-r--r--src/newinclude.c27
-rw-r--r--src/preline.c2
-rw-r--r--src/printforward.c12
-rw-r--r--src/printmaillist.c2
-rw-r--r--src/prot.c9
-rw-r--r--src/qbiff.c8
-rw-r--r--src/qmail-authuser.c28
-rw-r--r--src/qmail-badloadertypes.c4
-rw-r--r--src/qmail-badmimetypes.c4
-rw-r--r--src/qmail-clean.c4
-rw-r--r--src/qmail-dksign.c42
-rw-r--r--src/qmail-dkverify.c42
-rw-r--r--src/qmail-getpw.c2
-rw-r--r--src/qmail-inject.c72
-rw-r--r--src/qmail-local.c44
-rw-r--r--src/qmail-lspawn.c3
-rw-r--r--src/qmail-mfrules.c12
-rw-r--r--src/qmail-mrtg.c8
-rw-r--r--src/qmail-newmrh.c4
-rw-r--r--src/qmail-newu.c16
-rw-r--r--src/qmail-pop3d.c64
-rw-r--r--src/qmail-popup.c70
-rw-r--r--src/qmail-pw2u.c20
-rw-r--r--src/qmail-qmaint.c53
-rw-r--r--src/qmail-qmqpc.c28
-rw-r--r--src/qmail-qmqpd.c16
-rw-r--r--src/qmail-qmtpd.c14
-rw-r--r--src/qmail-qread.c22
-rw-r--r--src/qmail-queue.c26
-rw-r--r--src/qmail-recipients.c4
-rw-r--r--src/qmail-remote.c92
-rw-r--r--src/qmail-rspawn.c1
-rw-r--r--src/qmail-send.c120
-rw-r--r--src/qmail-showctl.c8
-rw-r--r--src/qmail-smtpam.c54
-rw-r--r--src/qmail-smtpd.c163
-rw-r--r--src/qmail-start.c6
-rw-r--r--src/qmail-tcpto.c12
-rw-r--r--src/qmail-todo.c55
-rw-r--r--src/qmail-vmailuser.c2
-rw-r--r--src/qreceipt.c29
-rw-r--r--src/qsutil.c2
-rw-r--r--src/readsubdir.c1
-rw-r--r--src/received.c2
-rw-r--r--src/recipients.c4
-rw-r--r--src/sendmail.c10
-rw-r--r--src/setforward.c23
-rw-r--r--src/setmaillist.c4
-rw-r--r--src/spawn.c17
-rw-r--r--src/spf.c4
-rw-r--r--src/spfquery.c4
-rw-r--r--src/splogger.c4
-rw-r--r--src/srs2.c12
-rw-r--r--src/srsforward.c6
-rw-r--r--src/srsreverse.c6
-rw-r--r--src/tls_remote.c4
-rw-r--r--src/tls_start.c7
-rw-r--r--src/tls_timeoutio.c30
-rw-r--r--src/token822.c13
-rw-r--r--src/triggerpull.c18
111 files changed, 1037 insertions, 1003 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b010b19
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.cache/
+compile_commands.json
diff --git a/src/columnt.c b/src/columnt.c
index d02b7ed..fc76c1a 100644
--- a/src/columnt.c
+++ b/src/columnt.c
@@ -14,15 +14,17 @@
char outbuf[BSIZE];
buffer bo = BUFFER_INIT(write, 1, outbuf, sizeof(outbuf));
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void die_read()
+
+static void die_read()
{
logmsg(WHO, 110, ERROR, "unable to read input: ");
}
-void die_write()
+
+static void die_write()
{
logmsg(WHO, 110, ERROR, "unable to write output: ");
}
@@ -31,24 +33,24 @@ stralloc file = {0};
int *width;
int maxfield = 0;
-void nothing() {}
+static void nothing() {}
-void printline()
+static void printline()
{
if (buffer_put(&bo, "\n", 1) == -1) die_write();
}
-void maxfield_check(int fieldnum, char *buf, int len)
+static void maxfield_check(int fieldnum, char *buf, int len)
{
if (fieldnum > maxfield) maxfield = fieldnum;
}
-void width_check(int fieldnum, char *buf, int len)
+static void width_check(int fieldnum, char *buf, int len)
{
if (len > width[fieldnum]) width[fieldnum] = len;
}
-void width_init()
+static void width_init()
{
int i;
@@ -57,7 +59,7 @@ void width_init()
for (i = 0; i <= maxfield; ++i) width[i] = 0;
}
-void printfield(int fieldnum, char *buf, int len)
+static void printfield(int fieldnum, char *buf, int len)
{
int i;
@@ -71,7 +73,7 @@ void printfield(int fieldnum, char *buf, int len)
if (buffer_put(&bo, " ", 2) == -1) die_write();
}
-void split(void (*dofield)(), void (*doline)())
+static void split(void (*dofield)(int, char *, int), void (*doline)(void))
{
int i;
int j;
diff --git a/src/condredirect.c b/src/condredirect.c
index 534dac7..2868ee6 100644
--- a/src/condredirect.c
+++ b/src/condredirect.c
@@ -15,7 +15,7 @@
struct qmail qqt;
-ssize_t mywrite(int fd, char *buf, int len)
+static ssize_t mywrite(int fd, char *buf, int len)
{
qmail_put(&qqt, buf, len);
return len;
diff --git a/src/control.c b/src/control.c
index d3d12ad..2bc7b57 100644
--- a/src/control.c
+++ b/src/control.c
@@ -2,11 +2,10 @@
#include <unistd.h>
-#include "alloc.h"
+#include <errno.h>
+
#include "buffer.h"
-#include "error.h"
#include "getln.h"
-#include "logmsg.h"
#include "open.h"
#include "scan.h"
#include "stralloc.h"
diff --git a/src/dns.c b/src/dns.c
index b05a757..b9c297f 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -7,14 +7,7 @@
#include <sys/socket.h>
#include <sys/types.h>
-#include <string.h>
-
#include "alloc.h"
-#include "buffer.h"
-#include "case.h"
-#include "dnsresolv.h"
-#include "exit.h"
-#include "fmt.h"
#include "ip.h"
#include "str.h"
#include "stralloc.h"
@@ -80,8 +73,9 @@ static int dns_ipplus(ipalloc *ia, stralloc *sa, int pref)
}
error = 0;
}
- } else
+ } else {
error = 1;
+ }
/* Case 4: sa is fqdn and looking for IPv4 */
@@ -97,13 +91,14 @@ static int dns_ipplus(ipalloc *ia, stralloc *sa, int pref)
}
error = 0;
}
- } else
+ } else {
error += 2;
+ }
return error;
}
-int dns_ipalloc(ipalloc *ia, stralloc *sa)
+static int dns_ipalloc(ipalloc *ia, stralloc *sa)
{
if (!ipalloc_readyplus(ia, 0)) return DNS_MEM;
ia->len = 0;
diff --git a/src/dns_tlsa.c b/src/dns_tlsa.c
index 612c6b3..66226a0 100644
--- a/src/dns_tlsa.c
+++ b/src/dns_tlsa.c
@@ -1,4 +1,5 @@
#include "byte.h"
+#include "dnsresolv.h"
#include "logmsg.h"
#include "stralloc.h"
#include "uint_t.h"
@@ -7,7 +8,7 @@
static char *q = 0;
-int dns_tlsa_packet(stralloc *out, const char *buf, unsigned int len)
+static int dns_tlsa_packet(stralloc *out, const char *buf, unsigned int len)
{
unsigned int pos;
char header[12];
diff --git a/src/dnsmxip.c b/src/dnsmxip.c
index 9148bdc..e11d83e 100644
--- a/src/dnsmxip.c
+++ b/src/dnsmxip.c
@@ -12,7 +12,6 @@
#include "stralloc.h"
#include "dns.h"
-#include "now.h"
#define WHO "dnsmxip"
@@ -21,7 +20,7 @@ static stralloc ia = {0};
static stralloc out = {0};
static stralloc ipaddr = {0};
-int dns_ia(stralloc *ip, char *s)
+static int dns_ia(stralloc *ip, char *s)
{
int i;
int j = 0;
diff --git a/src/fastforward.c b/src/fastforward.c
index 731ada8..9d35d16 100644
--- a/src/fastforward.c
+++ b/src/fastforward.c
@@ -55,7 +55,7 @@ struct qmail qq;
char qp[FMT_ULONG];
char qqbuf[1];
-ssize_t qqwrite(int fd, char *buf, int len)
+static ssize_t qqwrite(int fd, char *buf, int len)
{
qmail_put(&qq, buf, len);
return len;
@@ -79,7 +79,7 @@ stralloc todo = {0};
stralloc mailinglist = {0};
-void dofile(char *fn)
+static void dofile(char *fn)
{
int fd;
struct stat st;
@@ -116,12 +116,12 @@ uint32 dlen;
stralloc data = {0};
struct cdb cdb;
-void cdbreaderror()
+static void cdbreaderror()
{
logmsg(WHO, 111, FATAL, B("unable to read: ", fncdb));
}
-int findtarget(int flagwild, char *prepend, char *addr)
+static int findtarget(int flagwild, char *prepend, char *addr)
{
int r;
int at;
@@ -157,7 +157,7 @@ int findtarget(int flagwild, char *prepend, char *addr)
return 0;
}
-int gettarget(int flagwild, char *prepend, char *addr)
+static int gettarget(int flagwild, char *prepend, char *addr)
{
if (!findtarget(flagwild, prepend, addr)) return 0;
dlen = cdb_datalen(&cdb);
@@ -168,7 +168,7 @@ int gettarget(int flagwild, char *prepend, char *addr)
return 1;
}
-void doprogram(char *arg)
+static void doprogram(char *arg)
{
char *args[5];
int child;
@@ -222,7 +222,7 @@ void doprogram(char *arg)
if (seek_begin(0) == -1) logmsg(WHO, 111, FATAL, "unable to rewind input: ");
}
-void dodata()
+static void dodata()
{
int i;
int j;
@@ -244,7 +244,7 @@ void dodata()
}
}
-void dorecip(char *addr)
+static void dorecip(char *addr)
{
if (!findtarget(0, "?", addr)) {
@@ -257,7 +257,7 @@ void dorecip(char *addr)
if (!stralloc_0(&forward)) nomem();
}
-void doorigrecip(char *addr)
+static void doorigrecip(char *addr)
{
if (sender.len)
if ((sender.len != 4) || byte_diff(sender.s, 4, "#@[]"))
diff --git a/src/forward.c b/src/forward.c
index e8c7eb0..83372d7 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -2,7 +2,6 @@
#include "buffer.h"
#include "env.h"
-#include "exit.h"
#include "fmt.h"
#include "logmsg.h"
#include "sig.h"
@@ -11,14 +10,14 @@
#define WHO "forward"
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
struct qmail qqt;
-ssize_t mywrite(int fd, char *buf, int len)
+static ssize_t mywrite(int fd, char *buf, int len)
{
qmail_put(&qqt, buf, len);
return len;
diff --git a/src/headerbody.c b/src/headerbody.c
index 58458cf..460b1a0 100644
--- a/src/headerbody.c
+++ b/src/headerbody.c
@@ -1,8 +1,6 @@
#include "headerbody.h"
-#include "buffer.h"
#include "getln.h"
-#include "stralloc.h"
#include "hfield.h"
@@ -20,11 +18,7 @@ static int getsa(buffer *b, stralloc *sa, int *match)
static stralloc line = {0};
static stralloc nextline = {0};
-int headerbody(b, dohf, hdone, dobl)
-buffer *b;
-void (*dohf)();
-void (*hdone)();
-void (*dobl)();
+int headerbody(buffer *b, void (*dohf)(stralloc *), void (*hdone)(void), void (*dobl)(stralloc *))
{
int match;
int flaglineok;
diff --git a/src/hfield.c b/src/hfield.c
index 3043327..357386f 100644
--- a/src/hfield.c
+++ b/src/hfield.c
@@ -1,6 +1,6 @@
#include "hfield.h"
-static char *(hname[]) = {
+static const char *hname[] = {
"unknown-header",
"sender",
"from",
@@ -32,7 +32,7 @@ static char *(hname[]) = {
"mail-followup-to",
0};
-static int hmatch(char *s, int len, char *t)
+static int hmatch(char *s, int len, const char *t)
{
int i;
char ch;
@@ -56,7 +56,7 @@ static int hmatch(char *s, int len, char *t)
int hfield_known(char *s, int len)
{
int i;
- char *t;
+ const char *t;
for (i = 1; (t = hname[i]); ++i)
if (hmatch(s, len, t)) return i;
diff --git a/src/hier.c b/src/hier.c
index 29e7176..b1d5406 100644
--- a/src/hier.c
+++ b/src/hier.c
@@ -1,9 +1,7 @@
#include "hier.h"
-#include "fifo.h"
#include "fmt.h"
-#include "ipalloc.h"
#include "tcpto.h"
#ifdef USE_CONFIG
@@ -16,7 +14,7 @@
char buf[100 + FMT_ULONG];
-void dsplit(char *base, int uid, int mode) /* base must be under 100 bytes */
+static void dsplit(char *base, int uid, int mode) /* base must be under 100 bytes */
{
char *x;
unsigned long i;
diff --git a/src/hmac_md5.c b/src/hmac_md5.c
index 5c46653..6b0fd0d 100644
--- a/src/hmac_md5.c
+++ b/src/hmac_md5.c
@@ -1,5 +1,6 @@
+#include "hmac_md5.h"
+
#include "byte.h"
-#include "str.h"
#include "global.h"
#include "md5.h"
@@ -11,7 +12,7 @@
int text_len : length of challenge
unsigned char *key : pointer to password
int key_len : length of password
- output: unsigned char *digest: pointer to calculated digest
+ output: unsigned char *digest: pointer to calculated digest
*/
void hmac_md5(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest)
diff --git a/src/include/commands.h b/src/include/commands.h
index fed35e7..ea15add 100644
--- a/src/include/commands.h
+++ b/src/include/commands.h
@@ -1,12 +1,14 @@
#ifndef COMMANDS_H
#define COMMANDS_H
+#include "buffer.h"
+
struct commands {
char *text;
- void (*fun)();
- void (*flush)();
+ void (*fun)(char *);
+ void (*flush)(void);
};
-int commands();
+extern int commands(buffer *, struct commands *);
#endif
diff --git a/src/include/constmap.h b/src/include/constmap.h
index 0a43e98..4e33dd1 100644
--- a/src/include/constmap.h
+++ b/src/include/constmap.h
@@ -13,9 +13,9 @@ struct constmap {
int *inputlen;
};
-int constmap_init(struct constmap *, char *, int, int);
-int constmap_init_char(struct constmap *, char *, int, int, char);
-void constmap_free();
-char *constmap();
+extern int constmap_init(struct constmap *, char *, int, int);
+extern int constmap_init_char(struct constmap *, char *, int, int, char);
+extern void constmap_free(struct constmap *cm);
+extern char *constmap(struct constmap *cm, char *s, int len);
#endif
diff --git a/src/include/datetime.h b/src/include/datetime.h
index eb8abc6..0f71755 100644
--- a/src/include/datetime.h
+++ b/src/include/datetime.h
@@ -14,7 +14,7 @@ struct datetime {
typedef long datetime_sec;
-void datetime_tai();
-datetime_sec datetime_untai();
+extern void datetime_tai(struct datetime *dt, datetime_sec t);
+extern datetime_sec datetime_untai(struct datetime *dt);
#endif
diff --git a/src/include/headerbody.h b/src/include/headerbody.h
index a074981..eec505f 100644
--- a/src/include/headerbody.h
+++ b/src/include/headerbody.h
@@ -1,6 +1,9 @@
#ifndef HEADERBODY_H
#define HEADERBODY_H
-int headerbody();
+#include "buffer.h"
+#include "stralloc.h"
+
+extern int headerbody(buffer *b, void (*dohf)(stralloc *), void (*hdone)(void), void (*dobl)(stralloc *));
#endif
diff --git a/src/include/hfield.h b/src/include/hfield.h
index f2110b5..1415683 100644
--- a/src/include/hfield.h
+++ b/src/include/hfield.h
@@ -1,10 +1,6 @@
#ifndef HFIELD_H
#define HFIELD_H
-unsigned int hfield_skipname();
-int hfield_known();
-int hfield_valid();
-
#define H_SENDER 1
#define H_FROM 2
#define H_REPLYTO 3
@@ -35,4 +31,8 @@ int hfield_valid();
#define H_MAILFOLLOWUPTO 28
#define H_NUM 29
+extern unsigned int hfield_skipname(char *s, int len);
+extern int hfield_known(char *s, int len);
+extern int hfield_valid(char *s, int len);
+
#endif
diff --git a/src/include/hier.h b/src/include/hier.h
index 21413cc..0c04c4b 100644
--- a/src/include/hier.h
+++ b/src/include/hier.h
@@ -1,10 +1,12 @@
#ifndef HIER_H
#define HIER_H
-void c(char *, char *, char *, int, int, int);
-void h(char *, int, int, int);
-void d(char *, char *, int, int, int);
-void p(char *, char *, int, int, int);
-void z(char *, char *, int, int, int, int);
+extern void c(const char *, char *, char *, int, int, int);
+extern void h(const char *, int, int, int);
+extern void d(const char *, char *, int, int, int);
+extern void p(const char *, char *, int, int, int);
+extern void z(const char *, char *, int, int, int, int);
+
+extern void hier(void);
#endif
diff --git a/src/include/ipalloc.h b/src/include/ipalloc.h
index cec29a9..8100c11 100644
--- a/src/include/ipalloc.h
+++ b/src/include/ipalloc.h
@@ -3,6 +3,7 @@
#include "genalloc.h"
#include "ip.h"
+
#define NAME_LEN 256
struct ip_mx {
@@ -16,7 +17,7 @@ struct ip_mx {
};
GEN_ALLOC_typedef(ipalloc, struct ip_mx, ix, len, a);
-int ipalloc_readyplus();
-int ipalloc_append();
+GEN_ALLOC_readyplus(ipalloc, struct ip_mx, ix, len, a, i, n, x, 22, ipalloc_readyplus);
+GEN_ALLOC_append(ipalloc, struct ip_mx, ix, len, a, i, n, x, 22, ipalloc_readyplus, ipalloc_append);
#endif
diff --git a/src/include/ipme.h b/src/include/ipme.h
index f9dff4e..d559dd8 100644
--- a/src/include/ipme.h
+++ b/src/include/ipme.h
@@ -7,9 +7,9 @@
extern ipalloc ipme;
-int ipme_init();
-int ipme_is4();
-int ipme_is6();
-int ipme_is();
+extern int ipme_init(void);
+extern int ipme_is4(struct ip4_address *);
+extern int ipme_is6(struct ip6_address *);
+extern int ipme_is(struct ip_mx *);
#endif
diff --git a/src/include/meson.build b/src/include/meson.build
index 3677692..ca8c752 100644
--- a/src/include/meson.build
+++ b/src/include/meson.build
@@ -1,3 +1,58 @@
+config = configuration_data()
+cc = meson.get_compiler('c')
+
+if cc.has_member('struct sockaddr', 'sa_len', prefix : '#include <sys/socket.h>')
+ config.set('HASSALEN', true)
+endif
+
+if cc.has_function('getspnam', prefix : '#include <shadow.h>')
+ config.set('HASGETSPNAM', true)
+elif cc.has_function('getuserpw', prefix : '#include <userpw.h>')
+ config.set('HASGETUSERPW', true)
+endif
+
+if cc.has_function('mkfifo', prefix : '#include <sys/stat.h>')
+ config.set('HASMKFIFO', true)
+endif
+
+if cc.has_header('utmp.h')
+ config.set('HASUTMP', true)
+endif
+
+if idn2_dep.found()
+ config.set('IDN2', true)
+endif
+
+auto_qmail = run_command('head', '-n1',
+ meson.project_source_root() / 'conf-home', check : true).stdout().strip()
+config.set('auto_qmail', auto_qmail)
+
+config.set('auto_usera', 'alias')
+
+config.set('auto_split', get_option('split'))
+config.set('auto_patrn', get_option('patrn'))
+config.set('auto_spawn', get_option('spawn'))
+
+user_groups = [
+ 'alias', 'qmaild', 'qmaill', 'qmailp', 'qmailq', 'qmailr', 'qmails',
+ 'sqmail', 'nofiles',
+]
+
+foreach id : user_groups
+ config.set(id, get_option(id))
+endforeach
+
+sqmail_hdrs_subdir = 'sqmail'
+
+configure_file(
+ configuration : config,
+ input : 'fehsqm-config.h.in',
+ output : 'fehsqm-config.h',
+ install_dir : get_option('includedir') / sqmail_hdrs_subdir,
+ install_tag : 'devel')
+
+add_project_arguments('-DUSE_CONFIG', language : 'c')
+
sqmail_hdrs = [
'base64.h',
'commands.h',
@@ -42,6 +97,7 @@ sqmail_hdrs = [
'sha1.h',
'sha256.h',
'smtpdlog.h',
+ 'spawn.h',
'spf.h',
'srs2.h',
'strset.h',
@@ -52,10 +108,9 @@ sqmail_hdrs = [
'tls_timeoutio.h',
'token822.h',
'trigger.h',
- 'triggerpull.h',
'wildmat.h',
]
-sqmail_hdrs_subdir = 'sqmail'
-
install_headers(sqmail_hdrs, subdir : sqmail_hdrs_subdir)
+
+inc = include_directories('.')
diff --git a/src/include/newfield.h b/src/include/newfield.h
index 049fb5e..8cfed4c 100644
--- a/src/include/newfield.h
+++ b/src/include/newfield.h
@@ -3,10 +3,12 @@
#include "stralloc.h"
+#include "datetime.h"
+
extern stralloc newfield_date;
-int newfield_datemake();
+extern int newfield_datemake(datetime_sec when);
extern stralloc newfield_msgid;
-int newfield_msgidmake();
+extern int newfield_msgidmake(char *idhost, int idhostlen, datetime_sec when);
#endif
diff --git a/src/include/now.h b/src/include/now.h
index 1379d76..06b2f38 100644
--- a/src/include/now.h
+++ b/src/include/now.h
@@ -3,6 +3,6 @@
#include "datetime.h"
-datetime_sec now();
+extern datetime_sec now(void);
#endif
diff --git a/src/include/prioq.h b/src/include/prioq.h
index 31c99ac..db61b59 100644
--- a/src/include/prioq.h
+++ b/src/include/prioq.h
@@ -12,8 +12,8 @@ struct prioq_elt {
GEN_ALLOC_typedef(prioq, struct prioq_elt, p, len, a);
-int prioq_insert();
-int prioq_min();
-void prioq_delmin();
+extern int prioq_insert(prioq *pq, struct prioq_elt *pe);
+extern int prioq_min(prioq *pq, struct prioq_elt *pe);
+extern void prioq_delmin(prioq *pq);
#endif
diff --git a/src/include/prot.h b/src/include/prot.h
index 08203da..7dd0503 100644
--- a/src/include/prot.h
+++ b/src/include/prot.h
@@ -1,7 +1,7 @@
#ifndef PROT_H
#define PROT_H
-int prot_gid();
-int prot_uid();
+extern int prot_gid(int);
+extern int prot_uid(int);
#endif
diff --git a/src/include/qsutil.h b/src/include/qsutil.h
index 7ef8ec1..0d5eca1 100644
--- a/src/include/qsutil.h
+++ b/src/include/qsutil.h
@@ -9,7 +9,6 @@ void log3s(char *, char *, char *);
void log4s(char *, char *, char *, char *);
void log5s(char *, char *, char *, char *, char *);
void logsa(stralloc *);
-void nomem();
void pausedir(char *);
void logsafe(char *);
int issafe(char);
diff --git a/src/include/rcpthosts.h b/src/include/rcpthosts.h
index 0c58797..791df47 100644
--- a/src/include/rcpthosts.h
+++ b/src/include/rcpthosts.h
@@ -1,7 +1,7 @@
#ifndef RCPTHOSTS_H
#define RCPTHOSTS_H
-int rcpthosts_init();
-int rcpthosts();
+extern int rcpthosts_init(void);
+extern int rcpthosts(char *, int);
#endif
diff --git a/src/include/readsubdir.h b/src/include/readsubdir.h
index 3910693..fc816f4 100644
--- a/src/include/readsubdir.h
+++ b/src/include/readsubdir.h
@@ -1,17 +1,17 @@
#ifndef READSUBDIR_H
#define READSUBDIR_H
-#include "direntry.h"
+#include <dirent.h>
typedef struct readsubdir {
DIR *dir;
int pos;
char *name;
- void (*pause)();
+ void (*pause)(char *);
} readsubdir;
-void readsubdir_init();
-int readsubdir_next();
+extern void readsubdir_init(readsubdir *rs, char *name, void (*pause)(char *));
+extern int readsubdir_next(readsubdir *rs, unsigned long *id);
#define READSUBDIR_NAMELEN 10
diff --git a/src/include/recipients.h b/src/include/recipients.h
index 34542d5..2fabd26 100644
--- a/src/include/recipients.h
+++ b/src/include/recipients.h
@@ -3,8 +3,8 @@
#include <sys/types.h>
-int recipients_init(void);
-int recipients(char *, int);
-ssize_t safewrite();
+extern int recipients_init(void);
+extern int recipients(char *, int);
+extern ssize_t safewrite(int, char *, int);
#endif
diff --git a/src/include/smtpdlog.h b/src/include/smtpdlog.h
index 9b305c5..d0ec06a 100644
--- a/src/include/smtpdlog.h
+++ b/src/include/smtpdlog.h
@@ -1,9 +1,10 @@
#ifndef SMTPDLOG_H
#define SMTPDLOG_H
-#define FDLOG 2
-void flush();
-void out();
+// #define FDLOG 2
+
+void flush(void);
+void out(char *);
void smtpdlog_init(void);
void smtp_loga(char *, char *, char *, char *, char *, char *, char *, char *, char *);
diff --git a/src/include/spawn.h b/src/include/spawn.h
new file mode 100644
index 0000000..93b6e69
--- /dev/null
+++ b/src/include/spawn.h
@@ -0,0 +1,12 @@
+#ifndef SPAWN_H_INCLUDE
+#define SPAWN_H_INCLUDE
+
+#include "buffer.h"
+
+extern int truncreport;
+
+extern int spawn(int fdmess, int fdout, const char *s, char *r, const int at);
+extern void report(buffer *log, int wstat, char *s, int len);
+extern void initialize(int argc, char **argv);
+
+#endif
diff --git a/src/include/srs2.h b/src/include/srs2.h
index 9856636..928573a 100644
--- a/src/include/srs2.h
+++ b/src/include/srs2.h
@@ -95,7 +95,7 @@ typedef struct _srs_t {
/* Interface */
int srs_set_malloc(srs_malloc_t m, srs_realloc_t r, srs_free_t f);
-srs_t *srs_new();
+srs_t *srs_new(void);
void srs_init(srs_t *);
void srs_free(srs_t *);
int srs_forward(srs_t *, char *, int, const char *, const char *);
diff --git a/src/include/tcpto.h b/src/include/tcpto.h
index 678d12a..010dd1b 100644
--- a/src/include/tcpto.h
+++ b/src/include/tcpto.h
@@ -1,25 +1,27 @@
#ifndef TCPTO_H
#define TCPTO_H
+#include "ipalloc.h"
+
#define TCPTO_BUFSIZ 1024
-/* persistency structure: record
-struct tcpto {
+/* persistency structure: record
+struct tcpto {
unsigned char af; -- 1 byte -- IPv4: x'2' / IPv6: x'a' (10)
unsigned char nul[3]; -- 3 byte
unsigned char errorcount -- 1 byte -- if err_timeout || err_conrefused || err_proto (TLS)
unsigned char nul[3]; -- 3 byte
- unsigned long when; -- 8 byte
+ unsigned long when; -- 8 byte
union {
struct ip_address ip;
struct ip6_address ip6;
unsigned char nul[16]; -- 16 byte -- IPv4: filled up with '.' = x'2e'
- } addr;
+ } addr;
}; total: 32 byte
*/
-int tcpto();
-void tcpto_err();
-void tcpto_clean();
+int tcpto(struct ip_mx *);
+void tcpto_err(struct ip_mx *ix, int flagerr);
+void tcpto_clean(void);
#endif
diff --git a/src/include/tls_errors.h b/src/include/tls_errors.h
index a61e8fd..31f105c 100644
--- a/src/include/tls_errors.h
+++ b/src/include/tls_errors.h
@@ -3,10 +3,10 @@
#include "stralloc.h"
-extern void temp_tlscon();
-extern void temp_tlspeercert();
-extern void temp_tlspeervalid();
-extern void temp_tlspeerverify();
+extern void temp_tlscon(void);
+extern void temp_tlspeercert(void);
+extern void temp_tlspeervalid(void);
+extern void temp_tlspeerverify(void);
extern stralloc host;
extern stralloc remotehost;
diff --git a/src/include/tls_timeoutio.h b/src/include/tls_timeoutio.h
index 175757e..fe3cd86 100644
--- a/src/include/tls_timeoutio.h
+++ b/src/include/tls_timeoutio.h
@@ -3,13 +3,14 @@
#include <openssl/ssl.h>
-int tls_timeoutconn(int t, int rfd, int wfd, SSL *tls);
-int tls_timeoutaccept(int t, int rfd, int wfd, SSL *tls);
-int tsl_timeoutrehandshake(int t, int rfd, int wfd, SSL *tls);
+extern int tls_timeoutconn(int t, int rfd, int wfd, SSL *tls);
+extern int tls_timeoutaccept(int t, int rfd, int wfd, SSL *tls);
+extern int tls_timeoutrehandshake(int t, int rfd, int wfd, SSL *tls);
-int tls_timeoutread(int t, int rfd, int wfd, SSL *tls, char *buf, int len);
-int tls_timeoutwrite(int t, int rfd, int wfd, SSL *tls, char *buf, int len);
+extern int tls_timeoutread(int t, int rfd, int wfd, SSL *tls, char *buf, int len);
+extern int tls_timeoutwrite(int t, int rfd, int wfd, SSL *tls, char *buf, int len);
-int tls_timeoutio(int (*fun)(), int t, int rfd, int wfd, SSL *tls, char *buf, int len);
+extern int tls_timeoutio(
+ int (*fun)(SSL *, void *, int), int t, int rfd, int wfd, SSL *tls, char *buf, int len);
#endif
diff --git a/src/include/token822.h b/src/include/token822.h
index 73ef0be..565cf5b 100644
--- a/src/include/token822.h
+++ b/src/include/token822.h
@@ -2,24 +2,7 @@
#define TOKEN822_H
#include "genalloc.h"
-
-struct token822 {
- int type;
- char *s;
- int slen;
-};
-
-GEN_ALLOC_typedef(token822_alloc, struct token822, t, len, a);
-
-int token822_parse();
-int token822_addrlist();
-int token822_unquote();
-int token822_unparse();
-void token822_free();
-void token822_reverse();
-int token822_ready();
-int token822_readyplus();
-int token822_append();
+#include "stralloc.h"
#define TOKEN822_ATOM 1
#define TOKEN822_QUOTE 2
@@ -33,4 +16,24 @@ int token822_append();
#define TOKEN822_COLON 10
#define TOKEN822_DOT 11
+struct token822 {
+ int type;
+ char *s;
+ int slen;
+};
+
+GEN_ALLOC_typedef(token822_alloc, struct token822, t, len, a);
+GEN_ALLOC_ready(token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_ready);
+GEN_ALLOC_readyplus(token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_readyplus);
+GEN_ALLOC_append(
+ token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_readyplus, token822_append);
+
+int token822_parse(token822_alloc *, stralloc *, stralloc *);
+int token822_addrlist(
+ token822_alloc *taout, token822_alloc *taaddr, token822_alloc *ta, int (*callback)());
+int token822_unquote(stralloc *, token822_alloc *);
+int token822_unparse(stralloc *, token822_alloc *, unsigned int);
+void token822_free();
+void token822_reverse(token822_alloc *);
+
#endif
diff --git a/src/include/trigger.h b/src/include/trigger.h
index d0f4a3e..01bd4c4 100644
--- a/src/include/trigger.h
+++ b/src/include/trigger.h
@@ -1,9 +1,11 @@
#ifndef TRIGGER_H
#define TRIGGER_H
-extern void trigger_set();
-extern void trigger_selprep();
-extern int trigger_pulled();
-extern void triggerpull();
+#include "select.h"
+
+extern void trigger_set(void);
+extern void trigger_selprep(int *nfds, fd_set *rfds);
+extern int trigger_pulled(fd_set *rfds);
+extern void triggerpull(void);
#endif
diff --git a/src/include/triggerpull.h b/src/include/triggerpull.h
deleted file mode 100644
index 188f4f2..0000000
--- a/src/include/triggerpull.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef TRIGGERPULL_H
-#define TRIGGERPULL_H
-
-void triggerpull(void);
-
-#endif
diff --git a/src/install.c b/src/install.c
index e6f95a9..7ca734d 100644
--- a/src/install.c
+++ b/src/install.c
@@ -7,13 +7,15 @@
#include "logmsg.h"
#include "open.h"
+#include "hier.h"
+
extern void hier();
#define WHO "install"
int fdsourcedir = -1;
-void h(char *home, int uid, int gid, int mode)
+void h(const char *home, int uid, int gid, int mode)
{
if (mkdir(home, 0700) == -1)
if (errno != EEXIST) logmsg(WHO, 111, FATAL, B("unable to mkdir: ", home));
@@ -21,7 +23,7 @@ void h(char *home, int uid, int gid, int mode)
if (chmod(home, mode) == -1) logmsg(WHO, 111, FATAL, B("unable to chmod: ", home));
}
-void d(char *home, char *subdir, int uid, int gid, int mode)
+void d(const char *home, char *subdir, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 110, FATAL, B("unable to switch to: ", home));
if (mkdir(subdir, 0700) == -1)
@@ -30,7 +32,7 @@ void d(char *home, char *subdir, int uid, int gid, int mode)
if (chmod(subdir, mode) == -1) logmsg(WHO, 111, FATAL, B("unable to chmod: ", home, "/", subdir));
}
-void p(char *home, char *fifo, int uid, int gid, int mode)
+void p(const char *home, char *fifo, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 110, FATAL, B("unable to switch to: ", home));
if (fifo_make(fifo, 0700) == -1)
@@ -44,7 +46,7 @@ buffer bi;
char outbuf[BUFFER_OUTSIZE];
buffer bo;
-void c(char *home, char *subdir, char *file, int uid, int gid, int mode)
+void c(const char *home, char *subdir, char *file, int uid, int gid, int mode)
{
int fdin;
int fdout;
@@ -77,7 +79,7 @@ void c(char *home, char *subdir, char *file, int uid, int gid, int mode)
if (chmod(file, mode) == -1) logmsg(WHO, 111, FATAL, B("unable to chmod .../", subdir, "/", file));
}
-void z(char *home, char *file, int len, int uid, int gid, int mode)
+void z(const char *home, char *file, int len, int uid, int gid, int mode)
{
int fdout;
diff --git a/src/instcheck.c b/src/instcheck.c
index 126ad11..c42eebf 100644
--- a/src/instcheck.c
+++ b/src/instcheck.c
@@ -7,11 +7,10 @@
#include "hier.h"
-extern void hier();
-
#define WHO "instcheck"
-void perm(char *prefix1, char *prefix2, char *prefix3, char *file, int type, int uid, int gid, int mode)
+static void perm(
+ char *prefix1, char *prefix2, char *prefix3, char *file, int type, int uid, int gid, int mode)
{
struct stat st;
@@ -33,31 +32,31 @@ void perm(char *prefix1, char *prefix2, char *prefix3, char *file, int type, int
logmsg(WHO, 0, WARN, B("file has wrong type: ", prefix1, prefix2, prefix3, file));
}
-void h(char *home, int uid, int gid, int mode)
+void h(const char *home, int uid, int gid, int mode)
{
perm("", "", "", home, S_IFDIR, uid, gid, mode);
}
-void d(char *home, char *subdir, int uid, int gid, int mode)
+void d(const char *home, char *subdir, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 111, FATAL, B("unable to switch to: ", home));
perm("", home, "/", subdir, S_IFDIR, uid, gid, mode);
}
-void p(char *home, char *fifo, int uid, int gid, int mode)
+void p(const char *home, char *fifo, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 111, FATAL, B("unable to switch to: ", home));
perm("", home, "/", fifo, S_IFIFO, uid, gid, mode);
}
-void c(char *home, char *subdir, char *file, int uid, int gid, int mode)
+void c(const char *home, char *subdir, char *file, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 111, FATAL, B("unable to switch to: ", home));
if (chdir(subdir) == -1) logmsg(WHO, 111, FATAL, B("unable to switch to: ", home, "/", subdir));
perm(".../", subdir, "/", file, S_IFREG, uid, gid, mode);
}
-void z(char *home, char *file, int len, int uid, int gid, int mode)
+void z(const char *home, char *file, int len, int uid, int gid, int mode)
{
if (chdir(home) == -1) logmsg(WHO, 111, FATAL, B("unable to switch to: ", home));
perm("", home, "/", file, S_IFREG, uid, gid, mode);
diff --git a/src/ipalloc.c b/src/ipalloc.c
deleted file mode 100644
index 3cb363e..0000000
--- a/src/ipalloc.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "ipalloc.h"
-
-#include "alloc.h"
-#include "genalloc.h"
-#include "ip.h"
-
-GEN_ALLOC_readyplus(ipalloc, struct ip_mx, ix, len, a, i, n, x, 22, ipalloc_readyplus);
-GEN_ALLOC_append(ipalloc, struct ip_mx, ix, len, a, i, n, x, 22, ipalloc_readyplus, ipalloc_append);
diff --git a/src/ipme.c b/src/ipme.c
index cb05a77..f11e091 100644
--- a/src/ipme.c
+++ b/src/ipme.c
@@ -12,7 +12,6 @@
#include "byte.h"
#include "ip.h"
-#include "stralloc.h"
#include "ipalloc.h"
@@ -20,15 +19,10 @@
#include <sys/sockio.h>
#endif
-#ifdef USE_CONFIG
- #include "fehsqm-config.h"
-#else
- #include "hassalen.h"
-#endif
-
-/** @file ipme.c
- @brief ipme_is4, ipme_is6, ipme_is46, ipme_init
- */
+/**
+ @file ipme.c
+ @brief ipme_is4, ipme_is6, ipme_is46, ipme_init
+*/
static int ipmeok = 0;
ipalloc ipme = {0};
diff --git a/src/maildir2mbox.c b/src/maildir2mbox.c
index 7678969..0d62df3 100644
--- a/src/maildir2mbox.c
+++ b/src/maildir2mbox.c
@@ -6,12 +6,10 @@
#include "buffer.h"
#include "env.h"
#include "exit.h"
-#include "genalloc.h"
#include "getln.h"
#include "lock.h"
#include "logmsg.h"
#include "open.h"
-#include "str.h"
#include "stralloc.h"
#include "gfrom.h"
@@ -35,7 +33,7 @@ char outbuf[BUFFER_OUTSIZE];
#define WHO "maildir2mbox"
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
diff --git a/src/maildirwatch.c b/src/maildirwatch.c
index 0fe479f..7e67d88 100644
--- a/src/maildirwatch.c
+++ b/src/maildirwatch.c
@@ -1,11 +1,8 @@
#include <unistd.h>
#include "buffer.h"
-#include "exit.h"
-#include "getln.h"
#include "logmsg.h"
#include "open.h"
-#include "str.h"
#include "stralloc.h"
#include "headerbody.h"
@@ -15,7 +12,7 @@
#define WHO "maildirwatch"
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
@@ -25,18 +22,18 @@ stralloc sender = {0};
stralloc fromline = {0};
stralloc text = {0};
-void addtext(char *s, int n)
+static void addtext(char *s, int n)
{
if (!stralloc_catb(&text, s, n)) die_nomem();
if (text.len > 158) text.len = 158;
}
-void dobody(stralloc *h)
+static void dobody(stralloc *h)
{
addtext(h->s, h->len);
}
-void doheader(stralloc *h)
+static void doheader(stralloc *h)
{
int i;
switch (hfield_known(h->s, h->len)) {
@@ -59,7 +56,8 @@ void doheader(stralloc *h)
break;
}
}
-void finishheader() {}
+
+static void finishheader() {}
stralloc filenames = {0};
prioq pq = {0};
diff --git a/src/matchup.c b/src/matchup.c
index 5a01aac..fc318e8 100644
--- a/src/matchup.c
+++ b/src/matchup.c
@@ -1,6 +1,5 @@
#include <unistd.h>
-#include "alloc.h"
#include "buffer.h"
#include "case.h"
#include "exit.h"
@@ -14,32 +13,32 @@
#define WHO "matchup"
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void die_read()
+static void die_read()
{
logmsg(WHO, 110, ERROR, "unable to read input: ");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 110, ERROR, "unable to write output: ");
}
-void die_write5()
+static void die_write5()
{
logmsg(WHO, 111, FATAL, "unable to write fd 5: ");
}
-void out(char *buf, int len)
+static void out(char *buf, int len)
{
if (buffer_put(buffer_1, buf, len) == -1) die_write();
}
-void outs(char *buf)
+static void outs(char *buf)
{
if (buffer_puts(buffer_1, buf) == -1) die_write();
}
@@ -47,12 +46,12 @@ void outs(char *buf)
char buf5[512];
buffer bo5 = BUFFER_INIT(write, 5, buf5, sizeof(buf5));
-void out5(char *buf, int len)
+static void out5(char *buf, int len)
{
if (buffer_put(&bo5, buf, len) == -1) die_write5();
}
-void outs5(char *buf)
+static void outs5(char *buf)
{
if (buffer_puts(&bo5, buf) == -1) die_write5();
}
@@ -77,7 +76,7 @@ ulongalloc numz = {0};
ulongalloc sender = {0};
ulongalloc birth = {0};
-int msg_find(unsigned long m)
+static int msg_find(unsigned long m)
{
int i;
for (i = 0; i < nummsg; ++i)
@@ -85,7 +84,7 @@ int msg_find(unsigned long m)
return -1;
}
-int msg_add(unsigned long m)
+static int msg_add(unsigned long m)
{
int i;
for (i = 0; i < nummsg; ++i)
@@ -104,7 +103,7 @@ int msg_add(unsigned long m)
return i;
}
-void msg_kill(int i)
+static void msg_kill(int i)
{
poolbytes -= str_len(pool.s + sender.u[i]) + 1;
poolbytes -= str_len(pool.s + birth.u[i]) + 1;
@@ -128,7 +127,7 @@ ulongalloc dchan = {0};
ulongalloc drecip = {0};
ulongalloc dstart = {0};
-int del_find(unsigned long d)
+static int del_find(unsigned long d)
{
int i;
for (i = 0; i < numdel; ++i)
@@ -136,7 +135,7 @@ int del_find(unsigned long d)
return -1;
}
-int del_add(unsigned long d)
+static int del_add(unsigned long d)
{
int i;
for (i = 0; i < numdel; ++i)
@@ -151,7 +150,7 @@ int del_add(unsigned long d)
return i;
}
-void del_kill(int i)
+static void del_kill(int i)
{
poolbytes -= str_len(pool.s + dchan.u[i]) + 1;
poolbytes -= str_len(pool.s + drecip.u[i]) + 1;
@@ -166,7 +165,7 @@ void del_kill(int i)
stralloc pool2 = {0};
-void garbage()
+static void garbage()
{
int i;
char *x;
@@ -212,13 +211,13 @@ int match;
#define FIELDS 20
int field[FIELDS];
-void clear()
+static void clear()
{
while (numdel > 0) del_kill(0);
garbage();
}
-void starting()
+static void starting()
{
unsigned long d;
unsigned long m;
@@ -247,7 +246,7 @@ void starting()
poolbytes += pool.len - dstart.u[dpos];
}
-void delivery()
+static void delivery()
{
unsigned long d;
unsigned long m;
@@ -324,7 +323,7 @@ void delivery()
garbage();
}
-void newmsg()
+static void newmsg()
{
unsigned long m;
int mpos;
@@ -336,7 +335,7 @@ void newmsg()
garbage();
}
-void endmsg()
+static void endmsg()
{
unsigned long m;
int mpos;
@@ -369,7 +368,7 @@ void endmsg()
garbage();
}
-void info()
+static void info()
{
unsigned long m;
int mpos;
@@ -397,7 +396,7 @@ void info()
poolbytes += pool.len - birth.u[mpos];
}
-void extra()
+static void extra()
{
unsigned long m;
int mpos;
@@ -411,7 +410,7 @@ void extra()
scan_ulong(line.s + field[5], &numd.u[mpos]);
}
-void pending()
+static void pending()
{
int i;
diff --git a/src/md5c.c b/src/md5c.c
index e539fca..584a34a 100644
--- a/src/md5c.c
+++ b/src/md5c.c
@@ -92,7 +92,7 @@ static unsigned char PADDING[64] = {0x80, 0};
}
/* MD5 initialization. Begins an MD5 operation, writing a new context. */
-void MD5Init(context) MD5_CTX *context; /* context */
+void MD5Init(MD5_CTX *context) /* context */
{
context->count[0] = context->count[1] = 0;
@@ -108,9 +108,7 @@ void MD5Init(context) MD5_CTX *context; /* context */
operation, processing another message block, and updating the
context. */
-void MD5Update(context, input, inputLen) MD5_CTX *context; /* context */
-unsigned char *input; /* input block */
-unsigned int inputLen; /* length of input block */
+void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputLen)
{
unsigned int i, index, partLen;
@@ -141,8 +139,7 @@ unsigned int inputLen; /* length of input bl
/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context. */
-void MD5Final(digest, context) unsigned char digest[16]; /* message digest */
-MD5_CTX *context; /* context */
+void MD5Final(unsigned char digest[16], MD5_CTX *context)
{
unsigned char bits[8];
unsigned int index, padLen;
@@ -167,8 +164,7 @@ MD5_CTX *context; /* context */
/* MD5 basic transformation. Transforms state based on block. */
-static void MD5Transform(state, block) UINT4 state[4];
-unsigned char block[64];
+static void MD5Transform(UINT4 state[4], unsigned char block[64])
{
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
@@ -258,9 +254,7 @@ unsigned char block[64];
/* Encodes input (UINT4) into output (unsigned char).
Assumes len is a multiple of 4. */
-static void Encode(output, input, len) unsigned char *output;
-UINT4 *input;
-unsigned int len;
+static void Encode(unsigned char *output, UINT4 *input, unsigned int len)
{
unsigned int i, j;
@@ -275,9 +269,7 @@ unsigned int len;
/* Decodes input (unsigned char) into output (UINT4).
Assumes len is a multiple of 4. */
-static void Decode(output, input, len) UINT4 *output;
-unsigned char *input;
-unsigned int len;
+static void Decode(UINT4 *output, unsigned char *input, unsigned int len)
{
unsigned int i, j;
@@ -288,9 +280,7 @@ unsigned int len;
/* Note: Replace "for loop" with standard memcpy if possible. */
-static void MD5_memcpy(output, input, len) POINTER output;
-POINTER input;
-unsigned int len;
+static void MD5_memcpy(POINTER output, POINTER input, unsigned int len)
{
unsigned int i;
@@ -299,9 +289,7 @@ unsigned int len;
/* Note: Replace "for loop" with standard memset if possible. */
-static void MD5_memset(output, value, len) POINTER output;
-int value;
-unsigned int len;
+static void MD5_memset(POINTER output, int value, unsigned int len)
{
unsigned int i;
diff --git a/src/meson.build b/src/meson.build
index 8f9af12..6244403 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,64 +1,11 @@
-inc = 'include'
-
-subdir(inc)
-
-config = configuration_data()
-cc = meson.get_compiler('c')
-
-if cc.has_member('struct sockaddr', 'sa_len', prefix : '#include <sys/socket.h>')
- config.set('HASSALEN', true)
-endif
-
-if cc.has_function('getspnam', prefix : '#include <shadow.h>')
- config.set('HASGETSPNAM', true)
-elif cc.has_function('getuserpw', prefix : '#include <userpw.h>')
- config.set('HASGETUSERPW', true)
-endif
-
-if cc.has_function('mkfifo', prefix : '#include <sys/stat.h>')
- config.set('HASMKFIFO', true)
-endif
-
-if cc.has_header('utmp.h')
- config.set('HASUTMP', true)
-endif
-
-if idn2_dep.found()
- config.set('IDN2', true)
-endif
-
-auto_qmail = run_command('head', '-n1', '../conf-home', check : true).stdout().strip()
-config.set('auto_qmail', auto_qmail)
-
-config.set('auto_usera', 'alias')
-
-config.set('auto_split', get_option('split'))
-config.set('auto_patrn', get_option('patrn'))
-config.set('auto_spawn', get_option('spawn'))
-
-user_groups = [
- 'alias', 'qmaild', 'qmaill', 'qmailp', 'qmailq', 'qmailr', 'qmails',
- 'sqmail', 'nofiles',
-]
-
-foreach id : user_groups
- config.set(id, get_option(id))
-endforeach
-
-configure_file(
- configuration : config,
- input : inc / 'fehsqm-config.h.in',
- output : 'fehsqm-config.h',
- install_dir : get_option('includedir') / sqmail_hdrs_subdir,
- install_tag : 'devel')
-
-add_project_arguments('-DUSE_CONFIG', language : 'c')
+subdir('include')
auto_break = get_option('break')
assert(auto_break[0] == auto_break)
assert(auto_break not in ['"', '\\'])
-auto_break_c = custom_target(output : 'auto_break.c',
- command : ['echo', 'char', 'auto_break', '[]', '=', f'"@auto_break@"', ';'],
+auto_break_c = custom_target(
+ output : 'auto_break.c',
+ command : ['echo', f'char auto_break[] = "@auto_break@";'],
capture : true)
@@ -98,14 +45,20 @@ if get_option('build-user')
install : true,
dependencies : qlibs_dep)
- executable('qmail-newu', 'qmail-newu.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-newu', 'qmail-newu.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
executable('qmail-pw2u', 'qmail-pw2u.c', 'constmap.c', 'control.c', auto_break_c,
include_directories : inc,
install : true,
dependencies : qlibs_dep)
- executable('qmail-newmrh', 'qmail-newmrh.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-newmrh', 'qmail-newmrh.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
endif
@@ -128,7 +81,7 @@ if get_option('build-server')
dependencies : qlibs_dep)
executable('qmail-smtpd',
- 'qmail-smtpd.c', 'rcpthosts.c', 'commands.c', 'ipme.c', 'ipalloc.c',
+ 'qmail-smtpd.c', 'rcpthosts.c', 'commands.c', 'ipme.c',
'constmap.c', 'control.c', 'received.c', 'recipients.c', 'mfrules.c',
'tls_start.c', 'smtpdlog.c', 'dns.c', 'date822fmt.c', 'now.c', 'qmail.c',
'wildmat.c', 'spf.c', 'spfdnsip.c', 'base64.c', auto_break_c,
@@ -155,7 +108,10 @@ if get_option('build-queue')
link_with : datetime_slib,
dependencies : qlibs_dep)
- executable('qmail-tcpok', 'qmail-tcpok.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-tcpok', 'qmail-tcpok.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
endif
@@ -170,7 +126,7 @@ if get_option('build-pam')
dependencies : [qlibs_dep, crypt_dep])
executable('qmail-smtpam',
- 'qmail-smtpam.c', 'control.c', 'now.c', 'dns.c', 'constmap.c', 'ipalloc.c',
+ 'qmail-smtpam.c', 'control.c', 'now.c', 'dns.c', 'constmap.c',
'ipme.c', 'quote.c', 'tcpto.c', 'tls_timeoutio.c', 'tls_errors.c',
'tls_remote.c', 'dns_tlsa.c',
include_directories : inc,
@@ -202,16 +158,24 @@ endif
if get_option('build-control')
executable('qmail-badmimetypes', 'qmail-badmimetypes.c',
+ include_directories : inc,
install : true,
dependencies : qlibs_dep)
executable('qmail-badloadertypes', 'qmail-badloadertypes.c',
+ include_directories : inc,
install : true,
dependencies : qlibs_dep)
- executable('qmail-mfrules', 'qmail-mfrules.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-mfrules', 'qmail-mfrules.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
- executable('qmail-recipients', 'qmail-recipients.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-recipients', 'qmail-recipients.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
executable('qmail-showctl', 'qmail-showctl.c', 'control.c', auto_break_c,
include_directories : inc,
@@ -290,50 +254,50 @@ endif
if get_option('build-dns')
- executable('dnscname', 'dnscname.c', 'dns.c', 'ipalloc.c',
+ executable('dnscname', 'dnscname.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnsptr', 'dnsptr.c', 'dns.c', 'ipalloc.c',
+ executable('dnsptr', 'dnsptr.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnsip', 'dnsip.c', 'dns.c', 'ipalloc.c',
+ executable('dnsip', 'dnsip.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnsmxip', 'dnsmxip.c', 'ipalloc.c', 'dns.c',
+ executable('dnsmxip', 'dnsmxip.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnsfq', 'dnsfq.c', 'dns.c', 'ipalloc.c',
+ executable('dnsfq', 'dnsfq.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnstlsa', 'dnstlsa.c', 'dns_tlsa.c', 'ipalloc.c', 'dns.c',
+ executable('dnstlsa', 'dnstlsa.c', 'dns_tlsa.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
- executable('dnstxt', 'dnstxt.c', 'ipalloc.c', 'dns.c',
+ executable('dnstxt', 'dnstxt.c', 'dns.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
executable('hostname', 'hostname.c', dependencies : [qlibs_dep, dnsresolv_dep], install : true)
- executable('ipmeprint', 'ipmeprint.c', 'ipme.c', 'ipalloc.c',
+ executable('ipmeprint', 'ipmeprint.c', 'ipme.c',
include_directories : inc,
install : true,
dependencies : [qlibs_dep, dnsresolv_dep])
executable('spfquery',
- 'spfquery.c', 'spf.c', 'ipme.c', 'ipalloc.c', 'now.c', 'dns.c', 'spfdnsip.c',
+ 'spfquery.c', 'spf.c', 'ipme.c', 'now.c', 'dns.c', 'spfdnsip.c',
include_directories : inc,
install : true,
link_with : datetime_slib,
@@ -369,7 +333,7 @@ endif
if get_option('build-clients')
executable('qmail-remote',
- 'qmail-remote.c', 'control.c', 'tcpto.c', 'now.c', 'dns.c', 'ipalloc.c',
+ 'qmail-remote.c', 'control.c', 'tcpto.c', 'now.c', 'dns.c',
'ipme.c', 'quote.c', 'tls_timeoutio.c', 'tls_errors.c', 'tls_remote.c',
'dns_tlsa.c', 'base64.c', 'constmap.c', 'md5c.c', 'hmac_md5.c',
include_directories : inc,
@@ -381,7 +345,10 @@ if get_option('build-clients')
install : true,
dependencies : qlibs_dep)
- executable('sendmail', 'sendmail.c', dependencies : qlibs_dep, install : true)
+ executable('sendmail', 'sendmail.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
endif
@@ -476,10 +443,13 @@ if get_option('build-base')
install : true,
dependencies : qlibs_dep)
- executable('qmail-start', 'qmail-start.c', dependencies : qlibs_dep, install : true)
+ executable('qmail-start', 'qmail-start.c',
+ include_directories : inc,
+ dependencies : qlibs_dep,
+ install : true)
executable('qmail-queue',
- 'qmail-queue.c', 'triggerpull.c', 'fmtqfn.c', 'now.c', 'date822fmt.c',
+ 'qmail-queue.c', 'trigger.c', 'fmtqfn.c', 'now.c', 'date822fmt.c',
include_directories : inc,
install : true,
link_with : datetime_slib,
diff --git a/src/mfrules.c b/src/mfrules.c
index be32422..2f39fd0 100644
--- a/src/mfrules.c
+++ b/src/mfrules.c
@@ -5,7 +5,6 @@
#include "case.h"
#include "cdbread.h"
#include "close.h"
-#include "open.h"
#include "str.h"
#include "stralloc.h"
@@ -65,7 +64,7 @@ static int mffind(char *mf)
return -1;
}
-int mfsearch(char *ip, char *host, char *info, char *mf)
+static int mfsearch(char *ip, char *host, char *info, char *mf)
{
int r;
diff --git a/src/myctime.c b/src/myctime.c
index ebb01ba..69d7004 100644
--- a/src/myctime.c
+++ b/src/myctime.c
@@ -4,8 +4,8 @@
#include "datetime.h"
-static char *daytab[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-static char *montab[12] = {
+static const char *daytab[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+static const char *montab[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
static char result[30];
diff --git a/src/newaliases.c b/src/newaliases.c
index 2275f63..9248636 100644
--- a/src/newaliases.c
+++ b/src/newaliases.c
@@ -5,7 +5,6 @@
#include "byte.h"
#include "case.h"
#include "cdbmake.h"
-#include "genalloc.h"
#include "getln.h"
#include "logmsg.h"
#include "open.h"
@@ -24,32 +23,32 @@
int rename(const char *, const char *); // stdio.h
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void nulbyte()
+static void nulbyte()
{
logmsg(WHO, 100, FATAL, "NUL bytes are not permitted");
}
-void longaddress()
+static void longaddress()
{
logmsg(WHO, 100, FATAL, "addresses over 800 bytes are not permitted");
}
-void writeerr()
+static void writeerr()
{
logmsg(WHO, 111, FATAL, "unable to write to /etc/aliases.tmp");
}
-void readerr()
+static void readerr()
{
logmsg(WHO, 111, FATAL, "unable to read /etc/aliases");
}
-void die_control()
+static void die_control()
{
logmsg(WHO, 111, FATAL, "unable to read controls");
}
@@ -59,7 +58,7 @@ stralloc defaulthost = {0};
stralloc defaultdomain = {0};
stralloc plusdomain = {0};
-void readcontrols()
+static void readcontrols()
{
int r;
int fddir;
@@ -97,7 +96,7 @@ token822_alloc toks = {0};
token822_alloc tokaddr = {0};
stralloc address = {0};
-void gotincl()
+static void gotincl()
{
token822_reverse(&tokaddr);
if (token822_unquote(&address, &tokaddr) != 1) nomem();
@@ -114,7 +113,7 @@ void gotincl()
if (!stralloc_0(&instr)) nomem();
}
-void gotaddr()
+static void gotaddr()
{
int i;
int j;
@@ -186,13 +185,13 @@ stralloc line = {0};
stralloc newline = {0};
int match;
-void parseerr()
+static void parseerr()
{
if (!stralloc_0(&line)) nomem();
logmsg(WHO, 111, FATAL, B("unable to parse this line: ", line.s));
}
-void parseline()
+static void parseline()
{
int wordok;
struct token822 *t;
@@ -265,7 +264,7 @@ buffer bi;
struct cdb_make cdb;
stralloc key = {0};
-void doit()
+static void doit()
{
if (!instr.len) {
if (target.len) parseerr();
diff --git a/src/newinclude.c b/src/newinclude.c
index ae01482..4bc9f81 100644
--- a/src/newinclude.c
+++ b/src/newinclude.c
@@ -6,7 +6,6 @@
#include "buffer.h"
#include "byte.h"
#include "env.h"
-#include "genalloc.h"
#include "getln.h"
#include "logmsg.h"
#include "open.h"
@@ -23,12 +22,12 @@
#define WHO "newinclude"
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void usage()
+static void usage()
{
logmsg(WHO, 100, USAGE, "newinclude list");
}
@@ -45,12 +44,12 @@ char tmpbuf[1024];
buffer bt;
-void readerr()
+static void readerr()
{
logmsg(WHO, 111, FATAL, B("unable to read: ", fnlist));
}
-void writeerr()
+static void writeerr()
{
logmsg(WHO, 111, FATAL, B("unable to write to ", fntmp));
}
@@ -60,8 +59,7 @@ static void out(char *s, int len)
if (buffer_put(&bt, s, len) == -1) writeerr();
}
-void doincl(buf, len) char *buf;
-int len;
+static void doincl(char *buf, int len)
{
if (!len) logmsg(WHO, 111, FATAL, "empty :include: filenames not permitted");
if (byte_chr(buf, len, '\n') != len)
@@ -73,8 +71,7 @@ int len;
out("", 1);
}
-void dorecip(buf, len) char *buf;
-int len;
+static void dorecip(char *buf, int len)
{
if (!len) logmsg(WHO, 111, FATAL, "empty recipient addresses not permitted");
if (byte_chr(buf, len, '\n') != len)
@@ -90,7 +87,7 @@ int len;
}
-void die_control()
+static void die_control()
{
logmsg(WHO, 111, FATAL, "unable to read controls");
}
@@ -100,7 +97,7 @@ stralloc defaulthost = {0};
stralloc defaultdomain = {0};
stralloc plusdomain = {0};
-void readcontrols()
+static void readcontrols()
{
int r;
int fddir;
@@ -148,7 +145,7 @@ token822_alloc toks = {0};
token822_alloc tokaddr = {0};
stralloc address = {0};
-void gotincl()
+static void gotincl()
{
token822_reverse(&tokaddr);
if (token822_unquote(&address, &tokaddr) != 1) nomem();
@@ -156,7 +153,7 @@ void gotincl()
doincl(address.s, address.len);
}
-void gotaddr()
+static void gotaddr()
{
int i;
int j;
@@ -209,13 +206,13 @@ void gotaddr()
stralloc line = {0};
int match;
-void parseerr()
+static void parseerr()
{
if (!stralloc_0(&line)) nomem();
logmsg(WHO, 111, FATAL, B("unable to parse this line: ", line.s));
}
-void parseline()
+static void parseline()
{
int wordok;
struct token822 *t;
diff --git a/src/preline.c b/src/preline.c
index 2a0b8c4..b80142e 100644
--- a/src/preline.c
+++ b/src/preline.c
@@ -11,7 +11,7 @@
#define WHO "preline"
-void die_usage()
+static void die_usage()
{
logmsg(WHO, 100, USAGE, "preline cmd [ arg ... ]");
}
diff --git a/src/printforward.c b/src/printforward.c
index ae5d26c..130bb03 100644
--- a/src/printforward.c
+++ b/src/printforward.c
@@ -7,17 +7,17 @@
#define WHO "printmaillist"
-void badformat()
+static void badformat()
{
logmsg(WHO, 100, FATAL, "bad database format");
}
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void getch(char *ch)
+static void getch(char *ch)
{
int r;
r = buffer_get(buffer_0small, ch, 1);
@@ -25,17 +25,17 @@ void getch(char *ch)
if (r == 0) badformat();
}
-void out(char *ch)
+static void out(char *ch)
{
if (buffer_put(buffer_1small, ch, 1) == -1) logmsg(WHO, 111, FATAL, "unable to write output");
}
-void printbuf(char *buf)
+static void printbuf(char *buf)
{
while (*buf) out(buf++);
}
-void printsafe(char *buf, int len)
+static void printsafe(char *buf, int len)
{
char ch;
diff --git a/src/printmaillist.c b/src/printmaillist.c
index 8de8b69..3bd109c 100644
--- a/src/printmaillist.c
+++ b/src/printmaillist.c
@@ -8,7 +8,7 @@
#define WHO "printmaillist"
-void badformat()
+static void badformat()
{
logmsg(WHO, 100, FATAL, "bad mailing list format");
}
diff --git a/src/prot.c b/src/prot.c
index aa685c4..6a15d2e 100644
--- a/src/prot.c
+++ b/src/prot.c
@@ -1,6 +1,13 @@
#include "prot.h"
-#include "hasshsgr.h"
+#include <grp.h>
+#include <unistd.h>
+
+#ifdef USE_CONFIG
+ #include "fehsqm-config.h"
+#else
+ #include "hasshsgr.h"
+#endif
/* XXX: there are more portability problems here waiting to leap out at me */
diff --git a/src/qbiff.c b/src/qbiff.c
index 25d1ae5..36dce84 100644
--- a/src/qbiff.c
+++ b/src/qbiff.c
@@ -52,18 +52,18 @@ stralloc woof = {0};
stralloc tofrom = {0};
stralloc text = {0};
-void doit(char *s, int n)
+static void doit(char *s, int n)
{
if (!stralloc_catb(&text, s, n)) _exit(0);
if (text.len > 78) text.len = 78;
}
-void dobody(stralloc *h)
+static void dobody(stralloc *h)
{
doit(h->s, h->len);
}
-void doheader(stralloc *h)
+static void doheader(stralloc *h)
{
int i;
@@ -73,7 +73,7 @@ void doheader(stralloc *h)
}
}
-void finishheader() {}
+static void finishheader() {}
int main()
{
diff --git a/src/qmail-authuser.c b/src/qmail-authuser.c
index ce18a19..1f31df6 100644
--- a/src/qmail-authuser.c
+++ b/src/qmail-authuser.c
@@ -1,7 +1,7 @@
#include <pwd.h>
#include <unistd.h>
-#include <stdio.h>
+#include <errno.h>
#include <crypt.h>
@@ -9,13 +9,9 @@
#include "byte.h"
#include "case.h"
#include "constmap.h"
-#include "error.h"
#include "fd.h"
-#include "fmt.h"
-#include "open.h"
#include "pathexec.h"
#include "prot.h"
-#include "scan.h"
#include "sig.h"
#include "str.h"
#include "stralloc.h"
@@ -86,7 +82,7 @@ stralloc shell = {0};
cram-md5/apop: (1,5)
*/
-void exit(int fail)
+static void exit(int fail)
{
int i;
@@ -94,7 +90,7 @@ void exit(int fail)
_exit(fail);
}
-int dig_ascii(char *digascii, const char *digest, const int len)
+static int dig_ascii(char *digascii, const char *digest, const int len)
{
static const char hextab[] = "0123456789abcdef";
int j;
@@ -108,7 +104,7 @@ int dig_ascii(char *digascii, const char *digest, const int len)
return (2 * j); // 2*len
}
-int auth_sha1(char *pwdhash, char *response)
+static int auth_sha1(char *pwdhash, char *response)
{
unsigned char digest[20];
unsigned char digascii[41];
@@ -119,7 +115,7 @@ int auth_sha1(char *pwdhash, char *response)
return str_diffn(digascii, pwdhash, 40);
}
-int auth_sha256(char *pwdhash, char *response)
+static int auth_sha256(char *pwdhash, char *response)
{
unsigned char digest[32];
unsigned char digascii[65];
@@ -130,7 +126,7 @@ int auth_sha256(char *pwdhash, char *response)
return str_diffn(digascii, pwdhash, 64);
}
-int auth_md5(char *pwdhash, char *response)
+static int auth_md5(char *pwdhash, char *response)
{
MD5_CTX ctx;
unsigned char digest[16];
@@ -144,7 +140,7 @@ int auth_md5(char *pwdhash, char *response)
return str_diffn(digascii, pwdhash, 32);
}
-int auth_hash(char *password, char *response)
+static int auth_hash(char *password, char *response)
{
switch (str_len(password)) {
case 32: return auth_md5(password, response);
@@ -154,7 +150,7 @@ int auth_hash(char *password, char *response)
}
}
-int auth_unix(char *user, char *response)
+static int auth_unix(char *user, char *response)
{
char *encrypted = 0;
char *stored = 0;
@@ -199,7 +195,7 @@ int auth_unix(char *user, char *response)
return r;
}
-int auth_apop(unsigned char *password, unsigned char *response, unsigned char *challenge)
+static int auth_apop(unsigned char *password, unsigned char *response, unsigned char *challenge)
{
MD5_CTX context;
unsigned char digest[16];
@@ -214,7 +210,7 @@ int auth_apop(unsigned char *password, unsigned char *response, unsigned char *c
return (str_diff(digascii, response));
}
-int auth_cram(unsigned char *password, unsigned char *response, unsigned char *challenge)
+static int auth_cram(unsigned char *password, unsigned char *response, unsigned char *challenge)
{
unsigned char digest[16];
unsigned char digascii[33];
@@ -225,7 +221,7 @@ int auth_cram(unsigned char *password, unsigned char *response, unsigned char *c
return (str_diff(digascii, response) && str_diff(password, response));
}
-int auth_dovecot(char *user, char *response, char *socket, char *service)
+static int auth_dovecot(char *user, char *response, char *socket, char *service)
{
int wstat;
int child;
@@ -261,7 +257,7 @@ int auth_dovecot(char *user, char *response, char *socket, char *service)
return wait_exitcode(wstat);
}
-int auth_wrapper(char *pam, char *arg1, char *arg2, char *auth, int len)
+static int auth_wrapper(char *pam, char *arg1, char *arg2, char *auth, int len)
{
int wstat;
int child;
diff --git a/src/qmail-badloadertypes.c b/src/qmail-badloadertypes.c
index b8feba7..84e5b51 100644
--- a/src/qmail-badloadertypes.c
+++ b/src/qmail-badloadertypes.c
@@ -21,12 +21,12 @@
#define WHO "qmail-badloadertypes"
#define LOADER_LEN 5
-void die_read()
+static void die_read()
{
logmsg(WHO, 111, FATAL, "unable to read control/badloadertypes");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 111, FATAL, "unable to write to control/badloadertypes.tmp");
}
diff --git a/src/qmail-badmimetypes.c b/src/qmail-badmimetypes.c
index c2298e8..c32218e 100644
--- a/src/qmail-badmimetypes.c
+++ b/src/qmail-badmimetypes.c
@@ -20,12 +20,12 @@
#define WHO "qmail-badmimetypes"
#define MIMETYPE_LEN 9
-void die_read()
+static void die_read()
{
logmsg(WHO, 111, FATAL, "unable to read control/badmimetypes");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 111, FATAL, "unable to write to control/badmimetypes.tmp");
}
diff --git a/src/qmail-clean.c b/src/qmail-clean.c
index 3e4d74e..041a90f 100644
--- a/src/qmail-clean.c
+++ b/src/qmail-clean.c
@@ -27,7 +27,7 @@
stralloc line = {0};
-void cleanuppid()
+static void cleanuppid()
{
DIR *dir;
direntry *d;
@@ -53,7 +53,7 @@ void cleanuppid()
char fnbuf[FMTQFN];
-void respond(char *s)
+static void respond(char *s)
{
if (buffer_putflush(buffer_1small, s, 1) == -1) _exit(100);
}
diff --git a/src/qmail-dksign.c b/src/qmail-dksign.c
index 50d1394..e94a561 100644
--- a/src/qmail-dksign.c
+++ b/src/qmail-dksign.c
@@ -65,33 +65,33 @@ buffer bi = BUFFER_INIT(read, 0, bufin, sizeof(bufin));
char bufout[1000];
buffer bo = BUFFER_INIT(write, 1, bufout, sizeof(bufout));
-void die(int e)
+static void die(int e)
{
_exit(e);
}
-void die_write(char *fn)
+static void die_write(char *fn)
{
unlink(fn);
die(53);
}
-void die_read()
+static void die_read()
{
die(54);
}
-void out(char *s)
+static void out(char *s)
{
if (buffer_puts(&bo, s) == -1) _exit(111);
}
-void zero()
+static void zero()
{
if (buffer_put(&bo, "\0", 1) == -1) _exit(111);
}
-void zerodie()
+static void zerodie()
{
zero();
buffer_flush(&bo);
@@ -111,19 +111,19 @@ stralloc ecckey = {0};
stralloc rsakey = {0};
char *dkimparams = 0;
-void temp_nomem()
+static void temp_nomem()
{
out("ZOut of memory. (#4.3.0)\n");
zerodie();
}
-void temp_chdir()
+static void temp_chdir()
{
out("ZUnable to switch to target directory. (#4.3.0)\n");
zerodie();
}
-void temp_create()
+static void temp_create()
{
out("ZUnable to create DKIM stage file: ");
out(error_str(errno));
@@ -132,31 +132,31 @@ void temp_create()
zerodie();
}
-void temp_unlink()
+static void temp_unlink()
{
out("ZUnable to unlink DKIM stage file. (#4.3.0)\n");
zerodie();
}
-void temp_control()
+static void temp_control()
{
out("ZUnable to read DKIM control files. (#4.3.0)\n");
zerodie();
}
-void perm_usage()
+static void perm_usage()
{
out("Zqmail-dksign was invoked improperly. (#5.3.5)\n");
zerodie();
}
-void temp_read()
+static void temp_read()
{
out("DUnable to read message for DKIM signing. (#4.3.0)\n");
zerodie();
}
-void temp_nosignkey()
+static void temp_nosignkey()
{
out("DCan't read sign key: ");
out(rsakey.s);
@@ -166,7 +166,7 @@ void temp_nosignkey()
zerodie();
}
-int get_controls()
+static int get_controls()
{
int i;
stralloc domname = {0};
@@ -225,14 +225,14 @@ int get_controls()
return 0;
}
-void fnmake_dkim(unsigned long id)
+static void fnmake_dkim(unsigned long id)
{
fndkin.len = fmtqfn(fndkin.s, "queue/dkim/", id, 1);
id += id;
fndkout.len = fmtqfn(fndkout.s, "queue/dkim/", id, 1);
}
-void dkim_unlink()
+static void dkim_unlink()
{
if (unlink(fndkin.s) == -1)
if (errno != ENOENT) temp_unlink();
@@ -240,7 +240,7 @@ void dkim_unlink()
if (errno != ENOENT) temp_unlink();
}
-void dkim_stage()
+static void dkim_stage()
{
int r;
int fd;
@@ -307,7 +307,7 @@ stralloc length = {0}; // -l
-z<hash> - set signature type (1=sha1, 2=sha256, 3=both, 4=ed25519, 5=hybrid)
*/
-int dkim_sign(const char *rsakeyfile, const char *ecckeyfile, const char *fnin, const char *fnout)
+static int dkim_sign(const char *rsakeyfile, const char *ecckeyfile, const char *fnin, const char *fnout)
{
int child;
int wstat;
@@ -379,7 +379,7 @@ int dkim_sign(const char *rsakeyfile, const char *ecckeyfile, const char *fnin,
}
}
-int qmail_remote(char **qargs, int fd)
+static int qmail_remote(char **qargs, int fd)
{
int child;
int wstat;
@@ -410,7 +410,7 @@ int qmail_remote(char **qargs, int fd)
}
}
-void dkim_setup()
+static void dkim_setup()
{
int c, i, j, k, l;
char *opt, *pos;
diff --git a/src/qmail-dkverify.c b/src/qmail-dkverify.c
index 0438f58..cb123db 100644
--- a/src/qmail-dkverify.c
+++ b/src/qmail-dkverify.c
@@ -52,82 +52,82 @@ buffer bi = BUFFER_INIT(read, 0, bufin, sizeof(bufin)); // read buffer
char bufout[1024];
buffer bo = BUFFER_INIT(write, 1, bufout, sizeof(bufout)); // output message
-void die(int e)
+static void die(int e)
{
_exit(e);
}
-void die_pipe(char *fn)
+static void die_pipe(char *fn)
{
unlink(fn);
die(53);
}
-void die_write(char *fn)
+static void die_write(char *fn)
{
unlink(fn);
die(53);
}
-void die_read()
+static void die_read()
{
die(54);
}
-void out(char *s)
+static void out(char *s)
{
if (buffer_puts(&bo, s) == -1) _exit(111);
}
-void zero()
+static void zero()
{
if (buffer_put(&bo, "\0", 1) == -1) _exit(111);
}
-void zerodie()
+static void zerodie()
{
zero();
buffer_flush(&bo);
_exit(111);
}
-void temp_nomem()
+static void temp_nomem()
{
out("ZOut of memory. (#4.3.0)\n");
zerodie();
}
-void temp_chdir()
+static void temp_chdir()
{
out("ZUnable to switch to target directory. (#4.3.0)\n");
zerodie();
}
-void temp_create()
+static void temp_create()
{
out("ZUnable to create DKIM stage file. (#4.3.0)\n");
zerodie();
}
-void temp_unlink()
+static void temp_unlink()
{
out("ZUnable to unlink DKIM stage file. (#4.3.0)\n");
zerodie();
}
-void temp_read()
+static void temp_read()
{
out("ZUnable to read message. (#4.3.0)\n");
zerodie();
}
-void temp_socket()
+static void temp_socket()
{
out("ZUnable to crate socket pair. (#4.3.0)\n");
zerodie();
}
-void temp_control()
+static void temp_control()
{
out("ZUnable to read control files. (#4.3.0)\n");
zerodie();
@@ -140,14 +140,14 @@ static stralloc fndkin = {0};
static stralloc fndkout = {0};
static stralloc result = {0};
-void fnmake_dkim(unsigned long id)
+static void fnmake_dkim(unsigned long id)
{
fndkin.len = fmtqfn(fndkin.s, "queue/dkim/", id, 1);
id += id;
fndkout.len = fmtqfn(fndkout.s, "queue/dkim/", id, 1);
}
-void dkim_stage()
+static void dkim_stage()
{
int r;
int fd;
@@ -184,7 +184,7 @@ void dkim_stage()
if (close(fd) == -1) die_write(fndkin.s);
}
-int mess_dkim()
+static int mess_dkim()
{
stralloc line = {0};
int match;
@@ -240,7 +240,7 @@ int mess_dkim()
return r;
}
-int dkim_verify()
+static int dkim_verify()
{
int child;
int wstat;
@@ -269,7 +269,7 @@ int dkim_verify()
}
}
-int dkim_result(const char *me)
+static int dkim_result(const char *me)
{
int max = 64;
int fd;
@@ -314,7 +314,7 @@ int dkim_result(const char *me)
return r;
}
-int qmail_queue()
+static int qmail_queue()
{
int fd;
int r;
@@ -373,7 +373,7 @@ int qmail_queue()
return 0;
}
-void dkim_unlink()
+static void dkim_unlink()
{
if (unlink(fndkin.s) == -1)
if (errno != ENOENT) temp_unlink();
diff --git a/src/qmail-getpw.c b/src/qmail-getpw.c
index 70fe776..e5d03c5 100644
--- a/src/qmail-getpw.c
+++ b/src/qmail-getpw.c
@@ -27,7 +27,7 @@ struct passwd *pw;
char *dash;
char *extension;
-int userext()
+static int userext()
{
char username[GETPW_USERLEN];
struct stat st;
diff --git a/src/qmail-inject.c b/src/qmail-inject.c
index 9b7cca7..bded8dc 100644
--- a/src/qmail-inject.c
+++ b/src/qmail-inject.c
@@ -59,7 +59,7 @@ int flagrh;
int flagqueue;
struct qmail qqt;
-void out(char *s, int len)
+static void out(char *s, int len)
{
if (flagqueue)
qmail_put(&qqt, s, len);
@@ -67,54 +67,54 @@ void out(char *s, int len)
buffer_putflush(buffer_1, s, len);
}
-void outs(char *s)
+static void outs(char *s)
{
out(s, str_len(s));
}
-void perm()
+static void perm()
{
_exit(100);
}
-void temp()
+static void temp()
{
_exit(111);
}
-void die_nomem()
+static void die_nomem()
{
buffer_putsflush(buffer_2, "qmail-inject: fatal: out of memory\n");
temp();
}
-void die_invalid(stralloc *sa)
+static void die_invalid(stralloc *sa)
{
buffer_putsflush(buffer_2, "qmail-inject: fatal: invalid header field: ");
buffer_putflush(buffer_2, sa->s, sa->len);
perm();
}
-void die_qqt()
+static void die_qqt()
{
buffer_putsflush(buffer_2, "qmail-inject: fatal: unable to run qmail-queue\n");
temp();
}
-void die_chdir()
+static void die_chdir()
{
buffer_putsflush(buffer_2, "qmail-inject: fatal: internal bug\n");
temp();
}
-void die_read()
+static void die_read()
{
if (errno == ENOMEM) die_nomem();
buffer_putsflush(buffer_2, "qmail-inject: fatal: read error\n");
temp();
}
-void doordie(stralloc *sa, int r)
+static void doordie(stralloc *sa, int r)
{
if (r == 1) return;
if (r == -1) die_nomem();
@@ -135,7 +135,7 @@ saa hrrlist = {0};
saa reciplist = {0};
int flagresent;
-void exitnicely()
+static void exitnicely()
{
char *qqx;
@@ -186,7 +186,7 @@ void exitnicely()
_exit(0);
}
-void savedh_append(stralloc *h)
+static void savedh_append(stralloc *h)
{
if (!saa_readyplus(&savedh, 1)) die_nomem();
savedh.sa[savedh.len] = sauninit;
@@ -194,7 +194,7 @@ void savedh_append(stralloc *h)
++savedh.len;
}
-void savedh_print()
+static void savedh_print()
{
int i;
@@ -208,14 +208,14 @@ token822_alloc defaulthost = {0};
stralloc plusdomainbuf = {0};
token822_alloc plusdomain = {0};
-void rwroute(token822_alloc *addr)
+static void rwroute(token822_alloc *addr)
{
if (addr->t[addr->len - 1].type == TOKEN822_AT)
while (addr->len)
if (addr->t[--addr->len].type == TOKEN822_COLON) return;
}
-void rwextraat(token822_alloc *addr)
+static void rwextraat(token822_alloc *addr)
{
int i;
@@ -225,7 +225,7 @@ void rwextraat(token822_alloc *addr)
}
}
-void rwextradot(token822_alloc *addr)
+static void rwextradot(token822_alloc *addr)
{
int i;
@@ -235,7 +235,7 @@ void rwextradot(token822_alloc *addr)
}
}
-void rwnoat(token822_alloc *addr)
+static void rwnoat(token822_alloc *addr)
{
int i;
int shift;
@@ -251,7 +251,7 @@ void rwnoat(token822_alloc *addr)
for (i = 0; i < shift; ++i) addr->t[i] = defaulthost.t[shift - 1 - i];
}
-void rwnodot(token822_alloc *addr)
+static void rwnodot(token822_alloc *addr)
{
int i;
int shift;
@@ -274,7 +274,7 @@ void rwnodot(token822_alloc *addr)
for (i = 0; i < shift; ++i) addr->t[i] = defaultdomain.t[shift - 1 - i];
}
-void rwplus(token822_alloc *addr)
+static void rwplus(token822_alloc *addr)
{
int i;
int shift;
@@ -295,7 +295,7 @@ void rwplus(token822_alloc *addr)
for (i = 0; i < shift; ++i) addr->t[i] = plusdomain.t[shift - 1 - i];
}
-void rwgeneric(token822_alloc *addr)
+static void rwgeneric(token822_alloc *addr)
{
if (!addr->len) return; /* don't rewrite <> */
if (addr->len >= 2)
@@ -315,7 +315,7 @@ void rwgeneric(token822_alloc *addr)
rwnodot(addr);
}
-int setreturn(token822_alloc *addr)
+static int setreturn(token822_alloc *addr)
{
if (!sender.s) {
token822_reverse(addr);
@@ -327,20 +327,20 @@ int setreturn(token822_alloc *addr)
return 1;
}
-int rwreturn(token822_alloc *addr)
+static int rwreturn(token822_alloc *addr)
{
rwgeneric(addr);
setreturn(addr);
return 1;
}
-int rwsender(token822_alloc *addr)
+static int rwsender(token822_alloc *addr)
{
rwgeneric(addr);
return 1;
}
-void rwappend(token822_alloc *addr, saa *xl)
+static void rwappend(token822_alloc *addr, saa *xl)
{
token822_reverse(addr);
if (!saa_readyplus(xl, 1)) die_nomem();
@@ -350,21 +350,21 @@ void rwappend(token822_alloc *addr, saa *xl)
token822_reverse(addr);
}
-int rwhrr(token822_alloc *addr)
+static int rwhrr(token822_alloc *addr)
{
rwgeneric(addr);
rwappend(addr, &hrrlist);
return 1;
}
-int rwhr(token822_alloc *addr)
+static int rwhr(token822_alloc *addr)
{
rwgeneric(addr);
rwappend(addr, &hrlist);
return 1;
}
-int rwtocc(token822_alloc *addr)
+static int rwtocc(token822_alloc *addr)
{
rwgeneric(addr);
rwappend(addr, &hrlist);
@@ -378,7 +378,7 @@ token822_alloc hfin = {0};
token822_alloc hfrewrite = {0};
token822_alloc hfaddr = {0};
-void doheaderfield(stralloc *h)
+static void doheaderfield(stralloc *h)
{
int htype;
int (*rw)() = 0;
@@ -428,7 +428,7 @@ void doheaderfield(stralloc *h)
savedh_append(h);
}
-void dobody(stralloc *h)
+static void dobody(stralloc *h)
{
out(h->s, h->len);
}
@@ -436,7 +436,7 @@ void dobody(stralloc *h)
stralloc torecip = {0};
token822_alloc tr = {0};
-void dorecip(char *s)
+static void dorecip(char *s)
{
if (!quote2(&torecip, s)) die_nomem();
@@ -456,7 +456,7 @@ void dorecip(char *s)
stralloc defaultfrom = {0};
token822_alloc df = {0};
-void defaultfrommake()
+static void defaultfrommake()
{
char *fullname;
fullname = env_get("QMAILNAME");
@@ -518,7 +518,7 @@ token822_alloc drp = {0};
stralloc hackedruser = {0};
char strnum[FMT_ULONG];
-void dodefaultreturnpath()
+static void dodefaultreturnpath()
{
if (!stralloc_copys(&hackedruser, mailruser)) die_nomem();
@@ -564,7 +564,7 @@ int flagmft = 0;
stralloc mft = {0};
struct constmap mapmft;
-void mft_init()
+static void mft_init()
{
char *x;
int r;
@@ -580,7 +580,7 @@ void mft_init()
flagmft = 1;
}
-void finishmft()
+static void finishmft()
{
int i;
static stralloc sa = {0};
@@ -606,7 +606,7 @@ void finishmft()
outs("\n");
}
-void finishheader()
+static void finishheader()
{
flagresent =
htypeseen[H_R_SENDER] || htypeseen[H_R_FROM] || htypeseen[H_R_REPLYTO] || htypeseen[H_R_TO]
@@ -668,7 +668,7 @@ void finishheader()
savedh_print();
}
-void getcontrols()
+static void getcontrols()
{
static stralloc sa = {0};
char *x;
diff --git a/src/qmail-local.c b/src/qmail-local.c
index bbef6f3..ec22fa2 100644
--- a/src/qmail-local.c
+++ b/src/qmail-local.c
@@ -45,42 +45,42 @@
#define WHO "qmail-local"
-void usage()
+static void usage()
{
logmsg(WHO, 100, USAGE, "qmail-local [ -nN ] user homedir local dash ext domain sender aliasempty");
}
-void temp_nomem()
+static void temp_nomem()
{
logmsg(WHO, 111, FATAL, "Out of memory. (#4.3.0)");
}
-void temp_rewind()
+static void temp_rewind()
{
logmsg(WHO, 111, FATAL, "Unable to rewind message. (#4.3.0)");
}
-void temp_childcrashed()
+static void temp_childcrashed()
{
logmsg(WHO, 111, FATAL, "Aack, child crashed. (#4.3.0)");
}
-void temp_fork()
+static void temp_fork()
{
logmsg(WHO, 111, FATAL, B("Unable to fork: ", error_str(errno), ". (#4.3.0)"));
}
-void temp_read()
+static void temp_read()
{
logmsg(WHO, 111, ERROR, B("Unable to read message: ", error_str(errno), ". (#4.3.0)"));
}
-void temp_slowlock()
+static void temp_slowlock()
{
logmsg(WHO, 111, ERROR, "File has been locked for 30 seconds straight. (#4.3.0)");
}
-void temp_qmail(fn) char *fn;
+static void temp_qmail(char *fn)
{
logmsg(WHO, 111, FATAL, B("Unable to open: ", fn, " ", error_str(errno), ". (#4.3.0)"));
}
@@ -117,18 +117,18 @@ char bufout[1024];
char fntmptph[80 + FMT_ULONG * 2];
char fnnewtph[80 + FMT_ULONG * 2];
-void tryunlinktmp()
+static void tryunlinktmp()
{
unlink(fntmptph);
}
-void sigalrm()
+static void sigalrm()
{
tryunlinktmp();
_exit(3);
}
-void maildir_child(char *dir)
+static void maildir_child(char *dir)
{
unsigned long pid;
struct timeval time;
@@ -236,7 +236,7 @@ FAIL:
/* end child process */
-void maildir(char *fn)
+static void maildir(char *fn)
{
int child;
int wstat;
@@ -260,7 +260,7 @@ void maildir(char *fn)
}
}
-void mailfile(char *fn)
+static void mailfile(char *fn)
{
int fd;
buffer bi;
@@ -319,7 +319,7 @@ WRITERRS:
_exit(111);
}
-void mailprogram(char *prog)
+static void mailprogram(char *prog)
{
int child;
char *(args[4]);
@@ -359,7 +359,7 @@ void mailprogram(char *prog)
unsigned long mailforward_qp = 0;
-void mailforward(char **recips)
+static void mailforward(char **recips)
{
struct qmail qqt;
char *qqx;
@@ -388,7 +388,7 @@ void mailforward(char **recips)
logmsg(WHO, *qqx == 'D' ? 100 : 111, ERROR, B("Unable to forward message: ", qqx + 1, "."));
}
-void bouncexf()
+static void bouncexf()
{
int match;
buffer bi;
@@ -407,7 +407,7 @@ void bouncexf()
}
}
-void checkhome()
+static void checkhome()
{
struct stat st;
@@ -422,7 +422,7 @@ void checkhome()
}
}
-int qmeox(char *dashowner)
+static int qmeox(char *dashowner)
{
struct stat st;
@@ -439,7 +439,7 @@ int qmeox(char *dashowner)
return 0;
}
-int qmeexists(int *fd, int *cutable)
+static int qmeexists(int *fd, int *cutable)
{
struct stat st;
@@ -471,7 +471,7 @@ int qmeexists(int *fd, int *cutable)
/* "-/" "a-b-": "-/a-b-" "-/a-b-default" "-/a-default" "-/default" */
/* "-/" "a-b-c": "-/a-b-c" "-/a-b-default" "-/a-default" "-/default" */
-void qmesearch(int *fd, int *cutable)
+static void qmesearch(int *fd, int *cutable)
{
int i;
@@ -512,7 +512,7 @@ char count_buf[FMT_ULONG];
char buflog[256];
buffer bl = BUFFER_INIT(write, 1, buflog, sizeof(buflog));
-void count_print()
+static void count_print()
{
buffer_puts(&bl, "did ");
buffer_put(&bl, count_buf, fmt_ulong(count_buf, count_file));
@@ -530,7 +530,7 @@ void count_print()
buffer_flush(&bl);
}
-void sayit(char *type, char *cmd, int len)
+static void sayit(char *type, char *cmd, int len)
{
buffer_puts(&bl, type);
buffer_put(&bl, cmd, len);
diff --git a/src/qmail-lspawn.c b/src/qmail-lspawn.c
index 57fba4b..cbf402e 100644
--- a/src/qmail-lspawn.c
+++ b/src/qmail-lspawn.c
@@ -15,6 +15,7 @@
#include "wait.h"
#include "qlx.h"
+#include "spawn.h"
#ifdef USE_CONFIG
#include "fehsqm-config.h"
@@ -75,7 +76,7 @@ stralloc wildchars = {0};
static struct cdb c;
-void nughde_get(char *local)
+static void nughde_get(char *local)
{
char *(args[3]);
int pi[2];
diff --git a/src/qmail-mfrules.c b/src/qmail-mfrules.c
index 7ef097c..1e3c367 100644
--- a/src/qmail-mfrules.c
+++ b/src/qmail-mfrules.c
@@ -37,23 +37,23 @@ int match = 1;
struct cdb_make cdb;
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 112, FATAL, "out of memory");
}
-void die_parse()
+static void die_parse()
{
if (!stralloc_0(&line)) die_nomem();
logmsg(WHO, 100, ERROR, B("unable to parse this line: ", line.s));
}
-void die_read()
+static void die_read()
{
logmsg(WHO, 111, ERROR, "unable to read control/mailfromrules");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 111, ERROR, "unable to write to control/mailfromrules.tmp");
}
@@ -61,14 +61,14 @@ void die_write()
char strnum[FMT_ULONG];
stralloc sanum = {0};
-void getnum(char *buf, int len, unsigned long *u)
+static void getnum(char *buf, int len, unsigned long *u)
{
if (!stralloc_copyb(&sanum, buf, len)) die_nomem();
if (!stralloc_0(&sanum)) die_nomem();
if (sanum.s[scan_ulong(sanum.s, u)]) die_parse();
}
-void doaddressdata()
+static void doaddressdata()
{
int i;
int left;
diff --git a/src/qmail-mrtg.c b/src/qmail-mrtg.c
index bcf4d01..96407d9 100644
--- a/src/qmail-mrtg.c
+++ b/src/qmail-mrtg.c
@@ -98,7 +98,7 @@ static void out(int i)
char bufspace[1024];
buffer bi = BUFFER_INIT(read, 0, bufspace, sizeof(bufspace));
-void mrtg_results(char flag)
+static void mrtg_results(char flag)
{
switch (flag) {
case '1':
@@ -188,7 +188,7 @@ void mrtg_results(char flag)
}
}
-void mrtg_sendlog(char *in, char flag)
+static void mrtg_sendlog(char *in, char flag)
{
int i, j, k = 0;
@@ -240,7 +240,7 @@ void mrtg_sendlog(char *in, char flag)
}
}
-void mrtg_smtplog(char *in, char flag)
+static void mrtg_smtplog(char *in, char flag)
{
int i, j, k = 0;
@@ -310,7 +310,7 @@ void mrtg_smtplog(char *in, char flag)
}
}
-void mrtg_pop3log(char *in, char flag)
+static void mrtg_pop3log(char *in, char flag)
{
int i, j = 0;
diff --git a/src/qmail-newmrh.c b/src/qmail-newmrh.c
index b437818..671d50b 100644
--- a/src/qmail-newmrh.c
+++ b/src/qmail-newmrh.c
@@ -20,12 +20,12 @@
#define WHO "qmail-newmrh"
-void die_read()
+static void die_read()
{
logmsg(WHO, 111, ERROR, "unable to read control/morercpthosts");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 111, ERROR, "unable to write to control/morercpthosts.tmp");
}
diff --git a/src/qmail-newu.c b/src/qmail-newu.c
index 953f243..ed68742 100644
--- a/src/qmail-newu.c
+++ b/src/qmail-newu.c
@@ -21,42 +21,42 @@
#define WHO "qmail-newu"
-void die_chdir()
+static void die_chdir()
{
logmsg(WHO, 110, ERROR, "unable to chdir");
}
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "fatal: out of memory");
}
-void die_opena()
+static void die_opena()
{
logmsg(WHO, 112, ERROR, "unable to open users/assign");
}
-void die_reada()
+static void die_reada()
{
logmsg(WHO, 110, ERROR, "unable to read users/assign");
}
-void die_format()
+static void die_format()
{
logmsg(WHO, 112, ERROR, "bad format in users/assign");
}
-void die_opent()
+static void die_opent()
{
logmsg(WHO, 112, ERROR, "unable to open users/assign.cdb.tmp");
}
-void die_writet()
+static void die_writet()
{
logmsg(WHO, 112, ERROR, "unable to write users/assign.cdb.tmp");
}
-void die_rename()
+static void die_rename()
{
logmsg(WHO, 112, ERROR, "unable to move users/cdb.tmp to users/assign.cdb");
}
diff --git a/src/qmail-pop3d.c b/src/qmail-pop3d.c
index 795bedc..7fef483 100644
--- a/src/qmail-pop3d.c
+++ b/src/qmail-pop3d.c
@@ -23,12 +23,12 @@
#define FDIN 0
#define FDOUT 1
-void die()
+static void die()
{
_exit(0);
}
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
r = timeoutread(1200, fd, buf, len);
@@ -36,7 +36,7 @@ ssize_t saferead(int fd, char *buf, int len)
return r;
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = timeoutwrite(1200, fd, buf, len);
@@ -50,22 +50,22 @@ buffer bo = BUFFER_INIT(safewrite, FDOUT, outbuf, sizeof(outbuf));
char inbuf[128];
buffer bi = BUFFER_INIT(saferead, FDIN, inbuf, sizeof(inbuf));
-void out(char *buf, int len)
+static void out(char *buf, int len)
{
buffer_put(&bo, buf, len);
}
-void outs(char *s)
+static void outs(char *s)
{
buffer_puts(&bo, s);
}
-void flush()
+static void flush()
{
buffer_flush(&bo);
}
-void err(char *s)
+static void err(char *s)
{
outs("-ERR ");
outs(s);
@@ -73,66 +73,66 @@ void err(char *s)
flush();
}
-void die_nomem()
+static void die_nomem()
{
err("out of memory");
die();
}
-void die_nomaildir()
+static void die_nomaildir()
{
err("this user has no $HOME/Maildir");
die();
}
-void die_scan()
+static void die_scan()
{
err("unable to scan $HOME/Maildir");
die();
}
-void err_syntax()
+static void err_syntax()
{
err("syntax error");
}
-void err_unimpl()
+static void err_unimpl()
{
err("unimplemented");
}
-void err_deleted()
+static void err_deleted()
{
err("already deleted");
}
-void err_nozero()
+static void err_nozero()
{
err("messages are counted from 1");
}
-void err_toobig()
+static void err_toobig()
{
err("not that many messages");
}
-void err_nosuch()
+static void err_nosuch()
{
err("unable to open that message");
}
-void err_nounlink()
+static void err_nounlink()
{
err("unable to unlink all deleted messages");
}
-void okay()
+static void okay()
{
outs("+OK \r\n");
flush();
}
-void printfn(char *fn)
+static void printfn(char *fn)
{
fn += 4;
out(fn, str_chr(fn, ':'));
@@ -141,7 +141,7 @@ void printfn(char *fn)
char strnum[FMT_ULONG];
stralloc line = {0};
-void blast(buffer *bf, unsigned long limit)
+static void blast(buffer *bf, unsigned long limit)
{
int match;
int inheaders = 1;
@@ -178,7 +178,7 @@ struct message {
int numm;
int last = 0;
-void getlist()
+static void getlist()
{
struct prioq_elt pe;
struct stat st;
@@ -206,7 +206,7 @@ void getlist()
}
}
-void pop3_stat()
+static void pop3_stat()
{
int i;
unsigned long total;
@@ -223,7 +223,7 @@ void pop3_stat()
flush();
}
-void pop3_rset()
+static void pop3_rset()
{
int i;
@@ -232,7 +232,7 @@ void pop3_rset()
okay();
}
-void pop3_last()
+static void pop3_last()
{
outs("+OK ");
out(strnum, fmt_uint(strnum, last));
@@ -240,7 +240,7 @@ void pop3_last()
flush();
}
-void pop3_quit()
+static void pop3_quit()
{
int i;
@@ -261,7 +261,7 @@ void pop3_quit()
die();
}
-int msgno(char *arg)
+static int msgno(char *arg)
{
unsigned long u;
@@ -285,7 +285,7 @@ int msgno(char *arg)
return u;
}
-void pop3_dele(char *arg)
+static void pop3_dele(char *arg)
{
int i;
@@ -296,7 +296,7 @@ void pop3_dele(char *arg)
okay();
}
-void list(int i, int flaguidl)
+static void list(int i, int flaguidl)
{
out(strnum, fmt_uint(strnum, i + 1));
outs(" ");
@@ -307,7 +307,7 @@ void list(int i, int flaguidl)
outs("\r\n");
}
-void dolisting(char *arg, int flaguidl)
+static void dolisting(char *arg, int flaguidl)
{
unsigned int i;
@@ -326,12 +326,12 @@ void dolisting(char *arg, int flaguidl)
flush();
}
-void pop3_uidl(char *arg)
+static void pop3_uidl(char *arg)
{
dolisting(arg, 1);
}
-void pop3_list(char *arg)
+static void pop3_list(char *arg)
{
dolisting(arg, 0);
}
@@ -339,7 +339,7 @@ void pop3_list(char *arg)
char msgbuf[1024];
buffer bm;
-void pop3_top(char *arg)
+static void pop3_top(char *arg)
{
int i;
unsigned long limit;
diff --git a/src/qmail-popup.c b/src/qmail-popup.c
index e94e9a7..c8ee5a4 100644
--- a/src/qmail-popup.c
+++ b/src/qmail-popup.c
@@ -26,12 +26,12 @@
#define FDAUTH 3
#define FDLOG 5
-void die()
+static void die()
{
_exit(1);
}
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
r = timeoutread(1200, fd, buf, len);
@@ -39,7 +39,7 @@ ssize_t saferead(int fd, char *buf, int len)
return r;
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = timeoutwrite(1200, fd, buf, len);
@@ -53,17 +53,17 @@ buffer bo = BUFFER_INIT(safewrite, FDOUT, outbuf, sizeof(outbuf));
char inbuf[128];
buffer bi = BUFFER_INIT(saferead, FDIN, inbuf, sizeof(inbuf));
-void outs(char *s)
+static void outs(char *s)
{
buffer_puts(&bo, s);
}
-void flush()
+static void flush()
{
buffer_flush(&bo);
}
-void err(char *s)
+static void err(char *s)
{
outs("-ERR ");
outs(s);
@@ -83,18 +83,18 @@ char strnum[FMT_ULONG];
char logbuf[512];
buffer bl = BUFFER_INIT(safewrite, FDLOG, logbuf, sizeof(logbuf));
-void logs(char *s)
+static void logs(char *s)
{
if (buffer_puts(&bl, s) == -1) _exit(1);
}
-void logp(char *s)
+static void logp(char *s)
{
logs(" P:");
logs(s);
}
-void logh(char *s1, char *s2)
+static void logh(char *s1, char *s2)
{
logs(" S:");
logs(s1);
@@ -102,20 +102,20 @@ void logh(char *s1, char *s2)
logs(s2);
}
-void logu(char *s)
+static void logu(char *s)
{
logs(" ?~ '");
logs(s);
logs("'");
}
-void logn(char *s)
+static void logn(char *s)
{
if (buffer_puts(&bl, s) == -1) _exit(1);
if (buffer_flush(&bl) == -1) _exit(1);
}
-void logpid()
+static void logpid()
{
strnum[fmt_ulong(strnum, getpid())] = 0;
logs("qmail-popup: pid ");
@@ -123,7 +123,7 @@ void logpid()
logs(" ");
}
-void log_pop(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6)
+static void log_pop(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6)
{
logpid();
logs(s1);
@@ -132,87 +132,87 @@ void log_pop(char *s1, char *s2, char *s3, char *s4, char *s5, char *s6)
logh(s4, s5), logu(s6), logn("\n");
}
-void die_usage()
+static void die_usage()
{
err("usage: popup hostname subprogram");
die();
}
-void die_nomem()
+static void die_nomem()
{
err("out of memory");
die();
}
-void die_pipe()
+static void die_pipe()
{
err("unable to open pipe");
die();
}
-void die_write()
+static void die_write()
{
err("unable to write pipe");
die();
}
-void die_fork()
+static void die_fork()
{
err("unable to fork");
die();
}
-void die_childcrashed()
+static void die_childcrashed()
{
err("aack, child crashed");
}
-void die_badauth()
+static void die_badauth()
{
err("authorization failed");
}
-void die_tls()
+static void die_tls()
{
err("TLS startup failed");
die();
}
-void die_notls()
+static void die_notls()
{
err("TLS required but not negotiated");
log_pop("Reject::STLS::", "Any", "POP3", remoteip, remotehost, "unknown");
die();
}
-void err_syntax()
+static void err_syntax()
{
err("syntax error");
}
-void err_wantuser()
+static void err_wantuser()
{
err("USER first");
}
-void err_authoriz()
+static void err_authoriz()
{
err("authorization first");
}
-void okay()
+static void okay()
{
outs("+OK \r\n");
flush();
}
-void pop3_quit()
+static void pop3_quit()
{
okay();
die();
}
-void poplog_init()
+static void poplog_init()
{
if (!stralloc_copys(&protocol, "POP3")) die_nomem();
localport = env_get("TCP6LOCALPORT");
@@ -240,7 +240,7 @@ int stls = 0;
int seenstls = 0;
int apop = 0;
-void doanddie(char *user, unsigned int userlen, char *pass) /* userlen: including 0 byte */
+static void doanddie(char *user, unsigned int userlen, char *pass) /* userlen: including 0 byte */
{
int child;
int wstat;
@@ -283,7 +283,7 @@ void doanddie(char *user, unsigned int userlen, char *pass) /* userlen: includin
die();
}
-void pop3_greet()
+static void pop3_greet()
{
char *s;
s = unique;
@@ -304,7 +304,7 @@ void pop3_greet()
flush();
}
-void pop3_user(char *arg)
+static void pop3_user(char *arg)
{
if (stls == 2 && !seenstls) die_notls();
if (!*arg) {
@@ -317,7 +317,7 @@ void pop3_user(char *arg)
if (!stralloc_0(&username)) die_nomem();
}
-void pop3_pass(char *arg)
+static void pop3_pass(char *arg)
{
if (!seenuser) {
err_wantuser();
@@ -331,7 +331,7 @@ void pop3_pass(char *arg)
doanddie(username.s, username.len, arg);
}
-void pop3_apop(char *arg)
+static void pop3_apop(char *arg)
{
char *space;
@@ -346,7 +346,7 @@ void pop3_apop(char *arg)
doanddie(arg, space - arg, space);
}
-void pop3_capa(char *arg)
+static void pop3_capa(char *arg)
{
outs("+OK capability list follows\r\n");
outs("TOP\r\n");
@@ -358,7 +358,7 @@ void pop3_capa(char *arg)
flush();
}
-void pop3_stls(char *arg)
+static void pop3_stls(char *arg)
{
if (stls == 0 || seenstls == 1) return err("STLS not available");
outs("+OK starting TLS negotiation\r\n");
diff --git a/src/qmail-pw2u.c b/src/qmail-pw2u.c
index 1ed7568..948270c 100644
--- a/src/qmail-pw2u.c
+++ b/src/qmail-pw2u.c
@@ -27,37 +27,37 @@
#define WHO "qmail-pw2u"
-void die_chdir()
+static void die_chdir()
{
buffer_putsflush(buffer_2, "qmail-pw2u: fatal: unable to chdir\n");
_exit(111);
}
-void die_nomem()
+static void die_nomem()
{
buffer_putsflush(buffer_2, "qmail-pw2u: fatal: out of memory\n");
_exit(111);
}
-void die_read()
+static void die_read()
{
buffer_putsflush(buffer_2, "qmail-pw2u: fatal: unable to read input\n");
_exit(111);
}
-void die_write()
+static void die_write()
{
buffer_putsflush(buffer_2, "qmail-pw2u: fatal: unable to write output\n");
_exit(111);
}
-void die_control()
+static void die_control()
{
buffer_putsflush(buffer_2, "qmail-pw2u: fatal: unable to read controls\n");
_exit(111);
}
-void die_alias()
+static void die_alias()
{
buffer_puts(buffer_2, "qmail-pw2u: fatal: unable to find ");
buffer_puts(buffer_2, auto_usera);
@@ -66,7 +66,7 @@ void die_alias()
_exit(111);
}
-void die_home(char *fn)
+static void die_home(char *fn)
{
buffer_puts(buffer_2, "qmail-pw2u: fatal: unable to stat ");
buffer_puts(buffer_2, fn);
@@ -75,7 +75,7 @@ void die_home(char *fn)
_exit(111);
}
-void die_user(char *s, unsigned int len)
+static void die_user(char *s, unsigned int len)
{
buffer_puts(buffer_2, "qmail-pw2u: fatal: unable to find ");
buffer_put(buffer_2, s, len);
@@ -114,7 +114,7 @@ unsigned long uid;
stralloc line = {0};
-void doaccount()
+static void doaccount()
{
struct stat st;
int i;
@@ -234,7 +234,7 @@ void doaccount()
stralloc sub = {0};
-void dosubuser()
+static void dosubuser()
{
int i;
char *x;
diff --git a/src/qmail-qmaint.c b/src/qmail-qmaint.c
index c0dac40..2c6e23a 100644
--- a/src/qmail-qmaint.c
+++ b/src/qmail-qmaint.c
@@ -57,22 +57,22 @@ int qmailr_uid;
int qmail_gid;
int split_num;
-void die_make(char *name)
+static void die_make(char *name)
{
logmsg(WHO, 111, ERROR, B("Failed to make: ", name));
}
-void die_user(char *user)
+static void die_user(char *user)
{
logmsg(WHO, 111, ERROR, B("Failed to determine uid of: ", user));
}
-void die_group(char *group)
+static void die_group(char *group)
{
logmsg(WHO, 111, ERROR, B("Failed to determine gid of: ", group));
}
-void die_check()
+static void die_check()
{
logmsg(
WHO,
@@ -82,7 +82,7 @@ void die_check()
"permission to access it.");
}
-void die_recon()
+static void die_recon()
{
logmsg(
WHO,
@@ -91,14 +91,14 @@ void die_recon()
"Failed to reconstruct queue. \nEnsure the queue exists and you have permission to modify it.");
}
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 110, ERROR, "Out of memory.");
}
/*returns 1==yes, 0==no*/
-int confirm()
+static int confirm()
{
int match;
@@ -122,7 +122,7 @@ int confirm()
logmsg(WHO, 0, WARN, B("It looks like ownerships are wrong for ", name, " should I fix them? (Y/n)"))
#define COWNER logmsg(WHO, 0, WARN, B("Changing ownership: ", name, " => ", unum, "/", gnum))
-int check_item(char *name, int uid, int gid, int perm, char type, int size)
+static int check_item(char *name, int uid, int gid, int perm, char type, int size)
{
struct stat st;
int fd;
@@ -290,7 +290,7 @@ int check_item(char *name, int uid, int gid, int perm, char type, int size)
return 0;
}
-int check_files(char *directory, int uid, int gid, int perm)
+static int check_files(char *directory, int uid, int gid, int perm)
{
DIR *dir;
direntry *d;
@@ -313,7 +313,7 @@ int check_files(char *directory, int uid, int gid, int perm)
return 0;
}
-void warn_files(char *directory)
+static void warn_files(char *directory)
{
DIR *dir;
direntry *d;
@@ -340,7 +340,8 @@ void warn_files(char *directory)
" that shouldn't be there. I will not remove them. You should consider checking it out."));
}
-int check_splits(char *directory, int dir_uid, int dir_gid, int dir_perm, int file_gid, int file_perm)
+static int check_splits(
+ char *directory, int dir_uid, int dir_gid, int dir_perm, int file_gid, int file_perm)
{
DIR *dir;
direntry *d;
@@ -376,7 +377,7 @@ int check_splits(char *directory, int dir_uid, int dir_gid, int dir_perm, int fi
return 0;
}
-int rename_mess(char *dir, char *part, char *new_part, char *old_filename, char *new_filename)
+static int rename_mess(char *dir, char *part, char *new_part, char *old_filename, char *new_filename)
{
if (flag_interactive && !flag_namefix) {
@@ -409,7 +410,7 @@ int rename_mess(char *dir, char *part, char *new_part, char *old_filename, char
return 0;
}
-int fix_part(char *part)
+static int fix_part(char *part)
{
DIR *dir;
direntry *d;
@@ -486,7 +487,7 @@ int fix_part(char *part)
return 0;
}
-int fix_names()
+static int fix_names()
{
int i;
@@ -502,7 +503,7 @@ int fix_names()
return 0;
}
-int check_dirs()
+static int check_dirs()
{
/*check root existence*/
if (!stralloc_copy(&check_dir, &queue_dir)) die_nomem();
@@ -594,61 +595,61 @@ int check_dirs()
stralloc fn = {0};
-void fnmake_init()
+static void fnmake_init()
{
while (!stralloc_ready(&fn, FMTQFN)) die_nomem();
}
-void fnmake_local(unsigned long id)
+static void fnmake_local(unsigned long id)
{
fn.len = fmtqfn(fn.s, "local/", id, 1);
}
-void fnmake_remote(unsigned long id)
+static void fnmake_remote(unsigned long id)
{
fn.len = fmtqfn(fn.s, "remote/", id, 1);
}
-void fnmake_mess(unsigned long id)
+static void fnmake_mess(unsigned long id)
{
fn.len = fmtqfn(fn.s, "mess/", id, 1);
}
-void fnmake_dkim(unsigned long id)
+static void fnmake_dkim(unsigned long id)
{
fn.len = fmtqfn(fn.s, "dkim/", id, 1);
}
-void fnmake_info(unsigned long id)
+static void fnmake_info(unsigned long id)
{
fn.len = fmtqfn(fn.s, "info/", id, 1);
}
-void fnmake_bounce(unsigned long id)
+static void fnmake_bounce(unsigned long id)
{
fn.len = fmtqfn(fn.s, "bounce/", id, 0);
}
-void warn_unlink(unsigned long id)
+static void warn_unlink(unsigned long id)
{
char foo[FMT_ULONG];
foo[fmt_ulong(foo, id)] = 0;
logmsg(WHO, 99, WARN, B("no such file to unlink #", foo));
}
-void err_unlink(unsigned long id)
+static void err_unlink(unsigned long id)
{
char foo[FMT_ULONG];
foo[fmt_ulong(foo, id)] = 0;
logmsg(WHO, 100, ERROR, B("trouble with unlinking #", foo));
}
-void err_chdir()
+static void err_chdir()
{
logmsg(WHO, 110, FATAL, "unable to chdir");
}
-int delete_msg(unsigned long id)
+static int delete_msg(unsigned long id)
{
struct stat st;
int bounce = 1;
diff --git a/src/qmail-qmqpc.c b/src/qmail-qmqpc.c
index 7ee80d7..ad14ce3 100644
--- a/src/qmail-qmqpc.c
+++ b/src/qmail-qmqpc.c
@@ -29,53 +29,53 @@
#define PORT_QMQP 628
-void die_success()
+static void die_success()
{
_exit(0);
}
-void die_perm()
+static void die_perm()
{
_exit(31);
}
-void nomem()
+static void nomem()
{
_exit(51);
}
-void die_read()
+static void die_read()
{
if (errno == ENOMEM) nomem();
_exit(54);
}
-void die_control()
+static void die_control()
{
_exit(55);
}
-void die_socket()
+static void die_socket()
{
_exit(56);
}
-void die_home()
+static void die_home()
{
_exit(61);
}
-void die_temp()
+static void die_temp()
{
_exit(71);
}
-void die_conn()
+static void die_conn()
{
_exit(74);
}
-void die_format()
+static void die_format()
{
_exit(91);
}
@@ -83,7 +83,7 @@ void die_format()
int lasterror = 55;
int qmqpfd;
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
r = timeoutread(60, qmqpfd, buf, len);
@@ -91,7 +91,7 @@ ssize_t saferead(int fd, char *buf, int len)
return r;
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = timeoutwrite(60, qmqpfd, buf, len);
@@ -112,7 +112,7 @@ stralloc aftermessage = {0};
char strnum[FMT_ULONG];
stralloc line = {0};
-void getmess()
+static void getmess()
{
int match;
@@ -148,7 +148,7 @@ void getmess()
}
}
-void doit(char *server)
+static void doit(char *server)
{
struct ip4_address ip4s;
struct ip6_address ip6s;
diff --git a/src/qmail-qmqpd.c b/src/qmail-qmqpd.c
index 7aa5e73..9a81fb1 100644
--- a/src/qmail-qmqpd.c
+++ b/src/qmail-qmqpd.c
@@ -22,12 +22,12 @@
#define PORT_QMQP "628"
-void resources()
+static void resources()
{
_exit(111);
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = write(fd, buf, len);
@@ -35,7 +35,7 @@ ssize_t safewrite(int fd, char *buf, int len)
return r;
}
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
r = read(fd, buf, len);
@@ -50,13 +50,13 @@ buffer bo = BUFFER_INIT(safewrite, 1, outbuf, sizeof(outbuf));
unsigned long bytesleft = 100;
-void getbyte(char *ch)
+static void getbyte(char *ch)
{
if (!bytesleft--) _exit(100);
buffer_get(&bi, ch, 1);
}
-unsigned long getlen()
+static unsigned long getlen()
{
unsigned long len = 0;
char ch;
@@ -69,7 +69,7 @@ unsigned long getlen()
}
}
-void getcomma()
+static void getcomma()
{
char ch;
getbyte(&ch);
@@ -78,7 +78,7 @@ void getcomma()
struct qmail qq;
-void identify()
+static void identify()
{
char *remotehost;
char *remoteinfo;
@@ -110,7 +110,7 @@ void identify()
char buf[1000];
char strnum[FMT_ULONG];
-int getbuf()
+static int getbuf()
{
unsigned long len;
int i;
diff --git a/src/qmail-qmtpd.c b/src/qmail-qmtpd.c
index bb08fcc..4d93f1a 100644
--- a/src/qmail-qmtpd.c
+++ b/src/qmail-qmtpd.c
@@ -30,17 +30,17 @@
/** @file qmail-qmtpd.c -- QMTP/QMTPS server
@brief requires sslserver */
-void badproto()
+static void badproto()
{
_exit(100);
}
-void resources()
+static void resources()
{
_exit(111);
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = write(fd, buf, len);
@@ -51,7 +51,7 @@ ssize_t safewrite(int fd, char *buf, int len)
char outbuf[256];
buffer bo = BUFFER_INIT(safewrite, 1, outbuf, sizeof(outbuf));
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
buffer_flush(&bo);
@@ -63,7 +63,7 @@ ssize_t saferead(int fd, char *buf, int len)
char inbuf[512];
buffer bi = BUFFER_INIT(saferead, 0, inbuf, sizeof(inbuf));
-unsigned long getlen()
+static unsigned long getlen()
{
unsigned long len = 0;
char ch;
@@ -76,7 +76,7 @@ unsigned long getlen()
}
}
-void getcomma()
+static void getcomma()
{
char ch;
buffer_get(&bi, &ch, 1);
@@ -114,7 +114,7 @@ char *dnemail;
int seentls = 0;
-int modssl_info()
+static int modssl_info()
{
tlsversion = env_get("SSL_PROTOCOL");
if (!tlsversion) return 0;
diff --git a/src/qmail-qread.c b/src/qmail-qread.c
index a0925ad..5b2b6e7 100644
--- a/src/qmail-qread.c
+++ b/src/qmail-qread.c
@@ -23,13 +23,13 @@
readsubdir rs;
-void die(int n)
+static void die(int n)
{
buffer_flush(buffer_1);
_exit(n);
}
-void warn(char *s1, char *s2)
+static void warn(char *s1, char *s2)
{
char *x;
x = error_str(errno);
@@ -40,25 +40,25 @@ void warn(char *s1, char *s2)
buffer_puts(buffer_1, "\n");
}
-void die_nomem()
+static void die_nomem()
{
buffer_puts(buffer_1, "fatal: out of memory\n");
die(111);
}
-void die_chdir()
+static void die_chdir()
{
warn("fatal: unable to chdir", "");
die(110);
}
-void die_opendir(fn) char *fn;
+static void die_opendir(char *fn)
{
warn("fatal: unable to opendir ", fn);
die(110);
}
-void err(unsigned long id)
+static void err(unsigned long id)
{
char foo[FMT_ULONG];
foo[fmt_ulong(foo, id)] = 0;
@@ -79,7 +79,7 @@ datetime_sec qtime;
int flagbounce;
unsigned long size;
-unsigned int fmtstats(char *s)
+static unsigned int fmtstats(char *s)
{
struct datetime dt;
unsigned int len;
@@ -122,7 +122,7 @@ unsigned int fmtstats(char *s)
stralloc stats = {0};
-void out(char *s, unsigned int n)
+static void out(char *s, unsigned int n)
{
while (n > 0) {
buffer_put(buffer_1, ((*s >= 32) && (*s <= 126)) ? s : "_", 1);
@@ -131,17 +131,17 @@ void out(char *s, unsigned int n)
}
}
-void outs(char *s)
+static void outs(char *s)
{
out(s, str_len(s));
}
-void outok(char *s)
+static void outok(char *s)
{
buffer_puts(buffer_1, s);
}
-void putstats()
+static void putstats()
{
if (!stralloc_ready(&stats, fmtstats(FMT_LEN))) die_nomem();
stats.len = fmtstats(stats.s);
diff --git a/src/qmail-queue.c b/src/qmail-queue.c
index fe75ffa..9bb0ab1 100644
--- a/src/qmail-queue.c
+++ b/src/qmail-queue.c
@@ -19,7 +19,7 @@
#include "extra.h"
#include "fmtqfn.h"
#include "now.h"
-#include "triggerpull.h"
+#include "trigger.h"
#ifdef USE_CONFIG
#include "fehsqm-config.h"
@@ -51,7 +51,7 @@ int intdfd;
int flagmademess = 0;
int flagmadeintd = 0;
-void cleanup()
+static void cleanup()
{
if (flagmadeintd) {
seek_trunc(intdfd, 0);
@@ -63,35 +63,35 @@ void cleanup()
}
}
-void die(int e)
+static void die(int e)
{
_exit(e);
}
-void die_qhpsi()
+static void die_qhpsi()
{
cleanup();
die(71);
}
-void die_write()
+static void die_write()
{
cleanup();
die(53);
}
-void die_read()
+static void die_read()
{
cleanup();
die(54);
}
-void sigalrm()
+static void sigalrm()
{ /* thou shalt not clean up here */
die(52);
}
-void sigbug()
+static void sigbug()
{
die(81);
}
@@ -144,7 +144,7 @@ static unsigned int receivedfmt(char *s)
return len;
}
-void received_setup()
+static void received_setup()
{
receivedlen = receivedfmt((char *)0);
received = alloc(receivedlen + 1);
@@ -152,7 +152,7 @@ void received_setup()
receivedfmt(received);
}
-unsigned int pidfmt(char *s, unsigned long seq)
+static unsigned int pidfmt(char *s, unsigned long seq)
{
unsigned int i;
unsigned int len;
@@ -182,7 +182,7 @@ unsigned int pidfmt(char *s, unsigned long seq)
return len;
}
-char *fnnum(char *dirslash, int flagsplit)
+static char *fnnum(char *dirslash, int flagsplit)
{
char *s;
@@ -192,7 +192,7 @@ char *fnnum(char *dirslash, int flagsplit)
return s;
}
-void pidopen(void)
+static void pidopen(void)
{
unsigned int len;
unsigned long seq;
@@ -214,7 +214,7 @@ void pidopen(void)
char *qhpsi;
-void qhpsiprog(char *arg)
+static void qhpsiprog(char *arg)
{
int wstat;
int child;
diff --git a/src/qmail-recipients.c b/src/qmail-recipients.c
index 2b5b88e..899948f 100644
--- a/src/qmail-recipients.c
+++ b/src/qmail-recipients.c
@@ -20,12 +20,12 @@
#define WHO "qmail-recipients"
-void die_read()
+static void die_read()
{
logmsg(WHO, 111, ERROR, "unable to read users/recipients");
}
-void die_write()
+static void die_write()
{
logmsg(WHO, 111, ERROR, "unable to write to users/recipients.tmp");
}
diff --git a/src/qmail-remote.c b/src/qmail-remote.c
index 1227b81..c086d14 100644
--- a/src/qmail-remote.c
+++ b/src/qmail-remote.c
@@ -121,7 +121,7 @@ void out(char *s)
if (buffer_puts(&bs, s) == -1) _exit(0);
}
-void zero()
+static void zero()
{
if (buffer_put(&bs, "\0", 1) == -1) _exit(0);
}
@@ -147,7 +147,7 @@ void outsafe(stralloc *sa)
}
}
-void temp_noip()
+static void temp_noip()
{
out("ZInvalid ipaddr in control/domainips (#4.3.0)\n");
zerodie();
@@ -159,13 +159,13 @@ void temp_nomem()
zerodie();
}
-void temp_oserr()
+static void temp_oserr()
{
out("ZSystem resources temporarily unavailable. (#4.3.0)\n");
zerodie();
}
-void temp_osip()
+static void temp_osip()
{
out("ZCan't bind to local ip address: ");
outsafe(&sendip);
@@ -173,7 +173,7 @@ void temp_osip()
zerodie();
}
-void temp_noconn()
+static void temp_noconn()
{
out("ZSorry, I wasn't able to establish an SMTP connection: ");
outsafe(&canonhost);
@@ -181,7 +181,7 @@ void temp_noconn()
zerodie();
}
-void temp_qmtpnoc()
+static void temp_qmtpnoc()
{
out("ZSorry, I wasn't able to establish an QMTP connection: ");
outsafe(&canonhost);
@@ -189,13 +189,13 @@ void temp_qmtpnoc()
zerodie();
}
-void temp_read()
+static void temp_read()
{
out("ZUnable to read message. (#4.3.0)\n");
zerodie();
}
-void temp_dnscanon()
+static void temp_dnscanon()
{
out("ZCNAME lookup failed temporarily for: ");
outsafe(&canonhost);
@@ -203,7 +203,7 @@ void temp_dnscanon()
zerodie();
}
-void temp_dns()
+static void temp_dns()
{
out("ZSorry, I couldn't find any host named: ");
outsafe(&host);
@@ -211,7 +211,7 @@ void temp_dns()
zerodie();
}
-void temp_nomx()
+static void temp_nomx()
{
out("ZSorry, I couldn't find a mail exchanger or IP address for: ");
outsafe(&host);
@@ -219,37 +219,37 @@ void temp_nomx()
zerodie();
}
-void temp_chdir()
+static void temp_chdir()
{
out("ZUnable to switch to home directory. (#4.3.0)\n");
zerodie();
}
-void temp_control()
+static void temp_control()
{
out("ZUnable to read control files. (#4.3.0)\n");
zerodie();
}
-void perm_partialline()
+static void perm_partialline()
{
out("DSMTP cannot transfer messages with partial final lines. (#5.6.2)\n");
zerodie();
}
-void temp_proto()
+static void temp_proto()
{
out("ZRecipient did not talk proper QMTP (#4.3.0)\n");
zerodie();
}
-void perm_usage()
+static void perm_usage()
{
out("Dqmail-remote was invoked improperly. (#5.3.5)\n");
zerodie();
}
-void perm_dns()
+static void perm_dns()
{
out("DSorry, I couldn't find any host named: ");
outsafe(&host);
@@ -257,7 +257,7 @@ void perm_dns()
zerodie();
}
-void perm_nomx()
+static void perm_nomx()
{
out("DSorry, I couldn't find a mail exchanger or IP address for: ");
outsafe(&host);
@@ -265,19 +265,19 @@ void perm_nomx()
zerodie();
}
-void perm_ambigmx()
+static void perm_ambigmx()
{
out("DSorry. Although I'm listed as a best-preference MX or A for that host,\n"
"it isn't in my control/locals file, so I don't treat it as local. (#5.4.6)\n");
zerodie();
}
-void err_authprot()
+static void err_authprot()
{
out("KNo supported AUTH method found, continuing without authentication.\n");
}
-void outhost()
+static void outhost()
{
char ipaddr[IPFMT];
int len;
@@ -291,7 +291,7 @@ void outhost()
int flagcritical = 0;
-void dropped()
+static void dropped()
{
out("ZConnected to ");
outhost();
@@ -305,7 +305,7 @@ long timeoutconnect = 60;
int smtpfd;
long timeout = 1200;
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
if (ssl) {
@@ -318,7 +318,7 @@ ssize_t saferead(int fd, char *buf, int len)
return r;
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
if (ssl) {
@@ -341,7 +341,7 @@ buffer bf = BUFFER_INIT(saferead, -1, frombuf, sizeof(frombuf));
static stralloc smtptext = {0};
static stralloc header = {0};
-void get(char *ch)
+static void get(char *ch)
{
buffer_get(&bf, ch, 1);
if (*ch != '\r')
@@ -349,7 +349,7 @@ void get(char *ch)
if (!stralloc_append(&smtptext, ch)) temp_nomem();
}
-unsigned long smtpcode()
+static unsigned long smtpcode()
{
unsigned char ch;
unsigned long code;
@@ -375,7 +375,7 @@ unsigned long smtpcode()
return code;
}
-void outsmtptext()
+static void outsmtptext()
{
int i;
if (smtptext.s)
@@ -388,7 +388,7 @@ void outsmtptext()
}
}
-void quit(char *prepend, char *append)
+static void quit(char *prepend, char *append)
{
buffer_putsflush(&bo, "QUIT\r\n");
/* waiting for remote side is just too ridiculous */
@@ -400,7 +400,7 @@ void quit(char *prepend, char *append)
zerodie();
}
-void blast()
+static void blast()
{
int r;
char ch;
@@ -443,7 +443,7 @@ stralloc tlsdestinations = {0};
struct constmap maptlsdestinations;
unsigned long verifydepth = VERIFYDEPTH;
-void tls_init()
+static void tls_init()
{
ctx = ssl_client();
ssl_errstr();
@@ -483,7 +483,7 @@ void tls_init()
if (tls_timeoutconn(timeout, smtpfd, smtpfd, ssl) <= 0) temp_tlserr();
}
-int starttls_peer()
+static int starttls_peer()
{
int i = 0;
@@ -494,7 +494,7 @@ int starttls_peer()
return 0;
}
-void tls_peercheck()
+static void tls_peercheck()
{
X509 *cert;
STACK_OF(X509) * certs;
@@ -573,7 +573,7 @@ int utf8string(unsigned char *ch, int len)
return 0;
}
-int utf8received()
+static int utf8received()
{
int r;
int i;
@@ -616,7 +616,7 @@ int utf8received()
unsigned long code;
int flagsize = 0;
-int smtp_size()
+static int smtp_size()
{
int i;
if (smtptext.len > 10) {
@@ -627,7 +627,7 @@ int smtp_size()
return 0;
}
-void smtp_greeting()
+static void smtp_greeting()
{
buffer_puts(&bo, "EHLO ");
buffer_put(&bo, helohost.s, helohost.len);
@@ -648,7 +648,7 @@ void smtp_greeting()
flagsize = smtp_size();
}
-void smtp_starttls()
+static void smtp_starttls()
{
buffer_puts(&bo, "STARTTLS\r\n");
buffer_flush(&bo);
@@ -663,7 +663,7 @@ void smtp_starttls()
}
}
-void mailfrom()
+static void mailfrom()
{
buffer_puts(&bo, "MAIL FROM:<");
buffer_put(&bo, sender.s, sender.len);
@@ -692,7 +692,7 @@ stralloc xuser = {0};
static const char hextab[] = "0123456789abcdef";
-int xtext(stralloc *sa, char *s, int len)
+static int xtext(stralloc *sa, char *s, int len)
{
int i;
unsigned char c;
@@ -713,7 +713,7 @@ int xtext(stralloc *sa, char *s, int len)
return sa->len;
}
-void mailfrom_xtext()
+static void mailfrom_xtext()
{
if (!xtext(&xuser, user.s, user.len)) temp_nomem();
buffer_puts(&bo, "MAIL FROM:<");
@@ -729,7 +729,7 @@ void mailfrom_xtext()
buffer_flush(&bo);
}
-int mailfrom_plain()
+static int mailfrom_plain()
{
buffer_puts(&bo, "AUTH PLAIN\r\n");
buffer_flush(&bo);
@@ -755,7 +755,7 @@ int mailfrom_plain()
return 0;
}
-int mailfrom_login()
+static int mailfrom_login()
{
buffer_puts(&bo, "AUTH LOGIN\r\n");
buffer_flush(&bo);
@@ -785,7 +785,7 @@ int mailfrom_login()
return 0;
}
-int mailfrom_cram()
+static int mailfrom_cram()
{
int j;
unsigned char digest[16];
@@ -831,7 +831,7 @@ int mailfrom_cram()
return 0;
}
-void smtp_auth()
+static void smtp_auth()
{
int i;
@@ -851,7 +851,7 @@ void smtp_auth()
/* this file is too long ------------------------------------------- GO ON */
-void smtp()
+static void smtp()
{
int flagbother;
int i;
@@ -962,7 +962,7 @@ void smtp()
int qmtpsend = 0;
-void qmtp()
+static void qmtp()
{
unsigned long len;
char *x;
@@ -1076,7 +1076,7 @@ void qmtp()
/* host has to be canonical [A/AAAA record], box has to be quoted */
-void addrmangle(stralloc *saout, char *address, int *flagalias, int flagcname)
+static void addrmangle(stralloc *saout, char *address, int *flagalias, int flagcname)
{
int at;
int r = 0;
@@ -1110,7 +1110,7 @@ void addrmangle(stralloc *saout, char *address, int *flagalias, int flagcname)
if (!stralloc_cat(saout, &canonhost)) temp_nomem();
}
-void getcontrols()
+static void getcontrols()
{
if (control_init() == -1) temp_control();
if (control_readint(&timeout, "control/timeoutremote") == -1) temp_control();
diff --git a/src/qmail-rspawn.c b/src/qmail-rspawn.c
index c4155bb..719a7db 100644
--- a/src/qmail-rspawn.c
+++ b/src/qmail-rspawn.c
@@ -10,6 +10,7 @@
#include "wait.h"
#include "ipalloc.h"
+#include "spawn.h"
#include "tcpto.h"
#ifdef USE_CONFIG
diff --git a/src/qmail-send.c b/src/qmail-send.c
index 6b7a737..2c5e514 100644
--- a/src/qmail-send.c
+++ b/src/qmail-send.c
@@ -72,24 +72,24 @@ int chanfdin[CHANNELS] = {2, 4};
int chanskip[CHANNELS] = {10, 20};
int flagexitasap = 0;
-void sigterm()
+static void sigterm()
{
flagexitasap = 1;
}
int flagrunasap = 0;
-void sigalrm()
+static void sigalrm()
{
flagrunasap = 1;
}
int flagreadasap = 0;
-void sighup()
+static void sighup()
{
flagreadasap = 1;
}
-void cleandied()
+static void cleandied()
{
log1s("alert: lost connection to qmail-clean ... exiting\n");
flagexitasap = 1;
@@ -97,7 +97,7 @@ void cleandied()
int flagspawnalive[CHANNELS];
-void spawndied(int c)
+static void spawndied(int c)
{
log1s("alert: oh no! lost spawn connection! dying...\n");
flagspawnalive[c] = 0;
@@ -115,43 +115,49 @@ stralloc fn = {0};
stralloc fn2 = {0};
char fnmake_strnum[FMT_ULONG];
-void fnmake_init()
+static void nomem()
+{
+ log1s("alert: out of memory, sleeping...\n");
+ sleep(10);
+}
+
+static void fnmake_init()
{
while (!stralloc_ready(&fn, FMTQFN)) nomem();
while (!stralloc_ready(&fn2, FMTQFN)) nomem();
}
-void fnmake_info(unsigned long id)
+static void fnmake_info(unsigned long id)
{
fn.len = fmtqfn(fn.s, "info/", id, 1);
}
-void fnmake_todo(unsigned long id)
+static void fnmake_todo(unsigned long id)
{
fn.len = fmtqfn(fn.s, "todo/", id, 1);
}
-void fnmake_mess(unsigned long id)
+static void fnmake_mess(unsigned long id)
{
fn.len = fmtqfn(fn.s, "mess/", id, 1);
}
-void fnmake_foop(unsigned long id)
+static void fnmake_foop(unsigned long id)
{
fn.len = fmtqfn(fn.s, "foop/", id, 0);
}
-void fnmake_split(unsigned long id)
+static void fnmake_split(unsigned long id)
{
fn.len = fmtqfn(fn.s, "", id, 1);
}
-void fnmake2_bounce(unsigned long id)
+static void fnmake2_bounce(unsigned long id)
{
fn2.len = fmtqfn(fn2.s, "bounce/", id, 0);
}
-void fnmake_chanaddr(unsigned long id, int c)
+static void fnmake_chanaddr(unsigned long id, int c)
{
fn.len = fmtqfn(fn.s, chanaddr[c], id, 1);
}
@@ -159,7 +165,7 @@ void fnmake_chanaddr(unsigned long id, int c)
/* this file is too long ----------------------------------------- REWRITING */
-void senderadd(stralloc *sa, char *sender, char *recip)
+static void senderadd(stralloc *sa, char *sender, char *recip)
{
int i;
int j;
@@ -188,7 +194,7 @@ void senderadd(stralloc *sa, char *sender, char *recip)
/* this file is too long ---------------------------------------------- INFO */
-int getinfo(stralloc *sa, datetime_sec *dt, unsigned long id)
+static int getinfo(stralloc *sa, datetime_sec *dt, unsigned long id)
{
int fdnumber;
struct stat st;
@@ -229,7 +235,7 @@ char fromqcbuf[1024];
stralloc comm_buf[CHANNELS] = {{0}, {0}};
int comm_pos[CHANNELS];
-void comm_init()
+static void comm_init()
{
int c;
@@ -241,14 +247,14 @@ void comm_init()
spawndied(c); /* drastic, but better than risking deadlock */
}
-int comm_canwrite(int c)
+static int comm_canwrite(int c)
{
/* XXX: could allow a bigger buffer; say 10 recipients */
if (comm_buf[c].s && comm_buf[c].len) return 0;
return 1;
}
-void comm_write(int c, int delnum, unsigned long id, char *sender, char *recip)
+static void comm_write(int c, int delnum, unsigned long id, char *sender, char *recip)
{
char ch;
@@ -266,7 +272,7 @@ void comm_write(int c, int delnum, unsigned long id, char *sender, char *recip)
comm_pos[c] = 0;
}
-void comm_selprep(int *nfds, fd_set *wfds)
+static void comm_selprep(int *nfds, fd_set *wfds)
{
int c;
@@ -280,7 +286,7 @@ void comm_selprep(int *nfds, fd_set *wfds)
}
}
-void comm_do(fd_set *wfds)
+static void comm_do(fd_set *wfds)
{
int c;
@@ -315,19 +321,19 @@ int flagcleanup; /* if 1, cleanupdir is initialized and ready */
readsubdir cleanupdir;
datetime_sec cleanuptime;
-void cleanup_init()
+static void cleanup_init()
{
flagcleanup = 0;
cleanuptime = now();
}
-void cleanup_selprep(datetime_sec *wakeup)
+static void cleanup_selprep(datetime_sec *wakeup)
{
if (flagcleanup) *wakeup = 0;
if (*wakeup > cleanuptime) *wakeup = cleanuptime;
}
-void cleanup_do()
+static void cleanup_do()
{
char ch;
struct stat st;
@@ -378,7 +384,7 @@ prioq pqchan[CHANNELS] = {{0}, {0}};
/* pqchan 1: -todo +info ?local +remote */
prioq pqfail = {0}; /* stat() failure; has to be pqadded again */
-void pqadd(unsigned long id)
+static void pqadd(unsigned long id)
{
struct prioq_elt pe;
struct prioq_elt pechan[CHANNELS];
@@ -433,7 +439,7 @@ FAIL:
while (!prioq_insert(&pqfail, &pe)) nomem();
}
-void pqstart()
+static void pqstart()
{
readsubdir rs;
int x;
@@ -445,7 +451,7 @@ void pqstart()
if (x > 0) pqadd(id);
}
-void pqfinish()
+static void pqfinish()
{
int c;
struct prioq_elt pe;
@@ -463,7 +469,7 @@ void pqfinish()
}
}
-void pqrun()
+static void pqrun()
{
int c;
int i;
@@ -491,7 +497,7 @@ struct job {
int numjobs;
struct job *jo;
-void job_init()
+static void job_init()
{
int j;
@@ -502,7 +508,7 @@ void job_init()
}
}
-int job_avail()
+static int job_avail()
{
int j;
@@ -511,7 +517,7 @@ int job_avail()
return 0;
}
-int job_open(unsigned long id, int channel)
+static int job_open(unsigned long id, int channel)
{
int j;
@@ -526,7 +532,7 @@ int job_open(unsigned long id, int channel)
return j;
}
-void job_close(int j)
+static void job_close(int j)
{
struct prioq_elt pe;
struct stat st;
@@ -564,7 +570,7 @@ void job_close(int j)
/* this file is too long ------------------------------------------- BOUNCES */
-char *stripvdomprepend(char *recip)
+static char *stripvdomprepend(char *recip)
{
int i;
char *domain;
@@ -593,7 +599,7 @@ char *stripvdomprepend(char *recip)
stralloc bouncetext = {0};
-void addbounce(unsigned long id, char *recip, char *report)
+static void addbounce(unsigned long id, char *recip, char *report)
{
int fd;
int pos;
@@ -640,7 +646,7 @@ void addbounce(unsigned long id, char *recip, char *report)
close(fd);
}
-int injectbounce(unsigned long id)
+static int injectbounce(unsigned long id)
{
struct qmail qqt;
struct stat st;
@@ -808,7 +814,7 @@ struct del *d[CHANNELS];
stralloc dline[CHANNELS];
char delbuf[2048];
-void del_status()
+static void del_status()
{
int c;
@@ -823,7 +829,7 @@ void del_status()
log1s("\n");
}
-void del_init()
+static void del_init()
{
int c;
int i;
@@ -842,7 +848,7 @@ void del_init()
del_status();
}
-int del_canexit()
+static int del_canexit()
{
int c;
@@ -852,12 +858,12 @@ int del_canexit()
return 1;
}
-int del_avail(int c)
+static int del_avail(int c)
{
return flagspawnalive[c] && comm_canwrite(c) && (concurrencyused[c] < concurrency[c]);
}
-void del_start(int j, seek_pos mpos, char *recip)
+static void del_start(int j, seek_pos mpos, char *recip)
{
int i;
int c;
@@ -896,7 +902,7 @@ void del_start(int j, seek_pos mpos, char *recip)
del_status();
}
-void markdone(int c, unsigned long id, seek_pos pos)
+static void markdone(int c, unsigned long id, seek_pos pos)
{
struct stat st;
int fd;
@@ -925,7 +931,7 @@ void markdone(int c, unsigned long id, seek_pos pos)
log3s("warning: trouble marking ", fn.s, "; message will be delivered twice!\n");
}
-void del_dochan(int c)
+static void del_dochan(int c)
{
int r;
char ch;
@@ -997,7 +1003,7 @@ void del_dochan(int c)
}
}
-void del_selprep(int *nfds, fd_set *rfds)
+static void del_selprep(int *nfds, fd_set *rfds)
{
int c;
@@ -1008,7 +1014,7 @@ void del_selprep(int *nfds, fd_set *rfds)
}
}
-void del_do(fd_set *rfds)
+static void del_do(fd_set *rfds)
{
int c;
@@ -1029,14 +1035,14 @@ struct {
char buf[128];
} pass[CHANNELS];
-void pass_init()
+static void pass_init()
{
int c;
for (c = 0; c < CHANNELS; ++c) pass[c].id = 0;
}
-void pass_selprep(datetime_sec *wakeup)
+static void pass_selprep(datetime_sec *wakeup)
{
int c;
struct prioq_elt pe;
@@ -1081,7 +1087,7 @@ static datetime_sec squareroot(datetime_sec x) /* result^2 <= x < (result + 1)^2
return y;
}
-datetime_sec nextretry(datetime_sec birth, int c)
+static datetime_sec nextretry(datetime_sec birth, int c)
{
int n;
@@ -1094,7 +1100,7 @@ datetime_sec nextretry(datetime_sec birth, int c)
return birth + n * n;
}
-void pass_dochan(int c)
+static void pass_dochan(int c)
{
datetime_sec birth;
struct prioq_elt pe;
@@ -1168,7 +1174,7 @@ trouble:
while (!prioq_insert(&pqchan[c], &pe)) nomem();
}
-void messdone(unsigned long id)
+static void messdone(unsigned long id)
{
char ch;
int c;
@@ -1231,7 +1237,7 @@ FAIL:
while (!prioq_insert(&pqdone, &pe)) nomem();
}
-void pass_do()
+static void pass_do()
{
int c;
struct prioq_elt pe;
@@ -1260,14 +1266,14 @@ int todofdin;
int todofdout;
int flagtodoalive;
-void tododied()
+static void tododied()
{
log1s("alert: lost connection to qmail-todo ... exiting\n");
flagexitasap = 1;
flagtodoalive = 0;
}
-void todo_init()
+static void todo_init()
{
todofdout = 7;
todofdin = 8;
@@ -1278,7 +1284,7 @@ void todo_init()
return;
}
-void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
+static void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
{
if (flagexitasap) {
if (flagtodoalive) {
@@ -1291,7 +1297,7 @@ void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
}
}
-void todo_del(char *s)
+static void todo_del(char *s)
{
int flagchan[CHANNELS];
struct prioq_elt pe;
@@ -1333,7 +1339,7 @@ void todo_del(char *s)
return;
}
-void todo_do(fd_set *rfds)
+static void todo_do(fd_set *rfds)
{
int r;
char ch;
@@ -1379,7 +1385,7 @@ void todo_do(fd_set *rfds)
/* this file is too long ---------------------------------------------- MAIN */
-int getcontrols()
+static int getcontrols()
{
if (control_init() == -1) return 0;
if (control_readint(&lifetime, "control/queuelifetime") == -1) return 0;
@@ -1420,7 +1426,7 @@ int getcontrols()
stralloc newlocals = {0};
stralloc newvdoms = {0};
-void regetcontrols()
+static void regetcontrols()
{
int r;
@@ -1460,7 +1466,7 @@ void regetcontrols()
while (!constmap_init(&mapvdoms, "", 0, 1)) nomem();
}
-void reread()
+static void reread()
{
if (chdir(auto_qmail) == -1) {
log1s("alert: unable to reread controls: unable to switch to home directory\n");
diff --git a/src/qmail-showctl.c b/src/qmail-showctl.c
index dd15845..96b4d7e 100644
--- a/src/qmail-showctl.c
+++ b/src/qmail-showctl.c
@@ -30,7 +30,7 @@ int meok;
stralloc line = {0};
char num[FMT_ULONG];
-void safeput(char *buf, unsigned int len)
+static void safeput(char *buf, unsigned int len)
{
char ch;
@@ -43,7 +43,7 @@ void safeput(char *buf, unsigned int len)
}
}
-void do_int(char *fn, char *def, char *pre, char *post)
+static void do_int(char *fn, char *def, char *pre, char *post)
{
long i;
buffer_puts(buffer_1, "\n");
@@ -68,7 +68,7 @@ void do_int(char *fn, char *def, char *pre, char *post)
}
}
-void do_str(char *fn, int flagme, char *def, char *pre)
+static void do_str(char *fn, int flagme, char *def, char *pre)
{
buffer_puts(buffer_1, "\n");
buffer_puts(buffer_1, fn);
@@ -95,7 +95,7 @@ void do_str(char *fn, int flagme, char *def, char *pre)
}
}
-int do_lst(char *fn, char *def, char *pre, char *post)
+static int do_lst(char *fn, char *def, char *pre, char *post)
{
int i;
int j;
diff --git a/src/qmail-smtpam.c b/src/qmail-smtpam.c
index 46f47a0..9ef1238 100644
--- a/src/qmail-smtpam.c
+++ b/src/qmail-smtpam.c
@@ -96,7 +96,7 @@ void out(char *s)
if (buffer_puts(buffer_1small, s) == -1) _exit(111);
}
-void zero()
+static void zero()
{
if (buffer_put(buffer_1small, "\0", 1) == -1) _exit(111);
}
@@ -120,7 +120,7 @@ void outsafe(stralloc *sa)
}
}
-void temp_noip()
+static void temp_noip()
{
out("Zinvalid ipaddr in control/domainips (#4.3.0)\n");
zerodie();
@@ -132,13 +132,13 @@ void temp_nomem()
zerodie();
}
-void temp_oserr()
+static void temp_oserr()
{
out("ZSystem resources temporarily unavailable. (#4.3.0)\n");
zerodie();
}
-void temp_osip()
+static void temp_osip()
{
out("ZCan't bind to local ip address: ");
outsafe(&sendip);
@@ -146,13 +146,13 @@ void temp_osip()
zerodie();
}
-void temp_noconn()
+static void temp_noconn()
{
out("ZSorry, I wasn't able to establish an SMTP connection. (#4.4.1)\n");
zerodie();
}
-void temp_dnscanon()
+static void temp_dnscanon()
{
out("ZCNAME lookup failed temporarily for: ");
outsafe(&canonhost);
@@ -160,7 +160,7 @@ void temp_dnscanon()
zerodie();
}
-void temp_dns()
+static void temp_dns()
{
out("ZSorry, I couldn't find any host named: ");
outsafe(&host);
@@ -168,25 +168,25 @@ void temp_dns()
zerodie();
}
-void temp_chdir()
+static void temp_chdir()
{
out("ZUnable to switch to home directory. (#4.3.0)\n");
zerodie();
}
-void temp_control()
+static void temp_control()
{
out("ZUnable to read control files. (#4.3.0)\n");
zerodie();
}
-void perm_usage()
+static void perm_usage()
{
out("Dqmail-smtpam was invoked improperly. (#5.3.5)\n");
zerodie();
}
-void perm_dns()
+static void perm_dns()
{
out("DSorry, I couldn't find any host named: ");
outsafe(&host);
@@ -194,7 +194,7 @@ void perm_dns()
zerodie();
}
-void outhost()
+static void outhost()
{
char ipaddr[IPFMT];
int len;
@@ -208,7 +208,7 @@ void outhost()
int flagcritical = 0;
-void dropped()
+static void dropped()
{
out("ZConnected to ");
outhost();
@@ -222,7 +222,7 @@ long timeoutconnect = 60;
int smtpfd;
long timeout = 1200;
-ssize_t saferead(int fd, char *buf, int len)
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
r = timeoutread(timeout, smtpfd, buf, len);
@@ -230,7 +230,7 @@ ssize_t saferead(int fd, char *buf, int len)
return r;
}
-ssize_t safewrite(int fd, char *buf, int len)
+static ssize_t safewrite(int fd, char *buf, int len)
{
int r;
r = timeoutwrite(timeout, smtpfd, buf, len);
@@ -245,7 +245,7 @@ buffer bi = BUFFER_INIT(saferead, -1, frombuf, sizeof(frombuf));
stralloc smtptext = {0};
-void get(char *ch)
+static void get(char *ch)
{
buffer_get(&bi, ch, 1);
if (*ch != '\r')
@@ -253,7 +253,7 @@ void get(char *ch)
if (!stralloc_append(&smtptext, ch)) temp_nomem();
}
-unsigned long smtpcode()
+static unsigned long smtpcode()
{
unsigned char ch;
unsigned long code;
@@ -279,7 +279,7 @@ unsigned long smtpcode()
return code;
}
-void outsmtptext()
+static void outsmtptext()
{
int i;
if (smtptext.s) {
@@ -293,7 +293,7 @@ void outsmtptext()
}
}
-void quit(char *prepend, char *append)
+static void quit(char *prepend, char *append)
{
buffer_putsflush(&bo, "QUIT\r\n");
/* waiting for remote side is just too ridiculous */
@@ -326,7 +326,7 @@ stralloc tlsdestinations = {0};
struct constmap maptlsdestinations;
unsigned long verifydepth = VERIFYDEPTH;
-void tls_init()
+static void tls_init()
{
/* Client CTX */
@@ -357,7 +357,7 @@ void tls_init()
if (tls_timeoutconn(timeout, smtpfd, smtpfd, ssl) <= 0) temp_tlserr();
}
-int starttls_peer()
+static int starttls_peer()
{
int i = 0;
@@ -368,7 +368,7 @@ int starttls_peer()
return 0;
}
-void tls_peercheck()
+static void tls_peercheck()
{
X509 *cert;
@@ -404,7 +404,7 @@ void tls_peercheck()
return;
}
-int utf8flag(unsigned char *ch, int len)
+static int utf8flag(unsigned char *ch, int len)
{
int i = 0;
while (i < len)
@@ -416,7 +416,7 @@ int utf8flag(unsigned char *ch, int len)
unsigned long code;
-void smtp_greeting()
+static void smtp_greeting()
{
buffer_puts(&bo, "EHLO ");
buffer_put(&bo, helohost.s, helohost.len);
@@ -434,7 +434,7 @@ void smtp_greeting()
}
}
-void smtp_starttls()
+static void smtp_starttls()
{
buffer_puts(&bo, "STARTTLS\r\n");
buffer_flush(&bo);
@@ -448,7 +448,7 @@ void smtp_starttls()
}
}
-void smtp()
+static void smtp()
{
if (flagtls > 10 && flagtls < 20) { /* SMTPS */
@@ -490,7 +490,7 @@ void smtp()
_exit(1);
}
-void getcontrols()
+static void getcontrols()
{
if (control_init() == -1) temp_control();
if (control_readint(&timeout, "control/timeoutremote") == -1) temp_control();
diff --git a/src/qmail-smtpd.c b/src/qmail-smtpd.c
index 5e1497a..557649e 100644
--- a/src/qmail-smtpd.c
+++ b/src/qmail-smtpd.c
@@ -8,6 +8,7 @@
#include "cdbread.h"
#include "close.h"
#include "constmap.h"
+#include "dnsresolv.h"
#include "env.h"
#include "exit.h"
#include "fd.h"
@@ -44,8 +45,10 @@
#include "auto_qmail.h"
#endif
-/** @file qmail-smtpd.c -- authenticating ESMTP/ESMTPS server
- @brief requires sslserver or tcpserver */
+/**
+ * @file qmail-smtpd.c -- authenticating ESMTP/ESMTPS server
+ * @brief requires sslserver or tcpserver
+ */
#define PAM111421
#define AUTHSLEEP 5
@@ -64,7 +67,7 @@
unsigned long databytes = 0;
long timeout = 1200;
-int modssl_info();
+static int modssl_info(void);
ssize_t safewrite(int fd, char *buf, int len)
{
@@ -74,7 +77,15 @@ ssize_t safewrite(int fd, char *buf, int len)
return r;
}
-ssize_t saferead(int fd, char *buf, int len)
+char outbuf[BUFFER_SIZE / 2];
+buffer bo = BUFFER_INIT(safewrite, FDOUT, outbuf, sizeof(outbuf));
+
+void flush()
+{
+ buffer_flush(&bo);
+} // this triggers writing to STDIO
+
+static ssize_t saferead(int fd, char *buf, int len)
{
int r;
flush();
@@ -88,17 +99,9 @@ ssize_t saferead(int fd, char *buf, int len)
char inbuf[BUFFER_SIZE];
buffer bi = BUFFER_INIT(saferead, FDIN, inbuf, sizeof(inbuf));
-char outbuf[BUFFER_SIZE / 2];
-buffer bo = BUFFER_INIT(safewrite, FDOUT, outbuf, sizeof(outbuf));
-
char logbuf[256];
buffer bl = BUFFER_INIT(write, FDLOG, logbuf, sizeof(logbuf));
-void flush()
-{
- buffer_flush(&bo);
-} // this triggers writing to STDIO
-
void out(char *s)
{
buffer_puts(&bo, s);
@@ -111,7 +114,7 @@ int bhelocheck(void);
/* this file is too long -------------------------------------- DNS helper */
-int dnsq(char *arg, char type)
+static int dnsq(char *arg, char type)
{
unsigned int random;
int at;
@@ -152,18 +155,18 @@ int dnsq(char *arg, char type)
static stralloc greeting = {0};
-void smtp_greet(char *code)
+static void smtp_greet(char *code)
{
buffer_puts(&bo, code);
buffer_put(&bo, greeting.s, greeting.len);
}
-void smtp_help()
+static void smtp_help()
{
out("214 s/qmail home page: https://www.fehcom.de/sqmail.html\r\n");
}
-void smtp_quit()
+static void smtp_quit()
{
smtp_greet("221 ");
out("\r\n");
@@ -192,7 +195,7 @@ int seenhelo = 0;
char *badmailcond;
char *badhelocond;
-void dohelo(char *helo)
+static void dohelo(char *helo)
{
if (!stralloc_copys(&helohost, helo)) die_nomem();
if (!stralloc_0(&helohost)) die_nomem();
@@ -339,7 +342,7 @@ char *rblsmtpd;
int flagspf = 0;
static stralloc spfbounce = {0};
-void setup()
+static void setup()
{
char *x;
unsigned long u;
@@ -547,7 +550,7 @@ void setup()
fakehelo = 0;
}
-void auth_info(char *method)
+static void auth_info(char *method)
{
if (!env_put("AUTHPROTOCOL", method)) die_nomem();
if (!env_put("AUTHUSER", remoteinfo)) die_nomem();
@@ -559,7 +562,7 @@ void auth_info(char *method)
if (!stralloc_append(&protocol, "A")) die_nomem();
}
-int modssl_info()
+static int modssl_info()
{
tlsversion = env_get("SSL_PROTOCOL");
if (!tlsversion) return 0;
@@ -623,7 +626,7 @@ int flagdnsmf = 0;
int flagsize;
int rcptcount = 0;
-int addrparse(char *arg)
+static int addrparse(char *arg)
{
int i;
char ch;
@@ -648,7 +651,7 @@ int addrparse(char *arg)
if (!stralloc_copys(&addr, "")) die_nomem();
flagesc = 0;
flagquoted = 0;
- for (i = 0; ch = arg[i]; ++i) { /* copy arg to addr, stripping quotes */
+ for (i = 0; (ch = arg[i]); ++i) { /* copy arg to addr, stripping quotes */
if (flagesc) {
if (!stralloc_append(&addr, &ch)) die_nomem();
flagesc = 0;
@@ -718,7 +721,7 @@ int bhelocheck()
return 0;
}
-int bmfcheck()
+static int bmfcheck()
{
int i = 0;
int j = 0;
@@ -808,7 +811,7 @@ int bmfcheck()
return 0;
}
-int brtcheck()
+static int brtcheck()
{
int i;
int j = 0;
@@ -846,7 +849,7 @@ int brtcheck()
return 0;
}
-int addrallowed(char *arg)
+static int addrallowed(char *arg)
{
int r;
r = rcpthosts(arg, str_len(arg));
@@ -854,7 +857,7 @@ int addrallowed(char *arg)
return r;
}
-int rcptallowed()
+static int rcptallowed()
{
int r;
r = recipients(addr.s, str_len(addr.s));
@@ -867,7 +870,7 @@ int rcptallowed()
return r;
}
-int localaddr(char *mf)
+static int localaddr(char *mf)
{
int at;
int mflen;
@@ -896,7 +899,7 @@ int localaddr(char *mf)
}
}
-int spf_check(int flag6)
+static int spf_check(int flag6)
{
int r;
@@ -961,7 +964,7 @@ int spf_check(int flag6)
/* this file is too long --------------------------------- MF parser */
-int mailfrom_size(char *arg)
+static int mailfrom_size(char *arg)
{
unsigned long r;
unsigned long sizebytes = 0;
@@ -973,7 +976,7 @@ int mailfrom_size(char *arg)
return 0;
}
-void mailfrom_auth(char *arg, int len)
+static void mailfrom_auth(char *arg, int len)
{
if (!stralloc_copys(&fuser, "")) die_nomem();
if (case_starts(arg, "<>")) {
@@ -1009,7 +1012,7 @@ void mailfrom_auth(char *arg, int len)
}
}
-void mailfrom_parms(char *arg)
+static void mailfrom_parms(char *arg)
{
int len;
@@ -1037,7 +1040,7 @@ void mailfrom_parms(char *arg)
/* this file is too long --------------------------------- SMTP dialog */
-void smtp_helo(char *arg)
+static void smtp_helo(char *arg)
{
smtp_greet("250 ");
out("\r\n");
@@ -1048,7 +1051,7 @@ void smtp_helo(char *arg)
dohelo(arg);
}
-void smtp_ehlo(char *arg)
+static void smtp_ehlo(char *arg)
{
char size[FMT_ULONG];
@@ -1078,8 +1081,10 @@ void smtp_ehlo(char *arg)
dohelo(arg);
}
-void smtp_rset(void)
+static void smtp_rset(char *x)
{
+ (void)x;
+
seenmail = 0;
rcptcount = 0; /* RFC 5321: seenauth + seentls stay */
@@ -1088,7 +1093,7 @@ void smtp_rset(void)
out("250 flushed\r\n");
}
-void smtp_starttls()
+static void smtp_starttls()
{
if (starttls == 0) err_starttls();
@@ -1114,7 +1119,7 @@ void smtp_starttls()
if (seenauth == 1) seenauth = 0; /* Otherwise Auth by client Cert */
}
-void smtp_mail(char *arg)
+static void smtp_mail(char *arg)
{
if (flagutf8)
if (!stralloc_cats(&protocol, "UTF8")) die_nomem();
@@ -1156,7 +1161,7 @@ void smtp_mail(char *arg)
/* this file is too long --------------------------------- Greylisting */
-int postgrey_scanner()
+static int postgrey_scanner()
{
int child;
int wstat;
@@ -1178,7 +1183,7 @@ int postgrey_scanner()
}
}
-void smtp_rcpt(char *arg)
+static void smtp_rcpt(char *arg)
{
char *rcptok = 0;
if (!seenmail) {
@@ -1535,7 +1540,7 @@ static void queue_put(char *ch)
qmail_put(&qqt, ch, 1);
}
-void blast(int *hops)
+static void blast(int *hops)
{
char ch;
int state;
@@ -1640,7 +1645,7 @@ void blast(int *hops)
char accept_buf[FMT_ULONG];
-void acceptmessage(unsigned long qp)
+static void acceptmessage(unsigned long qp)
{
datetime_sec when;
when = now();
@@ -1653,7 +1658,7 @@ void acceptmessage(unsigned long qp)
out("\r\n");
}
-void smtp_data()
+static void smtp_data()
{
int hops;
unsigned long qp;
@@ -1822,7 +1827,7 @@ char **childargs;
char authbuf[512];
buffer ba = BUFFER_INIT(safewrite, FDAUTH, authbuf, sizeof(authbuf));
-int authgetl(void)
+static int authgetl()
{
int i;
@@ -1843,7 +1848,7 @@ int authgetl(void)
return authin.len;
}
-int authenticate(void)
+static int authenticate()
{
int child;
int wstat;
@@ -1882,11 +1887,11 @@ int authenticate(void)
if (wait_exitcode(wstat)) {
sleep(AUTHSLEEP);
return 1;
- } /* no */
+ } /* no */
return 0; /* yes */
}
-int auth_login(char *arg)
+static int auth_login(char *arg)
{
int r;
if (smtpauth == 2 || smtpauth == 12) return 1; /* only login/plain */
@@ -1912,7 +1917,7 @@ int auth_login(char *arg)
return authenticate();
}
-int auth_plain(char *arg)
+static int auth_plain(char *arg)
{
int r, id = 0;
if (smtpauth == 2 || smtpauth == 12) return 1; /* only login/plain */
@@ -1937,7 +1942,7 @@ int auth_plain(char *arg)
return authenticate();
}
-int auth_cram()
+static int auth_cram()
{
int i, r;
char *s;
@@ -1976,17 +1981,23 @@ int auth_cram()
return authenticate();
}
+static int err_noauth_handler(char *s)
+{
+ (void)s;
+ return err_noauth();
+}
+
struct authcmd {
char *text;
- int (*fun)();
+ int (*fun)(char *);
} authcmds[] = {
- { "login", auth_login},
- { "plain", auth_plain},
- {"cram-md5", auth_cram},
- { 0, err_noauth}
+ { "login", auth_login},
+ { "plain", auth_plain},
+ {"cram-md5", auth_cram},
+ { 0, err_noauth_handler}
};
-void smtp_auth(char *arg)
+static void smtp_auth(char *arg)
{
int i;
char *cmd = arg;
@@ -2067,20 +2078,38 @@ void smtp_auth(char *arg)
/* this file is too long --------------------------------- GO ON */
+static void err_noop_handler(char *s)
+{
+ (void)s;
+ err_noop();
+}
+
+static void err_vrfy_handler(char *s)
+{
+ (void)s;
+ err_vrfy();
+}
+
+static void err_unimpl_handler(char *s)
+{
+ (void)s;
+ err_unimpl();
+}
+
struct commands smtpcommands[] = {
- { "rcpt", smtp_rcpt, 0},
- { "mail", smtp_mail, 0},
- { "data", smtp_data, flush},
- { "auth", smtp_auth, flush},
- { "quit", smtp_quit, flush},
- { "helo", smtp_helo, flush},
- { "ehlo", smtp_ehlo, flush},
- { "rset", smtp_rset, flush},
- { "help", smtp_help, flush},
- { "noop", err_noop, flush},
- { "vrfy", err_vrfy, flush},
- {"starttls", smtp_starttls, flush},
- { 0, err_unimpl, flush}
+ { "rcpt", smtp_rcpt, 0},
+ { "mail", smtp_mail, 0},
+ { "data", smtp_data, flush},
+ { "auth", smtp_auth, flush},
+ { "quit", smtp_quit, flush},
+ { "helo", smtp_helo, flush},
+ { "ehlo", smtp_ehlo, flush},
+ { "rset", smtp_rset, flush},
+ { "help", smtp_help, flush},
+ { "noop", err_noop_handler, flush},
+ { "vrfy", err_vrfy_handler, flush},
+ {"starttls", smtp_starttls, flush},
+ { 0, err_unimpl_handler, flush}
};
int main(int argc, char **argv)
@@ -2094,7 +2123,7 @@ int main(int argc, char **argv)
smtp_greet("220 ");
out(" ESMTP\r\n");
flush();
- if (commands(&bi, &smtpcommands) == 0) die_read();
+ if (commands(&bi, smtpcommands) == 0) die_read();
die_nomem();
return 0;
diff --git a/src/qmail-start.c b/src/qmail-start.c
index d6a90a8..c80761b 100644
--- a/src/qmail-start.c
+++ b/src/qmail-start.c
@@ -17,7 +17,7 @@ char *(qlargs[]) = {"qmail-lspawn", "./Mailbox", 0};
char *(qrargs[]) = {"qmail-rspawn", 0};
char *(qtargs[]) = {"qmail-todo", 0};
-void die()
+static void die()
{
_exit(111);
}
@@ -34,7 +34,7 @@ int pi8[2];
int pi9[2];
int pi10[2];
-void closefds()
+static void closefds()
{
close(2);
close(3);
@@ -45,7 +45,7 @@ void closefds()
close(8);
}
-void closepipes()
+static void closepipes()
{
close(pi1[0]);
close(pi1[1]);
diff --git a/src/qmail-tcpto.c b/src/qmail-tcpto.c
index 632a5cd..26a9b88 100644
--- a/src/qmail-tcpto.c
+++ b/src/qmail-tcpto.c
@@ -24,13 +24,13 @@
#define WHO "qmail-tcpto"
-void die(n) int n;
+static void die(int n)
{
buffer_flush(buffer_1);
_exit(n);
}
-void warn(s) char *s;
+static void warn(char *s)
{
char *x;
x = error_str(errno);
@@ -40,22 +40,22 @@ void warn(s) char *s;
buffer_puts(buffer_1, "\n");
}
-void die_chdir()
+static void die_chdir()
{
logmsg(WHO, 110, FATAL, "unable to chdir");
}
-void die_open()
+static void die_open()
{
logmsg(WHO, 112, FATAL, "unable to open tcpto");
}
-void die_lock()
+static void die_lock()
{
logmsg(WHO, 112, FATAL, "unable to lock tcpto");
}
-void die_read()
+static void die_read()
{
logmsg(WHO, 112, FATAL, "unable to read tcpto");
}
diff --git a/src/qmail-todo.c b/src/qmail-todo.c
index a26365d..d2f29d5 100644
--- a/src/qmail-todo.c
+++ b/src/qmail-todo.c
@@ -53,25 +53,25 @@ int flagquitasap = 0;
void sendlog1(char *x);
void sendlog3(char *x, char *y, char *z);
-void sigterm(void)
+static void sigterm()
{
if (flagquitasap == 0) sendlog1("status: qmail-todo stop processing asap\n");
flagquitasap = 1;
}
int flagreadasap = 0;
-void sighup(void)
+static void sighup()
{
flagreadasap = 1;
}
int flagsendalive = 1;
-void senddied(void)
+static void senddied()
{
flagsendalive = 0;
}
-void cleandied()
+static void cleandied()
{
sendlog1("alert: qmail-todo lost connection to qmail-clean ... exiting\n");
flagquitasap = 1;
@@ -82,27 +82,33 @@ void cleandied()
stralloc fn = {0};
-void fnmake_init(void)
+static void nomem()
+{
+ log1s("alert: out of memory, sleeping...\n");
+ sleep(10);
+}
+
+static void fnmake_init()
{
while (!stralloc_ready(&fn, FMTQFN)) nomem();
}
-void fnmake_info(unsigned long id)
+static void fnmake_info(unsigned long id)
{
fn.len = fmtqfn(fn.s, "info/", id, 1);
}
-void fnmake_todo(unsigned long id)
+static void fnmake_todo(unsigned long id)
{
fn.len = fmtqfn(fn.s, "todo/", id, 1);
}
-void fnmake_mess(unsigned long id)
+static void fnmake_mess(unsigned long id)
{
fn.len = fmtqfn(fn.s, "mess/", id, 1);
}
-void fnmake_chanaddr(unsigned long id, int c)
+static void fnmake_chanaddr(unsigned long id, int c)
{
fn.len = fmtqfn(fn.s, chanaddr[c], id, 1);
}
@@ -115,7 +121,7 @@ stralloc rwline = {0};
/* 1 if by land, 2 if by sea, 0 if out of memory. not allowed to barf. */
/* may trash recip. must set up rwline, between a T and a \0. */
-int rewrite(char *recip)
+static int rewrite(char *recip)
{
int i;
int j;
@@ -209,7 +215,7 @@ FAIL:
comm_buf.len = pos;
}
-void comm_init(void)
+static void comm_init(void)
{
buffer_init(&toqc, write, 2, toqcbuf, sizeof(toqcbuf));
buffer_init(&fromqc, read, 3, fromqcbuf, sizeof(fromqcbuf));
@@ -222,7 +228,7 @@ void comm_init(void)
while (!stralloc_ready(&comm_buf, 1024)) nomem();
}
-int comm_canwrite(void)
+static int comm_canwrite(void)
{
/* XXX: could allow a bigger buffer; say 10 recipients */
/* XXX: returns true if there is something in the buffer */
@@ -231,7 +237,7 @@ int comm_canwrite(void)
return 0;
}
-void comm_write(unsigned long id, int local, int remote)
+static void comm_write(unsigned long id, int local, int remote)
{
int pos;
char *s;
@@ -258,7 +264,8 @@ FAIL:
comm_buf.len = pos;
}
-void comm_info(unsigned long id, unsigned long size, char *from, unsigned long pid, unsigned long uid)
+static void comm_info(
+ unsigned long id, unsigned long size, char *from, unsigned long pid, unsigned long uid)
{
int pos;
int i;
@@ -296,14 +303,14 @@ FAIL:
comm_buf.len = pos;
}
-void comm_exit(void)
+static void comm_exit(void)
{
/* if it FAILs exit, we have already stoped */
if (!stralloc_cats(&comm_buf, "X")) _exit(1);
if (!stralloc_0(&comm_buf)) _exit(1);
}
-void comm_selprep(int *nfds, fd_set *wfds, fd_set *rfds)
+static void comm_selprep(int *nfds, fd_set *wfds, fd_set *rfds)
{
if (flagsendalive) {
if (flagquitasap && comm_canwrite() == 0) comm_exit();
@@ -316,7 +323,7 @@ void comm_selprep(int *nfds, fd_set *wfds, fd_set *rfds)
}
}
-void comm_do(fd_set *wfds, fd_set *rfds)
+static void comm_do(fd_set *wfds, fd_set *rfds)
{
/* first write then read */
if (flagsendalive) {
@@ -367,14 +374,14 @@ char todobuf[BUFFER_INSIZE];
char todobufinfo[512];
char todobufchan[CHANNELS][1024];
-void todo_init(void)
+static void todo_init(void)
{
flagtododir = 0;
nexttodorun = now();
trigger_set();
}
-void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
+static void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
{
if (flagquitasap) return;
trigger_selprep(nfds, rfds);
@@ -382,7 +389,7 @@ void todo_selprep(int *nfds, fd_set *rfds, datetime_sec *wakeup)
if (*wakeup > nexttodorun) *wakeup = nexttodorun;
}
-void todo_do(fd_set *rfds)
+static void todo_do(fd_set *rfds)
{
struct stat st;
buffer bi;
@@ -578,7 +585,7 @@ FAIL:
/* this file is too long ---------------------------------------------- MAIN */
-int getcontrols(void)
+static int getcontrols(void)
{
if (control_init() == -1) return 0;
if (control_rldef(&envnoathost, "control/envnoathost", 1, "envnoathost") != 1) return 0;
@@ -608,7 +615,7 @@ int getcontrols(void)
stralloc newlocals = {0};
stralloc newvdoms = {0};
-void regetcontrols(void)
+static void regetcontrols(void)
{
int r;
@@ -636,7 +643,7 @@ void regetcontrols(void)
}
}
-void reread(void)
+static void reread(void)
{
if (chdir(auto_qmail) == -1) {
sendlog1("alert: qmail-todo: unable to reread controls: unable to switch to home directory\n");
@@ -682,7 +689,7 @@ int main()
do {
r = read(fdin, &c, 1);
if ((r == -1) && (errno != EINTR)) _exit(100); /* read failed probably qmail-send died */
- } while ((r = !1)); /* we assume it is a 'S' */
+ } while ((r = !1)); /* we assume it is a 'S' */
for (;;) {
recent = now();
diff --git a/src/qmail-vmailuser.c b/src/qmail-vmailuser.c
index eeca889..ebf13ce 100644
--- a/src/qmail-vmailuser.c
+++ b/src/qmail-vmailuser.c
@@ -42,7 +42,7 @@ stralloc vdomdir = {0};
stralloc vuser = {0};
stralloc vuserdir = {0};
-void pam_exit(int fail)
+static void pam_exit(int fail)
{
int i;
diff --git a/src/qreceipt.c b/src/qreceipt.c
index ee9fc52..9cdfb46 100644
--- a/src/qreceipt.c
+++ b/src/qreceipt.c
@@ -19,60 +19,59 @@
#define WHO "qreceipt"
-void die_noreceipt()
+static void die_noreceipt()
{
_exit(0);
}
-void die()
+static void die()
{
_exit(100);
}
-void die_temp()
+static void die_temp()
{
_exit(111);
}
-void die_nomem()
+static void die_nomem()
{
buffer_putsflush(buffer_2, "qreceipt: fatal: out of memory\n");
die_temp();
}
-void die_fork()
+static void die_fork()
{
buffer_putsflush(buffer_2, "qreceipt: fatal: unable to fork\n");
die_temp();
}
-void die_qqperm()
+static void die_qqperm()
{
buffer_putsflush(buffer_2, "qreceipt: fatal: permanent qmail-queue error\n");
die();
}
-void die_qqtemp()
+static void die_qqtemp()
{
buffer_putsflush(buffer_2, "qreceipt: fatal: temporary qmail-queue error\n");
die_temp();
}
-void die_usage()
+static void die_usage()
{
buffer_putsflush(buffer_2, "qreceipt: usage: qreceipt deliveryaddress\n");
die();
}
-void die_read()
+static void die_read()
{
if (errno == ENOMEM) die_nomem();
buffer_putsflush(buffer_2, "qreceipt: fatal: read error\n");
die_temp();
}
-void doordie(sa, r) stralloc *sa;
-int r;
+static void doordie(stralloc *sa, int r)
{
if (r == 1) return;
if (r == -1) die_nomem();
@@ -89,7 +88,7 @@ char *returnpath;
stralloc messageid = {0};
stralloc sanotice = {0};
-int rwnotice(token822_alloc *addr)
+static int rwnotice(token822_alloc *addr)
{
token822_reverse(addr);
if (token822_unquote(&sanotice, addr) != 1) die_nomem();
@@ -103,7 +102,7 @@ struct qmail qqt;
stralloc quoted = {0};
-void finishheader()
+static void finishheader()
{
char *qqx;
@@ -150,7 +149,7 @@ token822_alloc hfin = {0};
token822_alloc hfrewrite = {0};
token822_alloc hfaddr = {0};
-void doheaderfield(stralloc *h)
+static void doheaderfield(stralloc *h)
{
switch (hfield_known(h->s, h->len)) {
case H_MESSAGEID:
@@ -163,7 +162,7 @@ void doheaderfield(stralloc *h)
}
}
-void dobody(stralloc *h) {}
+static void dobody(stralloc *h) {}
int main(int argc, char **argv)
{
diff --git a/src/qsutil.c b/src/qsutil.c
index fc4129b..4076dc1 100644
--- a/src/qsutil.c
+++ b/src/qsutil.c
@@ -51,7 +51,7 @@ void log5s(char *s1, char *s2, char *s3, char *s4, char *s5)
buffer_putsflush(&be, s5);
}
-void nomem()
+static void nomem()
{
log1s("alert: out of memory, sleeping...\n");
sleep(10);
diff --git a/src/readsubdir.c b/src/readsubdir.c
index 8a57735..497b585 100644
--- a/src/readsubdir.c
+++ b/src/readsubdir.c
@@ -1,5 +1,6 @@
#include "readsubdir.h"
+#include "direntry.h"
#include "fmt.h"
#include "scan.h"
#include "str.h"
diff --git a/src/received.c b/src/received.c
index b564fd4..acb00c8 100644
--- a/src/received.c
+++ b/src/received.c
@@ -27,7 +27,7 @@ static int issafe(char ch)
return 0;
}
-void safeput(struct qmail *qqt, char *s)
+static void safeput(struct qmail *qqt, char *s)
{
char ch;
while ((ch = *s++)) {
diff --git a/src/recipients.c b/src/recipients.c
index 3d883e2..58a0f7b 100644
--- a/src/recipients.c
+++ b/src/recipients.c
@@ -59,7 +59,7 @@ int recipients_init()
char rcptbuf[512];
buffer br = BUFFER_INIT(safewrite, FDAUTH, rcptbuf, sizeof(rcptbuf));
-int callapam(char *pam, char *addr)
+static int callapam(char *pam, char *addr)
{
int i;
int j = 0;
@@ -143,7 +143,7 @@ int callapam(char *pam, char *addr)
return wait_exitcode(wstat);
}
-int recipients_parse(
+static int recipients_parse(
char *rhost,
int rlen,
char *addr,
diff --git a/src/sendmail.c b/src/sendmail.c
index 84385d9..1a9e858 100644
--- a/src/sendmail.c
+++ b/src/sendmail.c
@@ -16,19 +16,19 @@
#define WHO "sendmail"
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory\n");
}
-void die_usage()
+static void die_usage()
{
logmsg(WHO, 100, USAGE, "sendmail [ -t ] [ -fsender ] [ -Fname ] [ -bp ] [ -bs ] [ arg ... ]\n");
}
char *smtpdarg[] = {"bin/qmail-smtpd", 0};
-void smtpd()
+static void smtpd()
{
if (!env_get("PROTO")) {
if (!env_puts("RELAYCLIENT=")) nomem();
@@ -48,13 +48,13 @@ void smtpd()
char *qreadarg[] = {"bin/qmail-qread", 0};
-void mailq()
+static void mailq()
{
execv(*qreadarg, qreadarg);
logmsg(WHO, 111, FATAL, "unable to run qmail-qread\n");
}
-void do_sender(const char *s)
+static void do_sender(const char *s)
{
char *x;
int n;
diff --git a/src/setforward.c b/src/setforward.c
index ec282ba..22f3d75 100644
--- a/src/setforward.c
+++ b/src/setforward.c
@@ -12,37 +12,37 @@
#define WHO "setforward"
-void usage()
+static void usage()
{
logmsg(WHO, 100, USAGE, "setforward data.cdb data.tmp");
}
-void nomem()
+static void nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void missingsemicolon()
+static void missingsemicolon()
{
logmsg(WHO, 100, FATAL, "final instruction must end with semicolon");
}
-void extracolon()
+static void extracolon()
{
logmsg(WHO, 100, FATAL, "double colons are not permitted");
}
-void extracomma()
+static void extracomma()
{
logmsg(WHO, 100, FATAL, "commas are not permitted before colons");
}
-void nulbyte()
+static void nulbyte()
{
logmsg(WHO, 100, FATAL, "NUL bytes are not permitted");
}
-void longaddress()
+static void longaddress()
{
logmsg(WHO, 100, FATAL, "addresses over 800 bytes are not permitted");
}
@@ -61,14 +61,12 @@ int flagtarget = 0;
/* 0: reading target; command is empty; instr is empty */
/* 1: target is complete; instr still has to be written; reading command */
-void writeerr()
+static void writeerr()
{
logmsg(WHO, 111, FATAL, B("unable to write to: ", fntmp));
}
-void doit(prepend, data, datalen) char *prepend;
-char *data;
-int datalen;
+static void doit(char *prepend, char *data, int datalen)
{
if (!stralloc_copys(&key, prepend)) nomem();
if (!stralloc_cat(&key, &target)) nomem();
@@ -76,8 +74,7 @@ int datalen;
if (cdb_make_add(&cdb, key.s, key.len, data, datalen) == -1) writeerr();
}
-int getch(ch)
-char *ch;
+static int getch(char *ch)
{
int r;
diff --git a/src/setmaillist.c b/src/setmaillist.c
index e06e336..1f12596 100644
--- a/src/setmaillist.c
+++ b/src/setmaillist.c
@@ -12,7 +12,7 @@
#define WHO "setmaillist"
-void usage()
+static void usage()
{
logmsg(WHO, 100, USAGE, "setmaillist list.bin list.tmp");
}
@@ -26,7 +26,7 @@ int fd;
char buf[1024];
buffer bo;
-void writeerr()
+static void writeerr()
{
logmsg(WHO, 111, FATAL, B("unable to write to: ", fntmp));
}
diff --git a/src/spawn.c b/src/spawn.c
index 2ad7d13..59ed63e 100644
--- a/src/spawn.c
+++ b/src/spawn.c
@@ -1,3 +1,5 @@
+#include "spawn.h"
+
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
@@ -23,11 +25,6 @@
#include "auto_uids.h"
#endif
-extern int truncreport;
-extern int spawn();
-extern void report();
-extern void initialize();
-
struct delivery {
int used;
int fdin; /* pipe input */
@@ -39,7 +36,7 @@ struct delivery {
struct delivery *d;
-void sigchld()
+static void sigchld()
{
int wstat;
int pid;
@@ -58,7 +55,7 @@ void sigchld()
int flagwriting = 1;
-ssize_t okwrite(int fd, char *buf, int n)
+static ssize_t okwrite(int fd, char *buf, int n)
{
int w;
if (!flagwriting) return n;
@@ -81,7 +78,7 @@ stralloc messid = {0};
stralloc sender = {0};
stralloc recip = {0};
-void err(char *s)
+static void err(char *s)
{
char ch;
@@ -91,7 +88,7 @@ void err(char *s)
buffer_putflush(&bo, "", 1);
}
-void docmd()
+static void docmd()
{
int f;
int i;
@@ -205,7 +202,7 @@ void docmd()
char cmdbuf[1024];
-void getcmd()
+static void getcmd()
{
int i;
int r;
diff --git a/src/spf.c b/src/spf.c
index 29da3df..18d86a3 100644
--- a/src/spf.c
+++ b/src/spf.c
@@ -73,7 +73,7 @@ int spf_query(
break;
case 0:
if (!ip4_scan(remoteip, ip4remote)) return SPF_SYNTAX;
- if (ipme_is4(ip4remote) == 1) {
+ if (ipme_is4((struct ip4_address *)ip4remote) == 1) {
if (!spf_info("MLocal=", remoteip)) return SPF_NOMEM;
if (!spf_info("R:", "+")) return SPF_NOMEM;
return SPF_ME;
@@ -81,7 +81,7 @@ int spf_query(
break;
case 1:
if (!ip6_scan(remoteip, ip6remote)) return SPF_SYNTAX;
- if (ipme_is6(ip6remote) == 1) {
+ if (ipme_is6((struct ip6_address *)ip6remote) == 1) {
if (!spf_info("MLocal=", remoteip)) return SPF_NOMEM;
if (!spf_info("R:", "+")) return SPF_NOMEM;
return SPF_ME;
diff --git a/src/spfquery.c b/src/spfquery.c
index 8eb0697..a9bdf70 100644
--- a/src/spfquery.c
+++ b/src/spfquery.c
@@ -15,13 +15,13 @@
#define WHO "spfquery"
-void die(int e, char *s)
+static void die(int e, char *s)
{
buffer_putsflush(buffer_2, s);
_exit(e);
}
-void die_nomem()
+static void die_nomem()
{
die(111, "fatal: out of memory\n");
}
diff --git a/src/splogger.c b/src/splogger.c
index 55fc94a..33fa568 100644
--- a/src/splogger.c
+++ b/src/splogger.c
@@ -16,7 +16,7 @@ int flagcont = 0;
int priority; /* defined if flagcont */
char stamp[FMT_ULONG + FMT_ULONG + 3]; /* defined if flagcont */
-void stamp_make()
+static void stamp_make()
{
struct timeval tv;
char *s;
@@ -28,7 +28,7 @@ void stamp_make()
*s = 0;
}
-void flush()
+static void flush()
{
if (bufpos) {
buf[bufpos] = 0;
diff --git a/src/srs2.c b/src/srs2.c
index ccf53ed..719d9f1 100644
--- a/src/srs2.c
+++ b/src/srs2.c
@@ -285,7 +285,7 @@ static void srs_hash_create_v(srs_t *srs, int idx, char *buf, int nargs, va_list
buf[srs->hashlen] = '\0';
}
-int srs_hash_create(srs_t *srs, char *buf, int nargs, ...)
+static int srs_hash_create(srs_t *srs, char *buf, int nargs, ...)
{
va_list ap;
@@ -300,7 +300,7 @@ int srs_hash_create(srs_t *srs, char *buf, int nargs, ...)
return SRS_SUCCESS;
}
-int srs_hash_check(srs_t *srs, char *hash, int nargs, ...)
+static int srs_hash_check(srs_t *srs, char *hash, int nargs, ...)
{
va_list ap;
char *srshash;
@@ -329,7 +329,7 @@ int srs_hash_check(srs_t *srs, char *hash, int nargs, ...)
return SRS_EHASHINVALID;
}
-int srs_compile_shortcut(
+static int srs_compile_shortcut(
srs_t *srs, char *buf, int buflen, char *sendhost, char *senduser, const char *aliashost)
{
char *srshash;
@@ -371,7 +371,7 @@ int srs_compile_shortcut(
return SRS_SUCCESS;
}
-int srs_compile_guarded(
+static int srs_compile_guarded(
srs_t *srs, char *buf, int buflen, char *sendhost, char *senduser, const char *aliashost)
{
char *srshost;
@@ -434,7 +434,7 @@ int srs_compile_guarded(
return SRS_SUCCESS;
}
-int srs_parse_shortcut(srs_t *srs, char *buf, int buflen, char *senduser)
+static int srs_parse_shortcut(srs_t *srs, char *buf, int buflen, char *senduser)
{
char *srshash;
char *srsstamp;
@@ -465,7 +465,7 @@ int srs_parse_shortcut(srs_t *srs, char *buf, int buflen, char *senduser)
return SRS_ENOTSRSADDRESS;
}
-int srs_parse_guarded(srs_t *srs, char *buf, int buflen, char *senduser)
+static int srs_parse_guarded(srs_t *srs, char *buf, int buflen, char *senduser)
{
char *srshash;
char *srshost;
diff --git a/src/srsforward.c b/src/srsforward.c
index f15a8ad..967a015 100644
--- a/src/srsforward.c
+++ b/src/srsforward.c
@@ -23,12 +23,12 @@
#define WHO "srsforward"
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void die_control()
+static void die_control()
{
logmsg(WHO, 110, FATAL, "Unable to read control files");
}
@@ -56,7 +56,7 @@ static int srserror_str(int code)
return -3;
}
-ssize_t mywrite(int fd, char *buf, int len)
+static ssize_t mywrite(int fd, char *buf, int len)
{
qmail_put(&qqt, buf, len);
return len;
diff --git a/src/srsreverse.c b/src/srsreverse.c
index bee168a..1f28098 100644
--- a/src/srsreverse.c
+++ b/src/srsreverse.c
@@ -25,12 +25,12 @@
#define WHO "srsreverse"
-void die_nomem()
+static void die_nomem()
{
logmsg(WHO, 111, FATAL, "out of memory");
}
-void die_control()
+static void die_control()
{
logmsg(WHO, 110, FATAL, "Unable to read control files");
}
@@ -61,7 +61,7 @@ static int srserror_str(int code)
return -3;
}
-ssize_t mywrite(int fd, char *buf, int len)
+static ssize_t mywrite(int fd, char *buf, int len)
{
qmail_put(&qqt, buf, len);
return len;
diff --git a/src/tls_remote.c b/src/tls_remote.c
index dde4dff..3ae1a94 100644
--- a/src/tls_remote.c
+++ b/src/tls_remote.c
@@ -129,7 +129,7 @@ int tls_checkcrl(SSL *ssl) // not implemented yet
return 0;
}
-int dig_ascii(char *digascii, const char *digest, const int len)
+static int dig_ascii(char *digascii, const char *digest, const int len)
{
static const char hextab[] = "0123456789abcdef";
int j;
@@ -149,7 +149,7 @@ int dig_ascii(char *digascii, const char *digest, const int len)
Subjects keys are restricted to 2048 byte in size.
Return codes: 1: sucess, 0: failed.
*/
-int X509_pkey_digest(const X509 *cert, const EVP_MD *type, unsigned char *md, unsigned int *dlen)
+static int X509_pkey_digest(const X509 *cert, const EVP_MD *type, unsigned char *md, unsigned int *dlen)
{
unsigned int len = 0;
unsigned int size = 2048;
diff --git a/src/tls_start.c b/src/tls_start.c
index 434591f..72f012b 100644
--- a/src/tls_start.c
+++ b/src/tls_start.c
@@ -1,9 +1,10 @@
+#include "tls_start.h"
+
#include <unistd.h>
#include "env.h"
#include "fd.h"
#include "logmsg.h"
-#include "open.h"
#include "scan.h"
#include "stralloc.h"
@@ -21,7 +22,7 @@ static void die_tlsenv()
logmsg(WHO, 111, FATAL, "no UCSPITLS environment to read");
}
-int starttls_init(void)
+int starttls_init()
{
unsigned long fd;
char *fdstr;
@@ -41,7 +42,7 @@ int starttls_init(void)
return 1;
}
-int starttls_info(void)
+int starttls_info()
{
unsigned long fd;
char *fdstr;
diff --git a/src/tls_timeoutio.c b/src/tls_timeoutio.c
index e97c858..c8c2138 100644
--- a/src/tls_timeoutio.c
+++ b/src/tls_timeoutio.c
@@ -2,14 +2,20 @@
#include "tls_timeoutio.h"
#include "error.h"
-#include "logmsg.h"
#include "ndelay.h"
#include "select.h"
#include "now.h"
-#include "ucspissl.h"
-int tls_timeoutio(int (*fun)(), int t, int rfd, int wfd, SSL *ssl, char *buf, int len)
+#define CALLBACK_ADAPTER(func) \
+ static int func##_adapter(SSL *ssl, void *buf, int len) \
+ { \
+ (void)buf; \
+ (void)len; \
+ return func(ssl); \
+ }
+
+int tls_timeoutio(int (*fun)(SSL *, void *, int), int t, int rfd, int wfd, SSL *ssl, char *buf, int len)
{
int n;
const datetime_sec end = (datetime_sec)t + now();
@@ -18,7 +24,7 @@ int tls_timeoutio(int (*fun)(), int t, int rfd, int wfd, SSL *ssl, char *buf, in
fd_set fds;
struct timeval tv;
- const int r = buf ? fun(ssl, buf, len) : fun(ssl);
+ const int r = fun(ssl, buf, len);
if (r > 0) return r;
t = end - now();
@@ -46,13 +52,15 @@ int tls_timeoutio(int (*fun)(), int t, int rfd, int wfd, SSL *ssl, char *buf, in
return -1;
}
+CALLBACK_ADAPTER(SSL_accept);
+
int tls_timeoutaccept(int t, int rfd, int wfd, SSL *ssl)
{
int r;
/* if connection is established, keep NDELAY */
if (ndelay_on(rfd) == -1 || ndelay_on(wfd) == -1) return -1;
- r = tls_timeoutio(SSL_accept, t, rfd, wfd, ssl, NULL, 0);
+ r = tls_timeoutio(SSL_accept_adapter, t, rfd, wfd, ssl, NULL, 0);
if (r <= 0) {
ndelay_off(rfd);
@@ -64,13 +72,15 @@ int tls_timeoutaccept(int t, int rfd, int wfd, SSL *ssl)
return r;
}
+CALLBACK_ADAPTER(SSL_connect);
+
int tls_timeoutconn(int t, int rfd, int wfd, SSL *ssl)
{
int r;
/* if connection is established, keep NDELAY */
if (ndelay_on(rfd) == -1 || ndelay_on(wfd) == -1) return -1;
- r = tls_timeoutio(SSL_connect, t, rfd, wfd, ssl, NULL, 0);
+ r = tls_timeoutio(SSL_connect_adapter, t, rfd, wfd, ssl, NULL, 0);
if (r <= 0) {
ndelay_off(rfd);
@@ -82,19 +92,21 @@ int tls_timeoutconn(int t, int rfd, int wfd, SSL *ssl)
return r;
}
+CALLBACK_ADAPTER(SSL_do_handshake);
+
int tls_timeoutrehandshake(int t, int rfd, int wfd, SSL *ssl)
{
int r;
SSL_renegotiate(ssl);
- r = tls_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
+ r = tls_timeoutio(SSL_do_handshake_adapter, t, rfd, wfd, ssl, NULL, 0);
if (r <= 0) return r;
if (SSL_get_state(ssl) & SSL_ST_CONNECT) return -2; /* now a macro in ssl.h */
/* this is for the client only */
SSL_set_connect_state(ssl);
- return tls_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
+ return tls_timeoutio(SSL_do_handshake_adapter, t, rfd, wfd, ssl, NULL, 0);
}
int tls_timeoutread(int t, int rfd, int wfd, SSL *ssl, char *buf, int len)
@@ -107,5 +119,5 @@ int tls_timeoutread(int t, int rfd, int wfd, SSL *ssl, char *buf, int len)
int tls_timeoutwrite(int t, int rfd, int wfd, SSL *ssl, char *buf, int len)
{
if (!buf) return 0;
- return tls_timeoutio(SSL_write, t, rfd, wfd, ssl, buf, len);
+ return tls_timeoutio((int (*)(SSL *, void *, int))SSL_write, t, rfd, wfd, ssl, buf, len);
}
diff --git a/src/token822.c b/src/token822.c
index 34d8c24..b4913ab 100644
--- a/src/token822.c
+++ b/src/token822.c
@@ -9,23 +9,16 @@ static struct token822 comma = {TOKEN822_COMMA};
void token822_reverse(token822_alloc *ta)
{
- int i;
- int n;
+ int n = ta->len - 1;
struct token822 temp;
- n = ta->len - 1;
- for (i = 0; i + i < n; ++i) {
+ for (int i = 0; i + i < n; ++i) {
temp = ta->t[i];
ta->t[i] = ta->t[n - i];
ta->t[n - i] = temp;
}
}
-GEN_ALLOC_ready(token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_ready);
-GEN_ALLOC_readyplus(token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_readyplus);
-GEN_ALLOC_append(
- token822_alloc, struct token822, t, len, a, i, n, x, 30, token822_readyplus, token822_append);
-
static int needspace(int t1, int t2)
{
if (!t1) return 0;
@@ -449,7 +442,7 @@ int token822_parse(token822_alloc *ta, stralloc *sa, stralloc *buf)
return 1;
}
-static int gotaddr(token822_alloc *taout, token822_alloc *taaddr, int (*callback)())
+static int gotaddr(token822_alloc *taout, token822_alloc *taaddr, int (*callback)(token822_alloc *))
{
int i;
diff --git a/src/triggerpull.c b/src/triggerpull.c
deleted file mode 100644
index a55797f..0000000
--- a/src/triggerpull.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "triggerpull.h"
-
-#include <unistd.h>
-
-#include "ndelay.h"
-#include "open.h"
-
-void triggerpull(void)
-{
- int fd;
-
- fd = open_write("lock/trigger");
- if (fd >= 0) {
- ndelay_on(fd);
- write(fd, "", 1); /* if it fails, bummer */
- close(fd);
- }
-}