Re: [mlmmj] Candidate for an 1.4.0.a1

Franky Van Liedekerke <[email protected]> Sat, 03 Dec 2022 09:00:00 +0000
Newsgroups org.mlmmj.mlmmj
Message-ID <[email protected]>
On 12/2/22 15:51, Baptiste Daroussin wrote:

> Hello everyone,
>
> A 1.5 years ago, I migrated FreeBSD's mailing list to mlmmj. So far so good we
> are very happy with it.
>
> Since that date I have been working on modernizing mlmmj codebase, integrate our
> patches etc. While the work is clearly not done, I think it is advanced enough
> for it to be shared.
>
> Disclaimer: this is a very early alpha, mostly tested under FreeBSD! While I tried
> (and intend) to keep using only portable things, their maybe issues, the main goal
> is to open the gate to contributors, testers and open discussions.
>
> https://codeberg.org/mlmmj/mlmmj/releases
>
> The working has been ongoing here: https://codeberg.org/mlmmj/mlmmj
>
> The changelog is the following:
>   * Add a test suite
>   * Modernize code (dprintf, posix_spawn, asprintf, getline, daemon, ...)
>   * Supporting passing email to a mta over ipv6
>   * Fix relaying in IPV6-only systems
>   * Fix decode quoted printable subject
>   * Fix parsing RFC1891
>   * Fix a crash if no owner has been defined
>   * Validate ranges of all integers conversion
>   * New 'nobounceprobe' tunable for debugging purpose
>   * New 'send' tunable to allow email passthrough
>   * Add support for 'X-Original-From'
>   * Reduce subscription confirmation address length to fit RFC 5321
>   * Use arc4random is available
>   * Reduce memory manipulation
>   * When unsubscribing bouncers, keep the bounce file if something went
>   * wrong and report in syslog what went wrong
>   * Remove the -b option from mlmmj-unsub, it is not used anymore
>   * simplify the locking mechanism
>
> My plans before a full 1.4.0:
>   * Remove the php part
>   * Merge interesting parts of mlmmj-receive-strip into mlmmj-receive
>
> Note that one thing I didn't do is merge the mungefrom patches. So far I consider
> mailing list should not be altering parts of the email that are part of the dkim
> signatures aka:
> - Should not modify the subject
> - Should not strip any part of the emial
> - Should not add a footer
>
> If so, emails going through a mailing list respects dkim/dmarc expectations.
> Note that I don't have strong feelings about this, so I can be convince to merge
> those patches.
>
> Open question:
> - should this still be mlmmj? (aka the continuation of the project?) if most do
>    not like the approach, I will of course fork and rename, otherwise I will be
>    happy to make it a continuation of the project.
>
> Best regards,
> Bapt

feedback: autoreconfigure, configure, make, make check: all works ok on 
fedora (although you'd need to include some extra docu concerning 
install libaft-c-devel, libatf-sh-devel and kyua)

During make, some warnings popped up (unused params mostly), see the 
make output in attach. Some calls to "free" are being done when the 
variable was already freed, those should certainly be fixed. And then 
the warnings about possibile usage of uninitialized variables.

Franky
out.txt (text/plain, 24.5 KB)
mlmmj-send.c: In function ‘catch_sig_term’:
mlmmj-send.c:72:25: warning: unused parameter ‘sig’ [-Wunused-parameter]
   72 | void catch_sig_term(int sig)
      |                     ~~~~^~~
mlmmj-send.c: In function ‘send_mail’:
mlmmj-send.c:226:40: warning: unused parameter ‘hdrslen’ [-Wunused-parameter]
  226 |               const char *hdrs, size_t hdrslen, const char *body,
      |                                 ~~~~~~~^~~~~~~
mlmmj-send.c:227:22: warning: unused parameter ‘bodylen’ [-Wunused-parameter]
  227 |               size_t bodylen)
      |               ~~~~~~~^~~~~~~
