This is straightforward. I don't have a sendmail setup with logs to test
this against... FreeBSD moved all variable definitions from sma.h to sma.c and externed them in the header. I decided to move a few of them into init.c since they're allocated/initialized there (usually via strdup). They're never freed. Index: Makefile =================================================================== RCS file: /cvs/ports/mail/sma/Makefile,v retrieving revision 1.10 diff -u -p -r1.10 Makefile --- Makefile 12 Jul 2019 20:47:38 -0000 1.10 +++ Makefile 23 Feb 2021 21:58:56 -0000 @@ -4,7 +4,7 @@ COMMENT= Sendmail Log Analysis Report VERSION= 1.4 DISTNAME= sma-${VERSION} -REVISION= 1 +REVISION= 2 CATEGORIES= mail HOMEPAGE= http://www.klake.org/sma/ Index: patches/patch-Makefile =================================================================== RCS file: /cvs/ports/mail/sma/patches/patch-Makefile,v retrieving revision 1.4 diff -u -p -r1.4 patch-Makefile --- patches/patch-Makefile 25 Jan 2005 06:57:45 -0000 1.4 +++ patches/patch-Makefile 23 Feb 2021 22:00:10 -0000 @@ -1,8 +1,9 @@ $OpenBSD: patch-Makefile,v 1.4 2005/01/25 06:57:45 matthieu Exp $ ---- Makefile.orig Sat Dec 28 15:38:05 2002 -+++ Makefile Sun Jan 9 10:26:36 2005 -@@ -2,12 +2,12 @@ - # $Id: patch-Makefile,v 1.4 2005/01/25 06:57:45 matthieu Exp $ + +Index: Makefile +--- Makefile.orig ++++ Makefile +@@ -3,11 +3,11 @@ # -BINDIR = /usr/local/bin Index: patches/patch-init_c =================================================================== RCS file: patches/patch-init_c diff -N patches/patch-init_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-init_c 23 Feb 2021 21:58:03 -0000 @@ -0,0 +1,33 @@ +$OpenBSD$ + +Fix for -fno-common + +Index: init.c +--- init.c.orig ++++ init.c +@@ -34,6 +34,25 @@ + + int isspace(int); + ++int pgflag; ++const char *bechar; ++const char *cfchar; ++const char *puchar; ++const char *pachar; ++const char *plchar; ++const char *ppchar; ++const char *htchar; ++const char *ftchar; ++int csflag; ++int lrflag; ++int rrflag; ++int clsflag; ++unsigned int stnum; ++unsigned int rsnum; ++unsigned int rsrnum; ++unsigned int epnum; ++unsigned int rpnum; ++ + void + init(FILE *conf) { + char buff[1024]; Index: patches/patch-sma_c =================================================================== RCS file: patches/patch-sma_c diff -N patches/patch-sma_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-sma_c 23 Feb 2021 21:58:00 -0000 @@ -0,0 +1,115 @@ +$OpenBSD$ + +Fix for -fno-common + +Index: sma.c +--- sma.c.orig ++++ sma.c +@@ -34,6 +34,107 @@ extern int sma_optind; + + #include "sma.h" + ++/* pointer to program name: */ ++char *pname; ++ ++/* current time: */ ++time_t tval; ++struct tm *curr; ++struct tm tp; ++ ++/* ++ * Command line arguments ++ * xflag sets argument x on/off ++ * xchar is pointer to argument string if x requires an argument ++ */ ++int aflag; ++int cflag; ++int dflag; ++int hflag; ++int nflag; ++int sflag; ++int qflag; ++int lflag; ++int vflag; ++int wflag; ++unsigned int lnum; ++unsigned int lrnum; ++int rflag; ++unsigned int rnum; ++unsigned int rrnum; ++int bflag; ++const char *bchar; ++int fflag; ++const char *fchar; ++int oflag; ++const char *ochar; ++int Lflag; ++const char *Lchar; ++int Oflag; ++const char *Ochar; ++int Dflag; ++const char *Dchar; ++int pflag; ++int iflag; ++int tflag; ++int dcaddrflag; ++const char *tchar; ++ ++/* Configuration file parameters: */ ++int Hflag; ++const char *Hchar; ++int Cflag; ++const char *Cchar; ++int Fflag; ++const char *tbchar; ++ ++/* Start and end times: */ ++char *sstring; ++char *estring; ++char *tstring; ++time_t sstime; ++time_t eetime; ++int syear; ++int smonth; ++int sday; ++int shour; ++int sminute; ++int ssecond; ++int eyear; ++int emonth; ++int eday; ++int ehour; ++int eminute; ++int esecond; ++ ++/* hash table sizes: */ ++int asize; ++int rsize; ++char *hsstring; ++char *hastring; ++char *hrstring; ++ ++/* Filters */ ++char *sef; ++char *ref; ++char *srf; ++char *rrf; ++#ifdef USE_REGEXP ++regex_t csef; ++regex_t cref; ++regex_t csrf; ++regex_t crrf; ++#endif ++ ++/* Output file handle: */ ++FILE *ofp; ++ ++/* total number of hosts: */ ++int hosts; ++ ++/* inital host structure: */ ++struct host first; ++ + int + main(int argc, char **argv) { + FILE *fp = NULL; Index: patches/patch-sma_h =================================================================== RCS file: patches/patch-sma_h diff -N patches/patch-sma_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-sma_h 23 Feb 2021 21:58:24 -0000 @@ -0,0 +1,229 @@ +$OpenBSD$ + +Fix for -fno-common + +Index: sma.h +--- sma.h.orig ++++ sma.h +@@ -55,102 +55,102 @@ + #define FORMAT_CLOG 5 + + /* pointer to program name: */ +-char *pname; ++extern char *pname; + + /* current time: */ +-time_t tval; +-struct tm *curr; +-struct tm tp; ++extern time_t tval; ++extern struct tm *curr; ++extern struct tm tp; + + /* + * Command line arguments + * xflag sets argument x on/off + * xchar is pointer to argument string if x requires an argument + */ +-int aflag; +-int cflag; +-int dflag; +-int hflag; +-int nflag; +-int sflag; +-int qflag; +-int lflag; +-int vflag; +-int wflag; +-unsigned int lnum; +-unsigned int lrnum; +-int rflag; +-unsigned int rnum; +-unsigned int rrnum; +-int bflag; +-const char *bchar; +-int fflag; +-const char *fchar; +-int oflag; +-const char *ochar; +-int Lflag; +-const char *Lchar; +-int Oflag; +-const char *Ochar; +-int Dflag; +-const char *Dchar; +-int pflag; +-int iflag; +-int tflag; +-int dcaddrflag; +-const char *tchar; ++extern int aflag; ++extern int cflag; ++extern int dflag; ++extern int hflag; ++extern int nflag; ++extern int sflag; ++extern int qflag; ++extern int lflag; ++extern int vflag; ++extern int wflag; ++extern unsigned int lnum; ++extern unsigned int lrnum; ++extern int rflag; ++extern unsigned int rnum; ++extern unsigned int rrnum; ++extern int bflag; ++extern const char *bchar; ++extern int fflag; ++extern const char *fchar; ++extern int oflag; ++extern const char *ochar; ++extern int Lflag; ++extern const char *Lchar; ++extern int Oflag; ++extern const char *Ochar; ++extern int Dflag; ++extern const char *Dchar; ++extern int pflag; ++extern int iflag; ++extern int tflag; ++extern int dcaddrflag; ++extern const char *tchar; + + /* Configuration file parameters: */ +-int Hflag; +-const char *Hchar; +-int Cflag; +-const char *Cchar; +-int Fflag; +-const char *tbchar; +-int pgflag; +-const char *bechar; +-const char *cfchar; +-const char *puchar; +-const char *pachar; +-const char *plchar; +-const char *ppchar; +-const char *htchar; +-const char *ftchar; +-int csflag; +-int lrflag; +-int rrflag; +-int clsflag; +-unsigned int stnum; +-unsigned int rsnum; +-unsigned int rsrnum; +-unsigned int epnum; +-unsigned int rpnum; ++extern int Hflag; ++extern const char *Hchar; ++extern int Cflag; ++extern const char *Cchar; ++extern int Fflag; ++extern const char *tbchar; ++extern int pgflag; ++extern const char *bechar; ++extern const char *cfchar; ++extern const char *puchar; ++extern const char *pachar; ++extern const char *plchar; ++extern const char *ppchar; ++extern const char *htchar; ++extern const char *ftchar; ++extern int csflag; ++extern int lrflag; ++extern int rrflag; ++extern int clsflag; ++extern unsigned int stnum; ++extern unsigned int rsnum; ++extern unsigned int rsrnum; ++extern unsigned int epnum; ++extern unsigned int rpnum; + + /* Start and end times: */ +-char *sstring; +-char *estring; +-char *tstring; +-time_t sstime; +-time_t eetime; +-int syear; +-int smonth; +-int sday; +-int shour; +-int sminute; +-int ssecond; +-int eyear; +-int emonth; +-int eday; +-int ehour; +-int eminute; +-int esecond; ++extern char *sstring; ++extern char *estring; ++extern char *tstring; ++extern time_t sstime; ++extern time_t eetime; ++extern int syear; ++extern int smonth; ++extern int sday; ++extern int shour; ++extern int sminute; ++extern int ssecond; ++extern int eyear; ++extern int emonth; ++extern int eday; ++extern int ehour; ++extern int eminute; ++extern int esecond; + + /* hash table sizes: */ +-int asize; +-int rsize; +-char *hsstring; +-char *hastring; +-char *hrstring; ++extern int asize; ++extern int rsize; ++extern char *hsstring; ++extern char *hastring; ++extern char *hrstring; + + /* sender structure: */ + struct in { +@@ -456,25 +456,25 @@ struct host { + }; + + /* Filters */ +-char *sef; +-char *ref; +-char *srf; +-char *rrf; ++extern char *sef; ++extern char *ref; ++extern char *srf; ++extern char *rrf; + #ifdef USE_REGEXP +-regex_t csef; +-regex_t cref; +-regex_t csrf; +-regex_t crrf; ++extern regex_t csef; ++extern regex_t cref; ++extern regex_t csrf; ++extern regex_t crrf; + #endif + + /* Output file handle: */ +-FILE *ofp; ++extern FILE *ofp; + + /* total number of hosts: */ +-int hosts; ++extern int hosts; + + /* inital host structure: */ +-struct host first; ++extern struct host first; + + /* function definitions: */ + void usage(void); Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/mail/sma/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 9 Aug 2004 14:34:38 -0000 1.3 +++ pkg/PLIST 23 Feb 2021 22:00:48 -0000 @@ -1,5 +1,5 @@ @comment $OpenBSD: PLIST,v 1.3 2004/08/09 14:34:38 xsa Exp $ -bin/sma +@bin bin/sma @man man/man8/sma.8 share/doc/sma/ share/doc/sma/README |
Theo Buehler <[hidden email]> writes:
> This is straightforward. I don't have a sendmail setup with logs to test > this against... > > FreeBSD moved all variable definitions from sma.h to sma.c and externed > them in the header. I decided to move a few of them into init.c since > they're allocated/initialized there (usually via strdup). They're never > freed. OK gnezdo > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/mail/sma/Makefile,v > retrieving revision 1.10 > diff -u -p -r1.10 Makefile > --- Makefile 12 Jul 2019 20:47:38 -0000 1.10 > +++ Makefile 23 Feb 2021 21:58:56 -0000 > @@ -4,7 +4,7 @@ COMMENT= Sendmail Log Analysis Report > > VERSION= 1.4 > DISTNAME= sma-${VERSION} > -REVISION= 1 > +REVISION= 2 > CATEGORIES= mail > > HOMEPAGE= http://www.klake.org/sma/ > Index: patches/patch-Makefile > =================================================================== > RCS file: /cvs/ports/mail/sma/patches/patch-Makefile,v > retrieving revision 1.4 > diff -u -p -r1.4 patch-Makefile > --- patches/patch-Makefile 25 Jan 2005 06:57:45 -0000 1.4 > +++ patches/patch-Makefile 23 Feb 2021 22:00:10 -0000 > @@ -1,8 +1,9 @@ > $OpenBSD: patch-Makefile,v 1.4 2005/01/25 06:57:45 matthieu Exp $ > ---- Makefile.orig Sat Dec 28 15:38:05 2002 > -+++ Makefile Sun Jan 9 10:26:36 2005 > -@@ -2,12 +2,12 @@ > - # $Id: patch-Makefile,v 1.4 2005/01/25 06:57:45 matthieu Exp $ > + > +Index: Makefile > +--- Makefile.orig > ++++ Makefile > +@@ -3,11 +3,11 @@ > # > > -BINDIR = /usr/local/bin > Index: patches/patch-init_c > =================================================================== > RCS file: patches/patch-init_c > diff -N patches/patch-init_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-init_c 23 Feb 2021 21:58:03 -0000 > @@ -0,0 +1,33 @@ > +$OpenBSD$ > + > +Fix for -fno-common > + > +Index: init.c > +--- init.c.orig > ++++ init.c > +@@ -34,6 +34,25 @@ > + > + int isspace(int); > + > ++int pgflag; > ++const char *bechar; > ++const char *cfchar; > ++const char *puchar; > ++const char *pachar; > ++const char *plchar; > ++const char *ppchar; > ++const char *htchar; > ++const char *ftchar; > ++int csflag; > ++int lrflag; > ++int rrflag; > ++int clsflag; > ++unsigned int stnum; > ++unsigned int rsnum; > ++unsigned int rsrnum; > ++unsigned int epnum; > ++unsigned int rpnum; > ++ > + void > + init(FILE *conf) { > + char buff[1024]; > Index: patches/patch-sma_c > =================================================================== > RCS file: patches/patch-sma_c > diff -N patches/patch-sma_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-sma_c 23 Feb 2021 21:58:00 -0000 > @@ -0,0 +1,115 @@ > +$OpenBSD$ > + > +Fix for -fno-common > + > +Index: sma.c > +--- sma.c.orig > ++++ sma.c > +@@ -34,6 +34,107 @@ extern int sma_optind; > + > + #include "sma.h" > + > ++/* pointer to program name: */ > ++char *pname; > ++ > ++/* current time: */ > ++time_t tval; > ++struct tm *curr; > ++struct tm tp; > ++ > ++/* > ++ * Command line arguments > ++ * xflag sets argument x on/off > ++ * xchar is pointer to argument string if x requires an argument > ++ */ > ++int aflag; > ++int cflag; > ++int dflag; > ++int hflag; > ++int nflag; > ++int sflag; > ++int qflag; > ++int lflag; > ++int vflag; > ++int wflag; > ++unsigned int lnum; > ++unsigned int lrnum; > ++int rflag; > ++unsigned int rnum; > ++unsigned int rrnum; > ++int bflag; > ++const char *bchar; > ++int fflag; > ++const char *fchar; > ++int oflag; > ++const char *ochar; > ++int Lflag; > ++const char *Lchar; > ++int Oflag; > ++const char *Ochar; > ++int Dflag; > ++const char *Dchar; > ++int pflag; > ++int iflag; > ++int tflag; > ++int dcaddrflag; > ++const char *tchar; > ++ > ++/* Configuration file parameters: */ > ++int Hflag; > ++const char *Hchar; > ++int Cflag; > ++const char *Cchar; > ++int Fflag; > ++const char *tbchar; > ++ > ++/* Start and end times: */ > ++char *sstring; > ++char *estring; > ++char *tstring; > ++time_t sstime; > ++time_t eetime; > ++int syear; > ++int smonth; > ++int sday; > ++int shour; > ++int sminute; > ++int ssecond; > ++int eyear; > ++int emonth; > ++int eday; > ++int ehour; > ++int eminute; > ++int esecond; > ++ > ++/* hash table sizes: */ > ++int asize; > ++int rsize; > ++char *hsstring; > ++char *hastring; > ++char *hrstring; > ++ > ++/* Filters */ > ++char *sef; > ++char *ref; > ++char *srf; > ++char *rrf; > ++#ifdef USE_REGEXP > ++regex_t csef; > ++regex_t cref; > ++regex_t csrf; > ++regex_t crrf; > ++#endif > ++ > ++/* Output file handle: */ > ++FILE *ofp; > ++ > ++/* total number of hosts: */ > ++int hosts; > ++ > ++/* inital host structure: */ > ++struct host first; > ++ > + int > + main(int argc, char **argv) { > + FILE *fp = NULL; > Index: patches/patch-sma_h > =================================================================== > RCS file: patches/patch-sma_h > diff -N patches/patch-sma_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-sma_h 23 Feb 2021 21:58:24 -0000 > @@ -0,0 +1,229 @@ > +$OpenBSD$ > + > +Fix for -fno-common > + > +Index: sma.h > +--- sma.h.orig > ++++ sma.h > +@@ -55,102 +55,102 @@ > + #define FORMAT_CLOG 5 > + > + /* pointer to program name: */ > +-char *pname; > ++extern char *pname; > + > + /* current time: */ > +-time_t tval; > +-struct tm *curr; > +-struct tm tp; > ++extern time_t tval; > ++extern struct tm *curr; > ++extern struct tm tp; > + > + /* > + * Command line arguments > + * xflag sets argument x on/off > + * xchar is pointer to argument string if x requires an argument > + */ > +-int aflag; > +-int cflag; > +-int dflag; > +-int hflag; > +-int nflag; > +-int sflag; > +-int qflag; > +-int lflag; > +-int vflag; > +-int wflag; > +-unsigned int lnum; > +-unsigned int lrnum; > +-int rflag; > +-unsigned int rnum; > +-unsigned int rrnum; > +-int bflag; > +-const char *bchar; > +-int fflag; > +-const char *fchar; > +-int oflag; > +-const char *ochar; > +-int Lflag; > +-const char *Lchar; > +-int Oflag; > +-const char *Ochar; > +-int Dflag; > +-const char *Dchar; > +-int pflag; > +-int iflag; > +-int tflag; > +-int dcaddrflag; > +-const char *tchar; > ++extern int aflag; > ++extern int cflag; > ++extern int dflag; > ++extern int hflag; > ++extern int nflag; > ++extern int sflag; > ++extern int qflag; > ++extern int lflag; > ++extern int vflag; > ++extern int wflag; > ++extern unsigned int lnum; > ++extern unsigned int lrnum; > ++extern int rflag; > ++extern unsigned int rnum; > ++extern unsigned int rrnum; > ++extern int bflag; > ++extern const char *bchar; > ++extern int fflag; > ++extern const char *fchar; > ++extern int oflag; > ++extern const char *ochar; > ++extern int Lflag; > ++extern const char *Lchar; > ++extern int Oflag; > ++extern const char *Ochar; > ++extern int Dflag; > ++extern const char *Dchar; > ++extern int pflag; > ++extern int iflag; > ++extern int tflag; > ++extern int dcaddrflag; > ++extern const char *tchar; > + > + /* Configuration file parameters: */ > +-int Hflag; > +-const char *Hchar; > +-int Cflag; > +-const char *Cchar; > +-int Fflag; > +-const char *tbchar; > +-int pgflag; > +-const char *bechar; > +-const char *cfchar; > +-const char *puchar; > +-const char *pachar; > +-const char *plchar; > +-const char *ppchar; > +-const char *htchar; > +-const char *ftchar; > +-int csflag; > +-int lrflag; > +-int rrflag; > +-int clsflag; > +-unsigned int stnum; > +-unsigned int rsnum; > +-unsigned int rsrnum; > +-unsigned int epnum; > +-unsigned int rpnum; > ++extern int Hflag; > ++extern const char *Hchar; > ++extern int Cflag; > ++extern const char *Cchar; > ++extern int Fflag; > ++extern const char *tbchar; > ++extern int pgflag; > ++extern const char *bechar; > ++extern const char *cfchar; > ++extern const char *puchar; > ++extern const char *pachar; > ++extern const char *plchar; > ++extern const char *ppchar; > ++extern const char *htchar; > ++extern const char *ftchar; > ++extern int csflag; > ++extern int lrflag; > ++extern int rrflag; > ++extern int clsflag; > ++extern unsigned int stnum; > ++extern unsigned int rsnum; > ++extern unsigned int rsrnum; > ++extern unsigned int epnum; > ++extern unsigned int rpnum; > + > + /* Start and end times: */ > +-char *sstring; > +-char *estring; > +-char *tstring; > +-time_t sstime; > +-time_t eetime; > +-int syear; > +-int smonth; > +-int sday; > +-int shour; > +-int sminute; > +-int ssecond; > +-int eyear; > +-int emonth; > +-int eday; > +-int ehour; > +-int eminute; > +-int esecond; > ++extern char *sstring; > ++extern char *estring; > ++extern char *tstring; > ++extern time_t sstime; > ++extern time_t eetime; > ++extern int syear; > ++extern int smonth; > ++extern int sday; > ++extern int shour; > ++extern int sminute; > ++extern int ssecond; > ++extern int eyear; > ++extern int emonth; > ++extern int eday; > ++extern int ehour; > ++extern int eminute; > ++extern int esecond; > + > + /* hash table sizes: */ > +-int asize; > +-int rsize; > +-char *hsstring; > +-char *hastring; > +-char *hrstring; > ++extern int asize; > ++extern int rsize; > ++extern char *hsstring; > ++extern char *hastring; > ++extern char *hrstring; > + > + /* sender structure: */ > + struct in { > +@@ -456,25 +456,25 @@ struct host { > + }; > + > + /* Filters */ > +-char *sef; > +-char *ref; > +-char *srf; > +-char *rrf; > ++extern char *sef; > ++extern char *ref; > ++extern char *srf; > ++extern char *rrf; > + #ifdef USE_REGEXP > +-regex_t csef; > +-regex_t cref; > +-regex_t csrf; > +-regex_t crrf; > ++extern regex_t csef; > ++extern regex_t cref; > ++extern regex_t csrf; > ++extern regex_t crrf; > + #endif > + > + /* Output file handle: */ > +-FILE *ofp; > ++extern FILE *ofp; > + > + /* total number of hosts: */ > +-int hosts; > ++extern int hosts; > + > + /* inital host structure: */ > +-struct host first; > ++extern struct host first; > + > + /* function definitions: */ > + void usage(void); > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/mail/sma/pkg/PLIST,v > retrieving revision 1.3 > diff -u -p -r1.3 PLIST > --- pkg/PLIST 9 Aug 2004 14:34:38 -0000 1.3 > +++ pkg/PLIST 23 Feb 2021 22:00:48 -0000 > @@ -1,5 +1,5 @@ > @comment $OpenBSD: PLIST,v 1.3 2004/08/09 14:34:38 xsa Exp $ > -bin/sma > +@bin bin/sma > @man man/man8/sma.8 > share/doc/sma/ > share/doc/sma/README |
Free forum by Nabble | Edit this page |