mlmmj-send.c: In function ‘send_mail_verp’:
mlmmj-send.c:504:67: warning: unused parameter ‘listdir’ [-Wunused-parameter]
  504 |                    size_t mailsize, const char *from, const char *listdir,
      |                                                       ~~~~~~~~~~~~^~~~~~~
mlmmj-send.c:505:45: warning: unused parameter ‘hdrslen’ [-Wunused-parameter]
  505 |                    const char *hdrs, size_t hdrslen, const char *body,
      |                                      ~~~~~~~^~~~~~~
mlmmj-send.c:506:27: warning: unused parameter ‘bodylen’ [-Wunused-parameter]
  506 |                    size_t bodylen, const char *verpextra)
      |                    ~~~~~~~^~~~~~~
mlmmj-send.c: In function ‘main’:
mlmmj-send.c:988:26: warning: this statement may fall through [-Wimplicit-fallthrough=]
  988 |                 addtohdr = statctrl(listdir, "addtohdr");
      |                 ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mlmmj-send.c:989:9: note: here
  989 |         case '4': /* sending mails to subfile */
      |         ^~~~
depbase=`echo mail-functions.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mail-functions.o -MD -MP -MF $depbase.Tpo -c -o mail-functions.o mail-functions.c &&\
mv -f $depbase.Tpo $depbase.Po
mail-functions.c: In function ‘get_preppedhdrs_from_map’:
mail-functions.c:145:25: warning: ‘strncpy’ output truncated before terminating nul copying 2 bytes from a string of the same length [-Wstringop-truncation]
  145 |                         strncpy(r, newlinebuf, 2);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~
depbase=`echo chomp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT chomp.o -MD -MP -MF $depbase.Tpo -c -o chomp.o chomp.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo incindexfile.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT incindexfile.o -MD -MP -MF $depbase.Tpo -c -o incindexfile.o incindexfile.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo checkwait_smtpreply.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT checkwait_smtpreply.o -MD -MP -MF $depbase.Tpo -c -o checkwait_smtpreply.o checkwait_smtpreply.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo init_sockfd.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT init_sockfd.o -MD -MP -MF $depbase.Tpo -c -o init_sockfd.o init_sockfd.c &&\
mv -f $depbase.Tpo $depbase.Po
init_sockfd.c: In function ‘init_sockfd’:
init_sockfd.c:72:12: warning: ‘sd’ may be used uninitialized [-Wmaybe-uninitialized]
   72 |         if (sd == -1) {
      |            ^
init_sockfd.c:40:17: note: ‘sd’ was declared here
   40 |         int on, sd;
      |                 ^~
depbase=`echo strgen.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT strgen.o -MD -MP -MF $depbase.Tpo -c -o strgen.o strgen.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo random-int.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT random-int.o -MD -MP -MF $depbase.Tpo -c -o random-int.o random-int.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo print-version.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT print-version.o -MD -MP -MF $depbase.Tpo -c -o print-version.o print-version.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo log_error.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT log_error.o -MD -MP -MF $depbase.Tpo -c -o log_error.o log_error.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mygetline.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mygetline.o -MD -MP -MF $depbase.Tpo -c -o mygetline.o mygetline.c &&\
mv -f $depbase.Tpo $depbase.Po
mygetline.c: In function ‘mygetuntil’:
mygetline.c:43:24: warning: comparison of unsigned expression in ‘< 0’ is always false [-Wtype-limits]
   43 |                 if(res < 0) {
      |                        ^
depbase=`echo getaddrsfromfd.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT getaddrsfromfd.o -MD -MP -MF $depbase.Tpo -c -o getaddrsfromfd.o getaddrsfromfd.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo readn.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT readn.o -MD -MP -MF $depbase.Tpo -c -o readn.o readn.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo subscriberfuncs.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT subscriberfuncs.o -MD -MP -MF $depbase.Tpo -c -o subscriberfuncs.o subscriberfuncs.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo find_email_adr.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT find_email_adr.o -MD -MP -MF $depbase.Tpo -c -o find_email_adr.o find_email_adr.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo dumpfd2fd.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT dumpfd2fd.o -MD -MP -MF $depbase.Tpo -c -o dumpfd2fd.o dumpfd2fd.c &&\
mv -f $depbase.Tpo $depbase.Po
dumpfd2fd.c: In function ‘dumpfd2fd’:
dumpfd2fd.c:40:22: warning: comparison of unsigned expression in ‘< 0’ is always false [-Wtype-limits]
   40 |                 if(n < 0) {
      |                      ^
depbase=`echo listcontrol.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT listcontrol.o -MD -MP -MF $depbase.Tpo -c -o listcontrol.o listcontrol.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo send_help.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT send_help.o -MD -MP -MF $depbase.Tpo -c -o send_help.o send_help.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo prepstdreply.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT prepstdreply.o -MD -MP -MF $depbase.Tpo -c -o prepstdreply.o prepstdreply.c &&\
mv -f $depbase.Tpo $depbase.Po
prepstdreply.c: In function ‘prepstdreply’:
prepstdreply.c:1743:33: warning: pointer ‘str’ may be used after ‘free’ [-Wuse-after-free]
 1743 |                                 free(str);
      |                                 ^~~~~~~~~
prepstdreply.c:1626:17: note: call to ‘free’ here
 1626 |                 free(str);
      |                 ^~~~~~~~~
depbase=`echo do_all_the_voodoo_here.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT do_all_the_voodoo_here.o -MD -MP -MF $depbase.Tpo -c -o do_all_the_voodoo_here.o do_all_the_voodoo_here.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo log_oper.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT log_oper.o -MD -MP -MF $depbase.Tpo -c -o log_oper.o log_oper.c &&\
mv -f $depbase.Tpo $depbase.Po
log_oper.c: In function ‘log_oper’:
log_oper.c:82:14: warning: comparison of unsigned expression in ‘< 0’ is always false [-Wtype-limits]
   82 |         if(i < 0) {
      |              ^
depbase=`echo send_list.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT send_list.o -MD -MP -MF $depbase.Tpo -c -o send_list.o send_list.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo unistr.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT unistr.o -MD -MP -MF $depbase.Tpo -c -o unistr.o unistr.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo gethdrline.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT gethdrline.o -MD -MP -MF $depbase.Tpo -c -o gethdrline.o gethdrline.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo send_digest.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT send_digest.o -MD -MP -MF $depbase.Tpo -c -o send_digest.o send_digest.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo writen.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT writen.o -MD -MP -MF $depbase.Tpo -c -o writen.o writen.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo getlistaddr.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT getlistaddr.o -MD -MP -MF $depbase.Tpo -c -o getlistaddr.o getlistaddr.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo statctrl.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT statctrl.o -MD -MP -MF $depbase.Tpo -c -o statctrl.o statctrl.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo ctrlvalue.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT ctrlvalue.o -MD -MP -MF $depbase.Tpo -c -o ctrlvalue.o ctrlvalue.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo getlistdelim.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT getlistdelim.o -MD -MP -MF $depbase.Tpo -c -o getlistdelim.o getlistdelim.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo ctrlvalues.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT ctrlvalues.o -MD -MP -MF $depbase.Tpo -c -o ctrlvalues.o ctrlvalues.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo utils.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT utils.o -MD -MP -MF $depbase.Tpo -c -o utils.o utils.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo mlmmj.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj.o -MD -MP -MF $depbase.Tpo -c -o mlmmj.o mlmmj.c &&\
mv -f $depbase.Tpo $depbase.Po
rm -f libmlmmj.a
ar cru libmlmmj.a mail-functions.o chomp.o incindexfile.o checkwait_smtpreply.o init_sockfd.o strgen.o random-int.o print-version.o log_error.o mygetline.o getaddrsfromfd.o readn.o subscriberfuncs.o find_email_adr.o dumpfd2fd.o listcontrol.o send_help.o prepstdreply.o do_all_the_voodoo_here.o log_oper.o send_list.o unistr.o gethdrline.o send_digest.o writen.o getlistaddr.o strgen.o statctrl.o ctrlvalue.o readn.o getlistdelim.o ctrlvalues.o utils.o mlmmj.o 
ranlib libmlmmj.a
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-send mlmmj-send.o libmlmmj.a 
depbase=`echo mlmmj-receive.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-receive.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-receive.o mlmmj-receive.c &&\
mv -f $depbase.Tpo $depbase.Po
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-receive mlmmj-receive.o libmlmmj.a 
depbase=`echo mlmmj-process.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-process.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-process.o mlmmj-process.c &&\
mv -f $depbase.Tpo $depbase.Po
mlmmj-process.c: In function ‘main’:
mlmmj-process.c:1048:45: warning: ‘txt’ may be used uninitialized [-Wmaybe-uninitialized]
 1048 |                             queuefilename = prepstdreply(txt, listdir,
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
 1049 |                                     "$listowner$", testaddr, NULL);
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mlmmj-process.c:433:15: note: ‘txt’ was declared here
  433 |         text *txt;
      |               ^~~
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-process mlmmj-process.o libmlmmj.a 
depbase=`echo mlmmj-sub.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-sub.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-sub.o mlmmj-sub.c &&\
mv -f $depbase.Tpo $depbase.Po
mlmmj-sub.c: In function ‘subscribe_type’:
mlmmj-sub.c:536:49: warning: unused parameter ‘listaddr’ [-Wunused-parameter]
  536 | static void subscribe_type(char *listdir, char *listaddr, char *listdelim,
      |                                           ~~~~~~^~~~~~~~
mlmmj-sub.c:536:65: warning: unused parameter ‘listdelim’ [-Wunused-parameter]
  536 | static void subscribe_type(char *listdir, char *listaddr, char *listdelim,
      |                                                           ~~~~~~^~~~~~~~~
mlmmj-sub.c:537:38: warning: unused parameter ‘mlmmjsend’ [-Wunused-parameter]
  537 |                 char *address, char *mlmmjsend,
      |                                ~~~~~~^~~~~~~~~
mlmmj-sub.c:538:54: warning: unused parameter ‘reasonsub’ [-Wunused-parameter]
  538 |                 enum subtype typesub, enum subreason reasonsub) {
      |                                       ~~~~~~~~~~~~~~~^~~~~~~~~
mlmmj-sub.c: In function ‘generate_subconfirm’:
mlmmj-sub.c:424:17: warning: pointer ‘confirmfilename’ may be used after ‘free’ [-Wuse-after-free]
  424 |                 free(confirmfilename);
      |                 ^~~~~~~~~~~~~~~~~~~~~
mlmmj-sub.c:420:9: note: call to ‘free’ here
  420 |         free(confirmfilename);
      |         ^~~~~~~~~~~~~~~~~~~~~
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-sub mlmmj-sub.o libmlmmj.a 
depbase=`echo mlmmj-unsub.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-unsub.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-unsub.o mlmmj-unsub.c &&\
mv -f $depbase.Tpo $depbase.Po
mlmmj-unsub.c: In function ‘generate_unsubconfirm’:
mlmmj-unsub.c:181:17: warning: pointer ‘confirmfilename’ may be used after ‘free’ [-Wuse-after-free]
  181 |                 free(confirmfilename);
      |                 ^~~~~~~~~~~~~~~~~~~~~
mlmmj-unsub.c:176:9: note: call to ‘free’ here
  176 |         free(confirmfilename);
      |         ^~~~~~~~~~~~~~~~~~~~~
mlmmj-unsub.c: In function ‘main’:
mlmmj-unsub.c:428:17: warning: ‘listaddr’ may be used uninitialized [-Wmaybe-uninitialized]
  428 |                 free(listaddr);
      |                 ^~~~~~~~~~~~~~
mlmmj-unsub.c:294:15: note: ‘listaddr’ was declared here
  294 |         char *listaddr, *listdelim, *listdir = NULL, *address = NULL;
      |               ^~~~~~~~
mlmmj-unsub.c:429:17: warning: ‘listdelim’ may be used uninitialized [-Wmaybe-uninitialized]
  429 |                 free(listdelim);
      |                 ^~~~~~~~~~~~~~~
mlmmj-unsub.c:294:26: note: ‘listdelim’ was declared here
  294 |         char *listaddr, *listdelim, *listdir = NULL, *address = NULL;
      |                          ^~~~~~~~~
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-unsub mlmmj-unsub.o libmlmmj.a 
depbase=`echo mlmmj-bounce.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-bounce.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-bounce.o mlmmj-bounce.c &&\
mv -f $depbase.Tpo $depbase.Po
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-bounce mlmmj-bounce.o libmlmmj.a 
depbase=`echo mlmmj-maintd.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-maintd.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-maintd.o mlmmj-maintd.c &&\
mv -f $depbase.Tpo $depbase.Po
In function ‘resend_queue’,
    inlined from ‘do_maintenance’ at mlmmj-maintd.c:747:7:
mlmmj-maintd.c:262:25: warning: ‘mailname’ may be used uninitialized [-Wmaybe-uninitialized]
  262 |                         exec_and_wait(mlmmjsend, "-l", "1", "-L", listdir, "-m",
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  263 |                             mailname, "-F", from, "-T", to, "-R", repto, "-a",
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  264 |                             NULL);
      |                             ~~~~~
mlmmj-maintd.c: In function ‘do_maintenance’:
mlmmj-maintd.c:152:15: note: ‘mailname’ was declared here
  152 |         char *mailname, *fromname, *toname, *reptoname, *from, *to, *repto;
      |               ^~~~~~~~
In function ‘clean_nolongerbouncing’,
    inlined from ‘do_maintenance’ at mlmmj-maintd.c:757:7:
mlmmj-maintd.c:413:33: warning: pointer ‘probetimestr’ may be used after ‘free’ [-Wuse-after-free]
  413 |                                 free(probetimestr);
      |                                 ^~~~~~~~~~~~~~~~~~
mlmmj-maintd.c:410:25: note: call to ‘free’ here
  410 |                         free(probetimestr);
      |                         ^~~~~~~~~~~~~~~~~~
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-maintd mlmmj-maintd.o libmlmmj.a 
depbase=`echo mlmmj-list.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2 -MT mlmmj-list.o -MD -MP -MF $depbase.Tpo -c -o mlmmj-list.o mlmmj-list.c &&\
mv -f $depbase.Tpo $depbase.Po
gcc -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include  -g -O2   -o mlmmj-list mlmmj-list.o libmlmmj.a 
make[2]: Leaving directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/src'
Making all in listtexts
make[2]: Entering directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/listtexts'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/listtexts'
Making all in contrib
make[2]: Entering directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib'
Making all in receivestrip
make[3]: Entering directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib/receivestrip'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib/receivestrip'
make[3]: Entering directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib'
make[2]: Leaving directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/contrib'
Making all in tests
make[2]: Entering directory '/home/liedekef/Downloads/mlmmj-1.4.0.a1/tests'
depbase=`echo mlmmj.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I..    -g -Wall -std=gnu99 -D_GNU_SOURCE=1 -Wextra -pedantic -Wsign-compare -DDEFAULTTEXTDIR='"/usr/local/share/mlmmj/text.skel"' -I./../include   -g -O2 -MT mlmmj.o -MD -MP -MF $depbase.Tpo -c -o mlmmj.o mlmmj.c &&\
mv -f $depbase.Tpo $depbase.Po
mlmmj.c:127:20: warning: ‘formatted_text1’ defined but not used [-Wunused-variable]
  127 | static const char *formatted_text1 =
      |                    ^~~~~~~~~~~~~~~