From f3188dcc18d8de1192c87e7e0284800e9488b976 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sat, 9 Oct 2010 13:06:58 +0300 Subject: Reorganize libmailutils directory structure. * configure.ac (AC_CONFIG_FILES): Add libmailutils/ subdirs. * include/mailutils/Makefile.am: Update references to libmailutils. * po/POTFILES.in: Likewise. * libmailutils/.gitignore: Update. * libmailutils/Makefile.am: Use convenience libraries in subdirs. * libmailutils/string/Makefile.am: New file. * libmailutils/cstrcasecmp.c: Move to libmailutils/string. * libmailutils/cstrlower.c: Likewise. * libmailutils/cstrupper.c: Likewise. * libmailutils/strltrim.c: Likewise. * libmailutils/strskip.c: Likewise. * libmailutils/stripws.c: Likewise. * libmailutils/strrtrim.c: Likewise. * libmailutils/asnprintf.c: Likewise. * libmailutils/asprintf.c: Likewise. * libmailutils/muctype.c: Likewise. * libmailutils/vasnprintf.c: Likewise. * libmailutils/mkfilename.c: Likewise. * libmailutils/stream/Makefile.am: New file. * libmailutils/dbgstream.c: Move to libmailutils/stream. * libmailutils/file_stream.c: Likewise. * libmailutils/fltstream.c: Likewise. * libmailutils/iostream.c: Likewise. * libmailutils/mapfile_stream.c: Likewise. * libmailutils/memory_stream.c: Likewise. * libmailutils/message_stream.c: Likewise. * libmailutils/prog_stream.c: Likewise. * libmailutils/rdcache_stream.c: Likewise. * libmailutils/socket_stream.c: Likewise. * libmailutils/stdio_stream.c: Likewise. * libmailutils/stream.c: Likewise. * libmailutils/stream_printf.c: Likewise. * libmailutils/stream_vprintf.c: Likewise. * libmailutils/streamcpy.c: Likewise. * libmailutils/streamref.c: Likewise. * libmailutils/tcp.c: Likewise. * libmailutils/temp_file_stream.c: Likewise. * libmailutils/xscript-stream.c * libmailutils/cfg/Makefile.am: New file. * libmailutils/cfg/.gitignore: New file. * libmailutils/cfg_driver.c: Move to libmailutils/cfg/driver.c. * libmailutils/cfg_format.c: Move to libmailutils/cfg/format.c. * libmailutils/cfg_lexer.l: Move to libmailutils/cfg/lexer.l. * libmailutils/cfg_parser.y: Move to libmailutils/cfg/parser.y. * libmailutils/gocs.c: Move to libmailutils/cfg/gocs.c. * libmailutils/diag/Makefile.am: New file. * libmailutils/diag/.gitignore: New file. * libmailutils/debug.c: Move to libmailutils/diag. * libmailutils/diag.c: Likewise. * libmailutils/gdebug.c: Likewise. * libmailutils/errors: Likewise. * libmailutils/muerrno.cin: Likewise. * libmailutils/syslog.c: Likewise. * libmailutils/dbgstderr.c: Likewise. * libmailutils/dbgsyslog.c: Likewise. * libmailutils/address/Makefile.am: New file. * libmailutils/address.c: Move to libmailutils/address. * libmailutils/parse822.c: Likewise. * libmailutils/mailbox/Makefile.am: New file. * libmailutils/mailbox.c: Move to libmailutils/mailbox. * libmailutils/mbx_default.c: Likewise. * libmailutils/mbxitr.c: Likewise. * libmailutils/attribute.c: Likewise. * libmailutils/body.c: Likewise. * libmailutils/envelope.c: Likewise. * libmailutils/folder.c: Likewise. * libmailutils/hdritr.c: Likewise. * libmailutils/header.c: Likewise. * libmailutils/message.c: Likewise. * libmailutils/msgscan.c: Likewise. * libmailutils/mailer/Makefile.am: New file. * libmailutils/mailer.c: Move to libmailutils/mailer. * libmailutils/progmailer.c: Likewise. * libmailutils/mime/Makefile.am: New file. * libmailutils/attachment.c: Move to libmailutils/mime. * libmailutils/mime.c: Likewise. * libmailutils/mimehdr.c: Likewise. * libmailutils/server/Makefile.am: New file. * libmailutils/acl.c: Move to libmailutils/server. * libmailutils/server.c: Likewise. * libmailutils/msrv.c: Likewise. * libmailutils/ipsrv.c: Likewise. * libmailutils/auth/Makefile.am: New file. * libmailutils/auth.c: Move to libmailutils/auth. * libmailutils/mu_auth.c: Likewise. * libmailutils/system.c: Likewise. * libmailutils/base/Makefile.am: New file. * libmailutils/base/.gitignore: New file. * libmailutils/alloc.c: Move to libmailutils/base. * libmailutils/amd.c: Likewise. * libmailutils/argcv.c: Likewise. * libmailutils/assoc.c: Likewise. * libmailutils/daemon.c: Likewise. * libmailutils/date.c: Likewise. * libmailutils/fgetpwent.c: Likewise. * libmailutils/freeitem.c: Likewise. * libmailutils/getpass.c: Likewise. * libmailutils/iterator.c: Likewise. * libmailutils/kwd.c: Likewise. * libmailutils/list.c: Likewise. * libmailutils/listlist.c: Likewise. * libmailutils/locale.c: Likewise. * libmailutils/locker.c: Likewise. * libmailutils/mailcap.c: Likewise. * libmailutils/md5.c: Likewise. * libmailutils/monitor.c: Likewise. * libmailutils/munre.c: Likewise. * libmailutils/mutil.c: Likewise. * libmailutils/nls.c: Likewise. * libmailutils/nullrec.c: Likewise. * libmailutils/observer.c: Likewise. * libmailutils/opool.c: Likewise. * libmailutils/parsedate.y: Likewise. * libmailutils/permstr.c: Likewise. * libmailutils/property.c: Likewise. * libmailutils/registrar.c: Likewise. * libmailutils/refcount.c: Likewise. * libmailutils/rfc2047.c: Likewise. * libmailutils/sha1.c: Likewise. * libmailutils/secret.c: Likewise. * libmailutils/ticket.c: Likewise. * libmailutils/url.c: Likewise. * libmailutils/vartab.c: Likewise. * libmailutils/version.c: Likewise. * libmailutils/wicket.c: Likewise. --- libmailutils/.gitignore | 8 - libmailutils/Makefile.am | 218 +--- libmailutils/acl.c | 784 ------------ libmailutils/address.c | 595 ---------- libmailutils/address/Makefile.am | 24 + libmailutils/address/address.c | 595 ++++++++++ libmailutils/address/parse822.c | 2040 ++++++++++++++++++++++++++++++++ libmailutils/alloc.c | 116 -- libmailutils/amd.c | 2033 ------------------------------- libmailutils/argcv.c | 549 --------- libmailutils/asnprintf.c | 40 - libmailutils/asprintf.c | 42 - libmailutils/assoc.c | 529 --------- libmailutils/attachment.c | 461 -------- libmailutils/attribute.c | 470 -------- libmailutils/auth.c | 164 --- libmailutils/auth/Makefile.am | 25 + libmailutils/auth/auth.c | 164 +++ libmailutils/auth/mu_auth.c | 539 +++++++++ libmailutils/auth/system.c | 160 +++ libmailutils/base/.gitignore | 1 + libmailutils/base/Makefile.am | 80 ++ libmailutils/base/alloc.c | 116 ++ libmailutils/base/amd.c | 2033 +++++++++++++++++++++++++++++++ libmailutils/base/argcv.c | 549 +++++++++ libmailutils/base/assoc.c | 529 +++++++++ libmailutils/base/daemon.c | 189 +++ libmailutils/base/date.c | 245 ++++ libmailutils/base/fgetpwent.c | 163 +++ libmailutils/base/freeitem.c | 29 + libmailutils/base/getpass.c | 59 + libmailutils/base/iterator.c | 284 +++++ libmailutils/base/kwd.c | 94 ++ libmailutils/base/list.c | 693 +++++++++++ libmailutils/base/listlist.c | 139 +++ libmailutils/base/locale.c | 242 ++++ libmailutils/base/locker.c | 1027 ++++++++++++++++ libmailutils/base/mailcap.c | 740 ++++++++++++ libmailutils/base/md5.c | 454 +++++++ libmailutils/base/monitor.c | 282 +++++ libmailutils/base/munre.c | 93 ++ libmailutils/base/mutil.c | 1536 ++++++++++++++++++++++++ libmailutils/base/nls.c | 62 + libmailutils/base/nullrec.c | 49 + libmailutils/base/observer.c | 239 ++++ libmailutils/base/opool.c | 446 +++++++ libmailutils/base/parsedate.y | 1206 +++++++++++++++++++ libmailutils/base/permstr.c | 128 ++ libmailutils/base/property.c | 192 +++ libmailutils/base/refcount.c | 107 ++ libmailutils/base/registrar.c | 443 +++++++ libmailutils/base/rfc2047.c | 314 +++++ libmailutils/base/secret.c | 135 +++ libmailutils/base/sha1.c | 418 +++++++ libmailutils/base/ticket.c | 245 ++++ libmailutils/base/url.c | 1140 ++++++++++++++++++ libmailutils/base/vartab.c | 346 ++++++ libmailutils/base/version.c | 189 +++ libmailutils/base/wicket.c | 357 ++++++ libmailutils/base64.c | 278 ----- libmailutils/binflt.c | 113 -- libmailutils/body.c | 417 ------- libmailutils/cfg/.gitignore | 3 + libmailutils/cfg/Makefile.am | 54 + libmailutils/cfg/driver.c | 754 ++++++++++++ libmailutils/cfg/format.c | 395 +++++++ libmailutils/cfg/gocs.c | 397 +++++++ libmailutils/cfg/lexer.l | 405 +++++++ libmailutils/cfg/parser.y | 1839 ++++++++++++++++++++++++++++ libmailutils/cfg_driver.c | 754 ------------ libmailutils/cfg_format.c | 395 ------- libmailutils/cfg_lexer.l | 405 ------- libmailutils/cfg_parser.y | 1839 ---------------------------- libmailutils/crlfdot.c | 336 ------ libmailutils/crlfflt.c | 182 --- libmailutils/cstrcasecmp.c | 58 - libmailutils/cstrlower.c | 31 - libmailutils/cstrupper.c | 31 - libmailutils/daemon.c | 189 --- libmailutils/date.c | 245 ---- libmailutils/dbgstderr.c | 36 - libmailutils/dbgstream.c | 93 -- libmailutils/dbgsyslog.c | 34 - libmailutils/debug.c | 299 ----- libmailutils/diag.c | 179 --- libmailutils/diag/.gitignore | 1 + libmailutils/diag/Makefile.am | 42 + libmailutils/diag/dbgstderr.c | 36 + libmailutils/diag/dbgsyslog.c | 34 + libmailutils/diag/debug.c | 299 +++++ libmailutils/diag/diag.c | 179 +++ libmailutils/diag/errors | 96 ++ libmailutils/diag/gdebug.c | 263 ++++ libmailutils/diag/muerrno.cin | 65 + libmailutils/diag/muerror.c | 117 ++ libmailutils/diag/syslog.c | 145 +++ libmailutils/dot.c | 268 ----- libmailutils/envelope.c | 181 --- libmailutils/errors | 96 -- libmailutils/fgetpwent.c | 163 --- libmailutils/file_stream.c | 402 ------- libmailutils/filter.c | 194 --- libmailutils/filter/Makefile.am | 33 + libmailutils/filter/base64.c | 278 +++++ libmailutils/filter/binflt.c | 113 ++ libmailutils/filter/crlfdot.c | 336 ++++++ libmailutils/filter/crlfflt.c | 182 +++ libmailutils/filter/dot.c | 268 +++++ libmailutils/filter/filter.c | 194 +++ libmailutils/filter/filter_iconv.c | 482 ++++++++ libmailutils/filter/fromflt.c | 283 +++++ libmailutils/filter/linelenflt.c | 110 ++ libmailutils/filter/qpflt.c | 262 ++++ libmailutils/filter_iconv.c | 482 -------- libmailutils/fltstream.c | 534 --------- libmailutils/folder.c | 511 -------- libmailutils/freeitem.c | 29 - libmailutils/fromflt.c | 283 ----- libmailutils/gdebug.c | 263 ---- libmailutils/getpass.c | 59 - libmailutils/gocs.c | 397 ------- libmailutils/hdritr.c | 162 --- libmailutils/header.c | 1222 ------------------- libmailutils/iostream.c | 288 ----- libmailutils/ipsrv.c | 580 --------- libmailutils/iterator.c | 284 ----- libmailutils/kwd.c | 94 -- libmailutils/linelenflt.c | 110 -- libmailutils/list.c | 693 ----------- libmailutils/listlist.c | 139 --- libmailutils/locale.c | 242 ---- libmailutils/locker.c | 1027 ---------------- libmailutils/mailbox.c | 819 ------------- libmailutils/mailbox/Makefile.am | 33 + libmailutils/mailbox/attribute.c | 470 ++++++++ libmailutils/mailbox/body.c | 417 +++++++ libmailutils/mailbox/envelope.c | 181 +++ libmailutils/mailbox/folder.c | 511 ++++++++ libmailutils/mailbox/hdritr.c | 162 +++ libmailutils/mailbox/header.c | 1222 +++++++++++++++++++ libmailutils/mailbox/mailbox.c | 819 +++++++++++++ libmailutils/mailbox/mbx_default.c | 454 +++++++ libmailutils/mailbox/mbxitr.c | 160 +++ libmailutils/mailbox/message.c | 1294 ++++++++++++++++++++ libmailutils/mailbox/msgscan.c | 106 ++ libmailutils/mailcap.c | 740 ------------ libmailutils/mailer.c | 698 ----------- libmailutils/mailer/Makefile.am | 24 + libmailutils/mailer/mailer.c | 698 +++++++++++ libmailutils/mailer/progmailer.c | 314 +++++ libmailutils/mapfile_stream.c | 385 ------ libmailutils/mbx_default.c | 454 ------- libmailutils/mbxitr.c | 160 --- libmailutils/md5.c | 454 ------- libmailutils/memory_stream.c | 226 ---- libmailutils/message.c | 1294 -------------------- libmailutils/message_stream.c | 440 ------- libmailutils/mime.c | 1071 ----------------- libmailutils/mime/Makefile.am | 25 + libmailutils/mime/attachment.c | 461 ++++++++ libmailutils/mime/mime.c | 1071 +++++++++++++++++ libmailutils/mime/mimehdr.c | 691 +++++++++++ libmailutils/mimehdr.c | 691 ----------- libmailutils/mkfilename.c | 46 - libmailutils/monitor.c | 282 ----- libmailutils/msgscan.c | 106 -- libmailutils/msrv.c | 1091 ----------------- libmailutils/mu_auth.c | 539 --------- libmailutils/muctype.c | 152 --- libmailutils/muerrno.cin | 65 - libmailutils/muerror.c | 117 -- libmailutils/munre.c | 93 -- libmailutils/mutil.c | 1536 ------------------------ libmailutils/nls.c | 62 - libmailutils/nullrec.c | 49 - libmailutils/observer.c | 239 ---- libmailutils/opool.c | 446 ------- libmailutils/parse822.c | 2040 -------------------------------- libmailutils/parsedate.y | 1206 ------------------- libmailutils/permstr.c | 128 -- libmailutils/prog_stream.c | 466 -------- libmailutils/progmailer.c | 314 ----- libmailutils/property.c | 192 --- libmailutils/qpflt.c | 262 ---- libmailutils/rdcache_stream.c | 212 ---- libmailutils/refcount.c | 107 -- libmailutils/registrar.c | 443 ------- libmailutils/rfc2047.c | 314 ----- libmailutils/secret.c | 135 --- libmailutils/server.c | 293 ----- libmailutils/server/Makefile.am | 26 + libmailutils/server/acl.c | 784 ++++++++++++ libmailutils/server/ipsrv.c | 580 +++++++++ libmailutils/server/msrv.c | 1091 +++++++++++++++++ libmailutils/server/server.c | 293 +++++ libmailutils/sha1.c | 418 ------- libmailutils/size_max.h | 31 - libmailutils/socket_stream.c | 126 -- libmailutils/stdio_stream.c | 85 -- libmailutils/stream.c | 1188 ------------------- libmailutils/stream/Makefile.am | 41 + libmailutils/stream/dbgstream.c | 93 ++ libmailutils/stream/file_stream.c | 402 +++++++ libmailutils/stream/fltstream.c | 534 +++++++++ libmailutils/stream/iostream.c | 288 +++++ libmailutils/stream/mapfile_stream.c | 385 ++++++ libmailutils/stream/memory_stream.c | 226 ++++ libmailutils/stream/message_stream.c | 440 +++++++ libmailutils/stream/prog_stream.c | 466 ++++++++ libmailutils/stream/rdcache_stream.c | 212 ++++ libmailutils/stream/socket_stream.c | 126 ++ libmailutils/stream/stdio_stream.c | 85 ++ libmailutils/stream/stream.c | 1188 +++++++++++++++++++ libmailutils/stream/stream_printf.c | 32 + libmailutils/stream/stream_vprintf.c | 42 + libmailutils/stream/streamcpy.c | 129 ++ libmailutils/stream/streamref.c | 313 +++++ libmailutils/stream/tcp.c | 363 ++++++ libmailutils/stream/temp_file_stream.c | 75 ++ libmailutils/stream/xscript-stream.c | 460 +++++++ libmailutils/stream_printf.c | 32 - libmailutils/stream_vprintf.c | 42 - libmailutils/streamcpy.c | 129 -- libmailutils/streamref.c | 313 ----- libmailutils/string/Makefile.am | 34 + libmailutils/string/asnprintf.c | 40 + libmailutils/string/asprintf.c | 42 + libmailutils/string/cstrcasecmp.c | 58 + libmailutils/string/cstrlower.c | 31 + libmailutils/string/cstrupper.c | 31 + libmailutils/string/mkfilename.c | 46 + libmailutils/string/muctype.c | 152 +++ libmailutils/string/stripws.c | 33 + libmailutils/string/strltrim.c | 63 + libmailutils/string/strrtrim.c | 51 + libmailutils/string/strskip.c | 59 + libmailutils/string/vasnprintf.c | 87 ++ libmailutils/stripws.c | 33 - libmailutils/strltrim.c | 63 - libmailutils/strrtrim.c | 51 - libmailutils/strskip.c | 59 - libmailutils/syslog.c | 145 --- libmailutils/system.c | 160 --- libmailutils/tcp.c | 363 ------ libmailutils/temp_file_stream.c | 75 -- libmailutils/ticket.c | 245 ---- libmailutils/url.c | 1140 ------------------ libmailutils/vartab.c | 346 ------ libmailutils/vasnprintf.c | 87 -- libmailutils/version.c | 189 --- libmailutils/wicket.c | 357 ------ libmailutils/xscript-stream.c | 460 ------- 252 files changed, 45355 insertions(+), 45094 deletions(-) delete mode 100644 libmailutils/acl.c delete mode 100644 libmailutils/address.c create mode 100644 libmailutils/address/Makefile.am create mode 100644 libmailutils/address/address.c create mode 100644 libmailutils/address/parse822.c delete mode 100644 libmailutils/alloc.c delete mode 100644 libmailutils/amd.c delete mode 100644 libmailutils/argcv.c delete mode 100644 libmailutils/asnprintf.c delete mode 100644 libmailutils/asprintf.c delete mode 100644 libmailutils/assoc.c delete mode 100644 libmailutils/attachment.c delete mode 100644 libmailutils/attribute.c delete mode 100644 libmailutils/auth.c create mode 100644 libmailutils/auth/Makefile.am create mode 100644 libmailutils/auth/auth.c create mode 100644 libmailutils/auth/mu_auth.c create mode 100644 libmailutils/auth/system.c create mode 100644 libmailutils/base/.gitignore create mode 100644 libmailutils/base/Makefile.am create mode 100644 libmailutils/base/alloc.c create mode 100644 libmailutils/base/amd.c create mode 100644 libmailutils/base/argcv.c create mode 100644 libmailutils/base/assoc.c create mode 100644 libmailutils/base/daemon.c create mode 100644 libmailutils/base/date.c create mode 100644 libmailutils/base/fgetpwent.c create mode 100644 libmailutils/base/freeitem.c create mode 100644 libmailutils/base/getpass.c create mode 100644 libmailutils/base/iterator.c create mode 100644 libmailutils/base/kwd.c create mode 100644 libmailutils/base/list.c create mode 100644 libmailutils/base/listlist.c create mode 100644 libmailutils/base/locale.c create mode 100644 libmailutils/base/locker.c create mode 100644 libmailutils/base/mailcap.c create mode 100644 libmailutils/base/md5.c create mode 100644 libmailutils/base/monitor.c create mode 100644 libmailutils/base/munre.c create mode 100644 libmailutils/base/mutil.c create mode 100644 libmailutils/base/nls.c create mode 100644 libmailutils/base/nullrec.c create mode 100644 libmailutils/base/observer.c create mode 100644 libmailutils/base/opool.c create mode 100644 libmailutils/base/parsedate.y create mode 100644 libmailutils/base/permstr.c create mode 100644 libmailutils/base/property.c create mode 100644 libmailutils/base/refcount.c create mode 100644 libmailutils/base/registrar.c create mode 100644 libmailutils/base/rfc2047.c create mode 100644 libmailutils/base/secret.c create mode 100644 libmailutils/base/sha1.c create mode 100644 libmailutils/base/ticket.c create mode 100644 libmailutils/base/url.c create mode 100644 libmailutils/base/vartab.c create mode 100644 libmailutils/base/version.c create mode 100644 libmailutils/base/wicket.c delete mode 100644 libmailutils/base64.c delete mode 100644 libmailutils/binflt.c delete mode 100644 libmailutils/body.c create mode 100644 libmailutils/cfg/.gitignore create mode 100644 libmailutils/cfg/Makefile.am create mode 100644 libmailutils/cfg/driver.c create mode 100644 libmailutils/cfg/format.c create mode 100644 libmailutils/cfg/gocs.c create mode 100644 libmailutils/cfg/lexer.l create mode 100644 libmailutils/cfg/parser.y delete mode 100644 libmailutils/cfg_driver.c delete mode 100644 libmailutils/cfg_format.c delete mode 100644 libmailutils/cfg_lexer.l delete mode 100644 libmailutils/cfg_parser.y delete mode 100644 libmailutils/crlfdot.c delete mode 100644 libmailutils/crlfflt.c delete mode 100644 libmailutils/cstrcasecmp.c delete mode 100644 libmailutils/cstrlower.c delete mode 100644 libmailutils/cstrupper.c delete mode 100644 libmailutils/daemon.c delete mode 100644 libmailutils/date.c delete mode 100644 libmailutils/dbgstderr.c delete mode 100644 libmailutils/dbgstream.c delete mode 100644 libmailutils/dbgsyslog.c delete mode 100644 libmailutils/debug.c delete mode 100644 libmailutils/diag.c create mode 100644 libmailutils/diag/.gitignore create mode 100644 libmailutils/diag/Makefile.am create mode 100644 libmailutils/diag/dbgstderr.c create mode 100644 libmailutils/diag/dbgsyslog.c create mode 100644 libmailutils/diag/debug.c create mode 100644 libmailutils/diag/diag.c create mode 100644 libmailutils/diag/errors create mode 100644 libmailutils/diag/gdebug.c create mode 100644 libmailutils/diag/muerrno.cin create mode 100644 libmailutils/diag/muerror.c create mode 100644 libmailutils/diag/syslog.c delete mode 100644 libmailutils/dot.c delete mode 100644 libmailutils/envelope.c delete mode 100644 libmailutils/errors delete mode 100644 libmailutils/fgetpwent.c delete mode 100644 libmailutils/file_stream.c delete mode 100644 libmailutils/filter.c create mode 100644 libmailutils/filter/Makefile.am create mode 100644 libmailutils/filter/base64.c create mode 100644 libmailutils/filter/binflt.c create mode 100644 libmailutils/filter/crlfdot.c create mode 100644 libmailutils/filter/crlfflt.c create mode 100644 libmailutils/filter/dot.c create mode 100644 libmailutils/filter/filter.c create mode 100644 libmailutils/filter/filter_iconv.c create mode 100644 libmailutils/filter/fromflt.c create mode 100644 libmailutils/filter/linelenflt.c create mode 100644 libmailutils/filter/qpflt.c delete mode 100644 libmailutils/filter_iconv.c delete mode 100644 libmailutils/fltstream.c delete mode 100644 libmailutils/folder.c delete mode 100644 libmailutils/freeitem.c delete mode 100644 libmailutils/fromflt.c delete mode 100644 libmailutils/gdebug.c delete mode 100644 libmailutils/getpass.c delete mode 100644 libmailutils/gocs.c delete mode 100644 libmailutils/hdritr.c delete mode 100644 libmailutils/header.c delete mode 100644 libmailutils/iostream.c delete mode 100644 libmailutils/ipsrv.c delete mode 100644 libmailutils/iterator.c delete mode 100644 libmailutils/kwd.c delete mode 100644 libmailutils/linelenflt.c delete mode 100644 libmailutils/list.c delete mode 100644 libmailutils/listlist.c delete mode 100644 libmailutils/locale.c delete mode 100644 libmailutils/locker.c delete mode 100644 libmailutils/mailbox.c create mode 100644 libmailutils/mailbox/Makefile.am create mode 100644 libmailutils/mailbox/attribute.c create mode 100644 libmailutils/mailbox/body.c create mode 100644 libmailutils/mailbox/envelope.c create mode 100644 libmailutils/mailbox/folder.c create mode 100644 libmailutils/mailbox/hdritr.c create mode 100644 libmailutils/mailbox/header.c create mode 100644 libmailutils/mailbox/mailbox.c create mode 100644 libmailutils/mailbox/mbx_default.c create mode 100644 libmailutils/mailbox/mbxitr.c create mode 100644 libmailutils/mailbox/message.c create mode 100644 libmailutils/mailbox/msgscan.c delete mode 100644 libmailutils/mailcap.c delete mode 100644 libmailutils/mailer.c create mode 100644 libmailutils/mailer/Makefile.am create mode 100644 libmailutils/mailer/mailer.c create mode 100644 libmailutils/mailer/progmailer.c delete mode 100644 libmailutils/mapfile_stream.c delete mode 100644 libmailutils/mbx_default.c delete mode 100644 libmailutils/mbxitr.c delete mode 100644 libmailutils/md5.c delete mode 100644 libmailutils/memory_stream.c delete mode 100644 libmailutils/message.c delete mode 100644 libmailutils/message_stream.c delete mode 100644 libmailutils/mime.c create mode 100644 libmailutils/mime/Makefile.am create mode 100644 libmailutils/mime/attachment.c create mode 100644 libmailutils/mime/mime.c create mode 100644 libmailutils/mime/mimehdr.c delete mode 100644 libmailutils/mimehdr.c delete mode 100644 libmailutils/mkfilename.c delete mode 100644 libmailutils/monitor.c delete mode 100644 libmailutils/msgscan.c delete mode 100644 libmailutils/msrv.c delete mode 100644 libmailutils/mu_auth.c delete mode 100644 libmailutils/muctype.c delete mode 100644 libmailutils/muerrno.cin delete mode 100644 libmailutils/muerror.c delete mode 100644 libmailutils/munre.c delete mode 100644 libmailutils/mutil.c delete mode 100644 libmailutils/nls.c delete mode 100644 libmailutils/nullrec.c delete mode 100644 libmailutils/observer.c delete mode 100644 libmailutils/opool.c delete mode 100644 libmailutils/parse822.c delete mode 100644 libmailutils/parsedate.y delete mode 100644 libmailutils/permstr.c delete mode 100644 libmailutils/prog_stream.c delete mode 100644 libmailutils/progmailer.c delete mode 100644 libmailutils/property.c delete mode 100644 libmailutils/qpflt.c delete mode 100644 libmailutils/rdcache_stream.c delete mode 100644 libmailutils/refcount.c delete mode 100644 libmailutils/registrar.c delete mode 100644 libmailutils/rfc2047.c delete mode 100644 libmailutils/secret.c delete mode 100644 libmailutils/server.c create mode 100644 libmailutils/server/Makefile.am create mode 100644 libmailutils/server/acl.c create mode 100644 libmailutils/server/ipsrv.c create mode 100644 libmailutils/server/msrv.c create mode 100644 libmailutils/server/server.c delete mode 100644 libmailutils/sha1.c delete mode 100644 libmailutils/size_max.h delete mode 100644 libmailutils/socket_stream.c delete mode 100644 libmailutils/stdio_stream.c delete mode 100644 libmailutils/stream.c create mode 100644 libmailutils/stream/Makefile.am create mode 100644 libmailutils/stream/dbgstream.c create mode 100644 libmailutils/stream/file_stream.c create mode 100644 libmailutils/stream/fltstream.c create mode 100644 libmailutils/stream/iostream.c create mode 100644 libmailutils/stream/mapfile_stream.c create mode 100644 libmailutils/stream/memory_stream.c create mode 100644 libmailutils/stream/message_stream.c create mode 100644 libmailutils/stream/prog_stream.c create mode 100644 libmailutils/stream/rdcache_stream.c create mode 100644 libmailutils/stream/socket_stream.c create mode 100644 libmailutils/stream/stdio_stream.c create mode 100644 libmailutils/stream/stream.c create mode 100644 libmailutils/stream/stream_printf.c create mode 100644 libmailutils/stream/stream_vprintf.c create mode 100644 libmailutils/stream/streamcpy.c create mode 100644 libmailutils/stream/streamref.c create mode 100644 libmailutils/stream/tcp.c create mode 100644 libmailutils/stream/temp_file_stream.c create mode 100644 libmailutils/stream/xscript-stream.c delete mode 100644 libmailutils/stream_printf.c delete mode 100644 libmailutils/stream_vprintf.c delete mode 100644 libmailutils/streamcpy.c delete mode 100644 libmailutils/streamref.c create mode 100644 libmailutils/string/Makefile.am create mode 100644 libmailutils/string/asnprintf.c create mode 100644 libmailutils/string/asprintf.c create mode 100644 libmailutils/string/cstrcasecmp.c create mode 100644 libmailutils/string/cstrlower.c create mode 100644 libmailutils/string/cstrupper.c create mode 100644 libmailutils/string/mkfilename.c create mode 100644 libmailutils/string/muctype.c create mode 100644 libmailutils/string/stripws.c create mode 100644 libmailutils/string/strltrim.c create mode 100644 libmailutils/string/strrtrim.c create mode 100644 libmailutils/string/strskip.c create mode 100644 libmailutils/string/vasnprintf.c delete mode 100644 libmailutils/stripws.c delete mode 100644 libmailutils/strltrim.c delete mode 100644 libmailutils/strrtrim.c delete mode 100644 libmailutils/strskip.c delete mode 100644 libmailutils/syslog.c delete mode 100644 libmailutils/system.c delete mode 100644 libmailutils/tcp.c delete mode 100644 libmailutils/temp_file_stream.c delete mode 100644 libmailutils/ticket.c delete mode 100644 libmailutils/url.c delete mode 100644 libmailutils/vartab.c delete mode 100644 libmailutils/vasnprintf.c delete mode 100644 libmailutils/version.c delete mode 100644 libmailutils/wicket.c delete mode 100644 libmailutils/xscript-stream.c (limited to 'libmailutils') diff --git a/libmailutils/.gitignore b/libmailutils/.gitignore index 8ce64ea2d..048e16e75 100644 --- a/libmailutils/.gitignore +++ b/libmailutils/.gitignore @@ -4,13 +4,5 @@ .libs Makefile Makefile.in -T -_* .gdbinit -mailutils-config -parsedate.c *y.output -muerrno.c -cfg_lexer.c -cfg_parser.c -cfg_parser.h diff --git a/libmailutils/Makefile.am b/libmailutils/Makefile.am index 07a0a4e54..f13085f32 100644 --- a/libmailutils/Makefile.am +++ b/libmailutils/Makefile.am @@ -1,188 +1,42 @@ -## Process this file with GNU Automake to create Makefile.in - -## Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, -## 2010 Free Software Foundation, Inc. -## -## GNU Mailutils is free software; you can redistribute it and/or -## modify it under the terms of the GNU General Public License as -## published by the Free Software Foundation; either version 3, or (at -## your option) any later version. -## -## This program is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA -## 02110-1301 USA - -INCLUDES = @MU_LIB_COMMON_INCLUDES@ -I${top_srcdir}/libmailutils - -YLWRAP = $(SHELL) $(mu_aux_dir)/gylwrap -AM_YFLAGS=-vt -AM_LFLAGS=-dvp - -SUBDIRS = . tests +# GNU Mailutils -- a suite of utilities for electronic mail +# Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, +# 2010 Free Software Foundation, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General +# Public License along with this library. If not, see +# . + +SUBDIRS = auth base address cfg diag filter mailbox mailer mime\ + server string stream . tests lib_LTLIBRARIES = libmailutils.la -localedir = $(datadir)/locale -AM_CPPFLAGS = \ - -DSYSCONFDIR=\"$(sysconfdir)\"\ - -DSITE_VIRTUAL_PWDDIR=\"@SITE_VIRTUAL_PWDDIR@\"\ - -DLOCALEDIR=\"$(localedir)\" - -EXTRA_DIST = \ - errors\ - muerrno.cin\ - parsedate.y\ - fgetpwent.c\ - cfg_lexer.l\ - cfg_parser.y\ - cfg_parser.h - -libmailutils_la_SOURCES = \ - acl.c\ - address.c\ - alloc.c\ - amd.c\ - argcv.c\ - asnprintf.c\ - asprintf.c\ - assoc.c\ - attachment.c\ - attribute.c\ - auth.c\ - base64.c\ - binflt.c\ - body.c\ - cstrcasecmp.c\ - cfg_driver.c\ - cfg_format.c\ - cfg_lexer.c\ - cfg_parser.c\ - crlfdot.c\ - crlfflt.c\ - cstrlower.c\ - cstrupper.c\ - daemon.c\ - date.c\ - dbgstderr.c\ - dbgstream.c\ - dbgsyslog.c\ - debug.c\ - diag.c\ - dot.c\ - envelope.c\ - fgetpwent.c\ - file_stream.c\ - filter.c\ - filter_iconv.c\ - fltstream.c\ - folder.c\ - freeitem.c\ - fromflt.c\ - gdebug.c\ - getpass.c\ - gocs.c\ - hdritr.c\ - header.c\ - iostream.c\ - iterator.c\ - ipsrv.c\ - kwd.c\ - linelenflt.c\ - list.c\ - listlist.c\ - locale.c\ - locker.c\ - mailbox.c\ - mailcap.c\ - mailer.c\ - mapfile_stream.c\ - mbx_default.c\ - mbxitr.c\ - md5.c\ - message.c\ - memory_stream.c\ - message_stream.c\ - mime.c\ - mimehdr.c\ - mkfilename.c\ - monitor.c\ - msgscan.c\ - msrv.c\ - mu_auth.c\ - muctype.c\ - munre.c\ - mutil.c\ - muerror.c\ - muerrno.c\ - nls.c\ - nullrec.c\ - observer.c\ - opool.c\ - parse822.c\ - parsedate.c\ - permstr.c\ - progmailer.c\ - prog_stream.c\ - property.c\ - qpflt.c\ - rdcache_stream.c\ - registrar.c\ - refcount.c\ - rfc2047.c\ - sha1.c\ - secret.c\ - server.c\ - socket_stream.c\ - stdio_stream.c\ - stream.c\ - stream_printf.c\ - stream_vprintf.c\ - streamcpy.c\ - streamref.c\ - strltrim.c\ - strskip.c\ - stripws.c\ - strrtrim.c\ - syslog.c\ - system.c\ - temp_file_stream.c\ - ticket.c\ - tcp.c\ - url.c\ - vartab.c\ - vasnprintf.c\ - version.c\ - wicket.c\ - xscript-stream.c - -BUILT_SOURCES = parsedate.c muerrno.c cfg_parser.c cfg_parser.h cfg_lexer.c -MOSTLYCLEANFILES= - -parsedate.c: $(srcdir)/parsedate.y - $(YLWRAP) "$(YACC) $(AM_YFLAGS)" $< \ - y.tab.c parsedate.c y.output parsedate.y.output \ - -- -yy pd_yy - -cfg_parser.c cfg_parser.h: $(srcdir)/cfg_parser.y - $(YLWRAP) "$(YACC) $(AM_YFLAGS) -d" $< \ - y.tab.c cfg_parser.c y.tab.h cfg_parser.h \ - y.output cfg_parser.y.output \ - -- -yy mu_cfg_yy - -cfg_lexer.c: $(srcdir)/cfg_lexer.l cfg_parser.h - $(YLWRAP) "$(LEX) $(AM_LFLAGS) $(LFLAGS)" \ - $(srcdir)/cfg_lexer.l lex.yy.c cfg_lexer.c \ - -- -yy mu_cfg_yy - -muerrno.c: errors muerrno.cin - $(AWK) -f $(mu_aux_dir)/generr.awk $^ > $@ +libmailutils_la_SOURCES = + +libmailutils_la_LIBADD = \ + @MU_COMMON_LIBRARIES@\ + auth/libauth.la\ + base/libbase.la\ + address/libaddress.la\ + cfg/libcfg.la\ + diag/libdiag.la\ + filter/libfilter.la\ + mailbox/libmailbox.la\ + mailer/libmailer.la\ + mime/libmime.la\ + server/libserver.la\ + string/libstring.la\ + stream/libstream.la -libmailutils_la_LIBADD = @MU_COMMON_LIBRARIES@ libmailutils_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ diff --git a/libmailutils/acl.c b/libmailutils/acl.c deleted file mode 100644 index a3e3764f2..000000000 --- a/libmailutils/acl.c +++ /dev/null @@ -1,784 +0,0 @@ -/* GNU Mailutils -- a suite of utilities for electronic mail - Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; If not, see - . */ - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -struct _mu_acl_entry -{ - mu_acl_action_t action; - void *arg; - unsigned netmask; - int salen; - struct sockaddr sa[1]; -}; - -struct _mu_acl -{ - mu_debug_t debug; - mu_list_t aclist; -}; - - -static void -_destroy_acl_entry (void *item) -{ - struct _mu_acl_entry *p = item; - free (p); - /* FIXME: free arg? */ -} - -static size_t -mu_acl_entry_size (int salen) -{ - return sizeof (struct _mu_acl_entry) + salen - sizeof (struct sockaddr); -} - -static int -prepare_sa (struct sockaddr *sa) -{ - switch (sa->sa_family) - { - case AF_INET: - { - struct sockaddr_in *s_in = (struct sockaddr_in *)sa; - s_in->sin_addr.s_addr = ntohl (s_in->sin_addr.s_addr); - break; - } - - case AF_UNIX: - break; - - default: - return 1; - } - return 0; -} - -int -mu_acl_entry_create (struct _mu_acl_entry **pent, - mu_acl_action_t action, void *data, - struct sockaddr *sa, int salen, unsigned long netmask) -{ - struct _mu_acl_entry *p = malloc (mu_acl_entry_size (salen)); - if (!p) - return EINVAL; - - p->action = action; - p->arg = data; - p->netmask = ntohl (netmask); - p->salen = salen; - memcpy (p->sa, sa, salen); - if (prepare_sa (p->sa)) - { - free (p); - return EINVAL; - } - *pent = p; - return 0; -} - - -int -mu_acl_create (mu_acl_t *pacl) -{ - int rc; - mu_acl_t acl; - mu_log_level_t level; - - acl = calloc (1, sizeof (*acl)); - if (!acl) - return errno; - rc = mu_list_create (&acl->aclist); - if (rc) - free (acl); - else - *pacl = acl; - mu_list_set_destroy_item (acl->aclist, _destroy_acl_entry); - - level = mu_global_debug_level ("acl"); - if (level) - { - int status = mu_debug_create (&acl->debug, NULL); - if (status == 0) - mu_debug_set_level (acl->debug, level); - } - - return rc; -} - -int -mu_acl_count (mu_acl_t acl, size_t *pcount) -{ - if (!acl) - return EINVAL; - return mu_list_count (acl->aclist, pcount); -} - -int -mu_acl_destroy (mu_acl_t *pacl) -{ - mu_acl_t acl; - if (!pacl || !*pacl) - return EINVAL; - acl = *pacl; - mu_list_destroy (&acl->aclist); - mu_debug_destroy (&acl->debug, NULL); - free (acl); - *pacl = acl; - return 0; -} - -int -mu_acl_get_debug (mu_acl_t acl, mu_debug_t *pdebug) -{ - if (!acl) - return EINVAL; - if (!pdebug) - return MU_ERR_OUT_NULL; - *pdebug = acl->debug; - return 0; -} - -int -mu_acl_set_debug (mu_acl_t acl, mu_debug_t debug) -{ - if (!acl) - return EINVAL; - acl->debug = debug; - return 0; -} - -int -mu_acl_get_iterator (mu_acl_t acl, mu_iterator_t *pitr) -{ - if (!acl) - return EINVAL; - return mu_list_get_iterator (acl->aclist, pitr); -} - -int -mu_acl_append (mu_acl_t acl, mu_acl_action_t act, - void *data, struct sockaddr *sa, int salen, - unsigned long netmask) -{ - int rc; - struct _mu_acl_entry *ent; - - if (!acl) - return EINVAL; - rc = mu_acl_entry_create (&ent, act, data, sa, salen, netmask); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot allocate ACL entry: %s", - mu_strerror (rc)); - return ENOMEM; - } - - rc = mu_list_append (acl->aclist, ent); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot append ACL entry: %s", - mu_strerror (rc)); - free (ent); - } - return rc; -} - -int -mu_acl_prepend (mu_acl_t acl, mu_acl_action_t act, void *data, - struct sockaddr *sa, int salen, unsigned long netmask) -{ - int rc; - struct _mu_acl_entry *ent; - - if (!acl) - return EINVAL; - rc = mu_acl_entry_create (&ent, act, data, sa, salen, netmask); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot allocate ACL entry: %s", - mu_strerror (rc)); - return ENOMEM; - } - rc = mu_list_prepend (acl->aclist, ent); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot prepend ACL entry: %s", - mu_strerror (rc)); - free (ent); - } - return rc; -} - -int -mu_acl_insert (mu_acl_t acl, size_t pos, int before, - mu_acl_action_t act, void *data, - struct sockaddr *sa, int salen, unsigned long netmask) -{ - int rc; - void *ptr; - struct _mu_acl_entry *ent; - - if (!acl) - return EINVAL; - - rc = mu_list_get (acl->aclist, pos, &ptr); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "No such entry %lu", - (unsigned long) pos); - return rc; - } - rc = mu_acl_entry_create (&ent, act, data, sa, salen, netmask); - if (!ent) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot allocate ACL entry: %s", - mu_strerror (rc)); - return ENOMEM; - } - rc = mu_list_insert (acl->aclist, ptr, ent, before); - if (rc) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, "Cannot insert ACL entry: %s", - mu_strerror (rc)); - free (ent); - } - return rc; -} - - -static mu_kwd_t action_tab[] = { - { "accept", mu_acl_accept }, - { "deny", mu_acl_deny }, - { "log", mu_acl_log }, - { "exec", mu_acl_exec }, - { "ifexec", mu_acl_ifexec }, - { NULL } -}; - -int -mu_acl_action_to_string (mu_acl_action_t act, const char **pstr) -{ - return mu_kwd_xlat_tok (action_tab, act, pstr); -} - -int -mu_acl_string_to_action (const char *str, mu_acl_action_t *pres) -{ - int x; - int rc = mu_kwd_xlat_name (action_tab, str, &x); - if (rc == 0) - *pres = x; - return rc; -} - -#define MU_S_UN_NAME(sa, salen) \ - ((salen < mu_offsetof (struct sockaddr_un,sun_path)) ? "" : (sa)->sun_path) - -static void -debug_sockaddr (mu_debug_t dbg, mu_log_level_t lvl, struct sockaddr *sa, - int salen) -{ - switch (sa->sa_family) - { - case AF_INET: - { - struct sockaddr_in s_in = *(struct sockaddr_in *)sa; - s_in.sin_addr.s_addr = htonl (s_in.sin_addr.s_addr); - mu_debug_printf (dbg, lvl, "{AF_INET %s:%d}", - inet_ntoa (s_in.sin_addr), ntohs (s_in.sin_port)); - break; - } - - case AF_UNIX: - { - struct sockaddr_un *s_un = (struct sockaddr_un *)sa; - if (MU_S_UN_NAME(s_un, salen)[0] == 0) - mu_debug_printf (dbg, lvl, "{AF_UNIX}"); - else - mu_debug_printf (dbg, lvl, "{AF_UNIX %s}", s_un->sun_path); - break; - } - - default: - mu_debug_printf (dbg, lvl, "{Unsupported family: %d}", sa->sa_family); - } -} - -size_t -mu_stpcpy (char **pbuf, size_t *psize, const char *src) -{ - size_t slen = strlen (src); - if (pbuf == NULL || *pbuf == NULL) - return slen; - else - { - char *buf = *pbuf; - size_t size = *psize; - if (size > slen) - size = slen; - memcpy (buf, src, size); - *psize -= size; - *pbuf += size; - if (*psize) - **pbuf = 0; - else - (*pbuf)[-1] = 0; - return size; - } -} - -void -mu_sockaddr_to_str (const struct sockaddr *sa, int salen, - char *bufptr, size_t buflen, - size_t *plen) -{ - char *nbuf; - size_t len = 0; - switch (sa->sa_family) - { - case AF_INET: - { - struct sockaddr_in s_in = *(struct sockaddr_in *)sa; - len += mu_stpcpy (&bufptr, &buflen, inet_ntoa (s_in.sin_addr)); - len += mu_stpcpy (&bufptr, &buflen, ":"); - if (mu_asprintf (&nbuf, "%hu", ntohs (s_in.sin_port)) == 0) - { - len += mu_stpcpy (&bufptr, &buflen, nbuf); - free (nbuf); - } - break; - } - - case AF_UNIX: - { - struct sockaddr_un *s_un = (struct sockaddr_un *)sa; - if (MU_S_UN_NAME(s_un, salen)[0] == 0) - len += mu_stpcpy (&bufptr, &buflen, "anonymous socket"); - else - { - len += mu_stpcpy (&bufptr, &buflen, "socket "); - len += mu_stpcpy (&bufptr, &buflen, s_un->sun_path); - } - break; - } - - default: - len += mu_stpcpy (&bufptr, &buflen, "{Unsupported family"); - if (mu_asprintf (&nbuf, ": %d", sa->sa_family) == 0) - { - len += mu_stpcpy (&bufptr, &buflen, nbuf); - free (nbuf); - } - len += mu_stpcpy (&bufptr, &buflen, "}"); - } - if (plen) - *plen = len + 1; -} - -char * -mu_sockaddr_to_astr (const struct sockaddr *sa, int salen) -{ - size_t size; - char *p; - - mu_sockaddr_to_str (sa, salen, NULL, 0, &size); - p = malloc (size); - if (p) - mu_sockaddr_to_str (sa, salen, p, size, NULL); - return p; -} - -int -_acl_match (mu_debug_t debug, struct _mu_acl_entry *ent, struct sockaddr *sa, - int salen) -{ -#define RESMATCH(word) \ - if (mu_debug_check_level (debug, MU_DEBUG_TRACE0)) \ - mu_debug_printf (debug, MU_DEBUG_TRACE0, "%s; ", word); - - if (mu_debug_check_level (debug, MU_DEBUG_TRACE0)) - { - struct in_addr a; - - __MU_DEBUG1 (debug, MU_DEBUG_TRACE0, "%s", "Does "); - debug_sockaddr (debug, MU_DEBUG_TRACE0, sa, salen); - mu_debug_printf (debug, MU_DEBUG_TRACE0, " match "); - debug_sockaddr (debug, MU_DEBUG_TRACE0, ent->sa, salen); - a.s_addr = ent->netmask; - a.s_addr = htonl (a.s_addr); - mu_debug_printf (debug, MU_DEBUG_TRACE0, " netmask %s? ", inet_ntoa (a)); - } - - if (ent->sa->sa_family != sa->sa_family) - { - RESMATCH ("no"); - return 1; - } - - switch (ent->sa->sa_family) - { - case AF_INET: - { - struct sockaddr_in *sin_ent = (struct sockaddr_in *)ent->sa; - struct sockaddr_in *sin_item = (struct sockaddr_in *)sa; - - if (sin_ent->sin_addr.s_addr != - (sin_item->sin_addr.s_addr & ent->netmask)) - { - RESMATCH ("no (address differs)"); - return 1; - } - - if (sin_ent->sin_port && sin_item->sin_port - && sin_ent->sin_port != sin_item->sin_port) - { - RESMATCH ("no (port differs)"); - return 1; - } - break; - } - - case AF_UNIX: - { - struct sockaddr_un *sun_ent = (struct sockaddr_un *)ent->sa; - struct sockaddr_un *sun_item = (struct sockaddr_un *)sa; - - if (MU_S_UN_NAME (sun_ent, ent->salen)[0] - && MU_S_UN_NAME (sun_item, salen)[0] - && strcmp (sun_ent->sun_path, sun_item->sun_path)) - { - RESMATCH ("no"); - return 1; - } - break; - } - } - - RESMATCH ("yes"); - return 0; -} - -struct run_closure -{ - unsigned idx; - mu_debug_t debug; - struct sockaddr *sa; - int salen; - mu_acl_result_t *result; -}; - -static int -_expand_aclno (const char *name, void *data, char **p) -{ - struct run_closure *rp = data; - /*FIXME: memory leak*/ - return mu_asprintf (p, "%u", rp->idx); -} - -#if defined (HAVE_SYSCONF) && defined (_SC_OPEN_MAX) -# define getmaxfd() sysconf (_SC_OPEN_MAX) -#elif defined (HAVE_GETDTABLESIZE) -# define getmaxfd() getdtablesize () -#else -# define getmaxfd() 64 -#endif - -static int -expand_arg (const char *cmdline, struct run_closure *rp, char **s) -{ - int rc; - mu_vartab_t vtab; - - MU_DEBUG1 (rp->debug, MU_DEBUG_TRACE0, "Expanding \"%s\" => ", cmdline); - - mu_vartab_create (&vtab); - mu_vartab_define_exp (vtab, "aclno", _expand_aclno, NULL, rp); - switch (rp->sa->sa_family) - { - case AF_INET: - { - struct sockaddr_in *s_in = (struct sockaddr_in *)rp->sa; - struct in_addr addr = s_in->sin_addr; - char *p; - - mu_vartab_define (vtab, "family", "AF_INET", 1); - addr.s_addr = htonl (addr.s_addr); - mu_vartab_define (vtab, "address", inet_ntoa (addr), 0); - if (mu_asprintf (&p, "%hu", ntohs (s_in->sin_port)) == 0) - { - mu_vartab_define (vtab, "port", p, 0); - free (p); - } - } - break; - - case AF_UNIX: - { - struct sockaddr_un *s_un = (struct sockaddr_un *)rp->sa; - - mu_vartab_define (vtab, "family", "AF_UNIX", 1); - mu_vartab_define (vtab, "address", s_un->sun_path, 1); - } - break; - } - - rc = mu_vartab_expand (vtab, cmdline, s); - mu_vartab_destroy (&vtab); - - if (rc == 0) - MU_DEBUG1 (rp->debug, MU_DEBUG_TRACE0, "\"%s\". ", *s); - else - MU_DEBUG (rp->debug, MU_DEBUG_TRACE0, "failed. "); - return rc; -} - -static int -spawn_prog (const char *cmdline, int *pstatus, struct run_closure *rp) -{ - char *s; - pid_t pid; - - if (expand_arg (cmdline, rp, &s)) - s = strdup (cmdline); - - pid = fork (); - if (pid == 0) - { - int i; - int argc; - char **argv; - - mu_argcv_get (s, " \t", NULL, &argc, &argv); - for (i = getmaxfd (); i > 2; i--) - close (i); - execvp (argv[0], argv); - exit (127); - } - - free (s); - - if (pid == (pid_t)-1) - { - MU_DEBUG1 (rp->debug, MU_DEBUG_ERROR, "cannot fork: %s", - mu_strerror (errno)); - return errno; - } - - if (pstatus) - { - int status; - waitpid (pid, &status, 0); - if (WIFEXITED (status)) - { - status = WEXITSTATUS (status); - MU_DEBUG1 (rp->debug, MU_DEBUG_TRACE0, - "Program finished with code %d.", status); - *pstatus = status; - } - else if (WIFSIGNALED (status)) - { - MU_DEBUG1 (rp->debug, MU_DEBUG_ERROR, - "Program terminated on signal %d.", - WTERMSIG (status)); - return MU_ERR_PROCESS_SIGNALED; - } - else - return MU_ERR_PROCESS_UNKNOWN_FAILURE; - } - - return 0; -} - - -int -_run_entry (void *item, void *data) -{ - int status = 0; - struct _mu_acl_entry *ent = item; - struct run_closure *rp = data; - - rp->idx++; - - if (mu_debug_check_level (rp->debug, MU_DEBUG_TRACE0)) - { - const char *s = "undefined"; - mu_acl_action_to_string (ent->action, &s); - __MU_DEBUG2 (rp->debug, MU_DEBUG_TRACE0, "%d:%s: ", rp->idx, s); - } - - if (_acl_match (rp->debug, ent, rp->sa, rp->salen) == 0) - { - switch (ent->action) - { - case mu_acl_accept: - *rp->result = mu_acl_result_accept; - status = 1; - break; - - case mu_acl_deny: - *rp->result = mu_acl_result_deny; - status = 1; - break; - - case mu_acl_log: - { - char *s; - mu_debug_t dbg = NULL; - mu_diag_get_debug (&dbg); - if (ent->arg && expand_arg (ent->arg, rp, &s) == 0) - { - mu_debug_printf (dbg, MU_DIAG_INFO, "%s\n", s); - free (s); - } - else - { - debug_sockaddr (dbg, MU_DIAG_INFO, rp->sa, rp->salen); - mu_debug_printf (dbg, MU_DIAG_INFO, "\n"); - } - } - break; - - case mu_acl_exec: - spawn_prog (ent->arg, NULL, rp); - break; - - case mu_acl_ifexec: - { - int prog_status; - int rc = spawn_prog (ent->arg, &prog_status, rp); - if (rc == 0) - { - switch (prog_status) - { - case 0: - *rp->result = mu_acl_result_accept; - status = 1; - break; - - case 1: - *rp->result = mu_acl_result_deny; - status = 1; - } - } - } - break; - } - } - - if (mu_debug_check_level (rp->debug, MU_DEBUG_TRACE0)) - mu_debug_printf (rp->debug, MU_DEBUG_TRACE0, "\n"); - - return status; -} - -int -mu_acl_check_sockaddr (mu_acl_t acl, const struct sockaddr *sa, int salen, - mu_acl_result_t *pres) -{ - struct run_closure r; - - if (!acl) - return EINVAL; - - r.sa = malloc (salen); - if (!r.sa) - return ENOMEM; - memcpy (r.sa, sa, salen); - if (prepare_sa (r.sa)) - { - free (r.sa); - return EINVAL; - } - r.salen = salen; - - if (mu_debug_check_level (acl->debug, MU_DEBUG_TRACE0)) - { - __MU_DEBUG1 (acl->debug, MU_DEBUG_TRACE0, "%s", "Checking sockaddr "); - debug_sockaddr (acl->debug, MU_DEBUG_TRACE0, r.sa, r.salen); - mu_debug_printf (acl->debug, MU_DEBUG_TRACE0, "\n"); - } - - r.idx = 0; - r.debug = acl->debug; - r.result = pres; - *r.result = mu_acl_result_undefined; - mu_list_do (acl->aclist, _run_entry, &r); - free (r.sa); - return 0; -} - -int -mu_acl_check_inaddr (mu_acl_t acl, const struct in_addr *inp, - mu_acl_result_t *pres) -{ - struct sockaddr_in cs; - int len = sizeof cs; - - cs.sin_family = AF_INET; - cs.sin_addr = *inp; - cs.sin_addr.s_addr = ntohl (cs.sin_addr.s_addr); - return mu_acl_check_sockaddr (acl, (struct sockaddr *) &cs, len, pres); -} - -int -mu_acl_check_ipv4 (mu_acl_t acl, unsigned int addr, mu_acl_result_t *pres) -{ - struct in_addr in; - - in.s_addr = addr; - return mu_acl_check_inaddr (acl, &in, pres); -} - -int -mu_acl_check_fd (mu_acl_t acl, int fd, mu_acl_result_t *pres) -{ - struct sockaddr_in cs; - socklen_t len = sizeof cs; - - if (getpeername (fd, (struct sockaddr *) &cs, &len) < 0) - { - MU_DEBUG1 (acl->debug, MU_DEBUG_ERROR, - "Cannot obtain IP address of client: %s", - mu_strerror (errno)); - return MU_ERR_FAILURE; - } - - return mu_acl_check_sockaddr (acl, (struct sockaddr *) &cs, len, pres); -} - diff --git a/libmailutils/address.c b/libmailutils/address.c deleted file mode 100644 index cd151c141..000000000 --- a/libmailutils/address.c +++ /dev/null @@ -1,595 +0,0 @@ -/* GNU Mailutils -- a suite of utilities for electronic mail - Copyright (C) 1999, 2000, 2001, 2005, 2006, 2007, 2009, 2010 Free - Software Foundation, Inc. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -/* Get email addresses from rfc822 address. */ -int -mu_address_create_hint (mu_address_t *a, const char *s, mu_address_t hint, - int hflags) -{ - /* 'a' must exist, and can't already have been initialized - */ - int status; - - if (!a) - return MU_ERR_OUT_PTR_NULL; - - if (!s) - return EINVAL; - - *a = NULL; - status = mu_parse822_address_list (a, s, hint, hflags); - if (status == 0) - { - /* And address-list may contain 0 addresses but parse correctly. - */ - if (!*a) - return MU_ERR_EMPTY_ADDRESS; - - (*a)->addr = strdup (s); - if (!(*a)->addr) - { - mu_address_destroy (a); - return ENOMEM; - } - } - return status; -} - -int -mu_address_create (mu_address_t *a, const char *s) -{ - struct mu_address hint; - const char *d; - mu_get_user_email_domain (&d); - hint.domain = (char*) d; - return mu_address_create_hint (a, s, &hint, MU_ADDR_HINT_DOMAIN); -} - -/* Get email addresses from array of rfc822 addresses. - FIXME: No hints? */ -int -mu_address_createv (mu_address_t *a, const char *sv[], size_t len) -{ - int status = 0; - size_t buflen = 0; - char *buf = 0; - size_t i; - - if (!a) - return MU_ERR_OUT_PTR_NULL; - - if (!sv) - return EINVAL; - - if (len == (size_t) - 1) - { - const char **vp = sv; - - len = 0; - - for (len = 0; *vp; vp++, len++) - ; - } - - if (len == 0) - return EINVAL; - - for (i = 0; i < len; i++) - { - /* NULL strings are allowed */ - if (sv[i]) - buflen += strlen (sv[i]); - } - - buflen += (len - 1) * strlen (", "); - buflen += 1; /* Termination null. */ - - buf = malloc (buflen); - - if (!buf) - return ENOMEM; - - for (i = 0, buf[0] = '\0'; i < len; i++) - { - if (i != 0) - strcat (buf, ", "); - - if (sv[i]) - strcat (buf, sv[i]); - } - - status = mu_address_create (a, buf); - - free (buf); - - return status; -} - -void -mu_address_destroy (mu_address_t *paddress) -{ - if (paddress && *paddress) - { - mu_address_t address = *paddress; - mu_address_t current; - for (; address; address = current) - { - if (address->addr) - free (address->addr); - if (address->comments) - free (address->comments); - if (address->personal) - free (address->personal); - if (address->email) - free (address->email); - if (address->local_part) - free (address->local_part); - if (address->domain) - free (address->domain); - if (address->route) - free (address->route); - current = address->next; - free (address); - } - *paddress = NULL; - } -} - -int -mu_address_concatenate (mu_address_t to, mu_address_t *from) -{ - if (!to || !from || !*from) - return EINVAL; - - while (to->next) - to = to->next; - - assert (to && !to->next); - - to->next = *from; - *from = NULL; - - /* discard the current string cache as it is now inaccurate */ - if (to->addr) - { - free (to->addr); - to->addr = NULL; - } - - to = to->next; - - /* only the first address must have a cache */ - if (to->addr) - { - free (to->addr); - to->addr = NULL; - } - - return 0; -} - -mu_address_t -_address_get_nth (mu_address_t addr, size_t no) -{ - int i; - - for (i = 1; addr; addr = addr->next, i++) - if (i == no) - break; - return addr; -} - -int -mu_address_get_nth (mu_address_t addr, size_t no, mu_address_t *pret) -{ - mu_address_t subaddr = _address_get_nth (addr, no); - if (!subaddr) - return MU_ERR_NOENT; - *pret = mu_address_dup (subaddr); - return 0; -} - - -/* General accessors: */ -#define AC4(a,b,c,d) a ## b ## c ## d -#define ACCESSOR(action,field) AC4(mu_address_,action,_,field) - -#define DECL_SET(field) \ -int \ -ACCESSOR(set, field) (mu_address_t addr, size_t no, const char *buf) \ -{ \ - char *s; \ - mu_address_t subaddr; \ - \ - if (addr == NULL) \ - return EINVAL; \ - \ - subaddr = _address_get_nth (addr, no); \ - if (!subaddr) \ - return MU_ERR_NOENT; \ - \ - s = strdup (buf); \ - if (!s) \ - return errno; \ - \ - free (subaddr->field); \ - subaddr->field = s; \ - \ - return 0; \ -} - -#define DECL_SGET(field) \ -int \ -ACCESSOR(sget,field) (mu_address_t addr, size_t no, char const **sptr) \ -{ \ - mu_address_t subaddr; \ - \ - if (addr == NULL) \ - return EINVAL; \ - \ - subaddr = _address_get_nth (addr, no); \ - if (!subaddr) \ - return MU_ERR_NOENT; \ - *sptr = subaddr->field; \ - return 0; \ -} - -#define DECL_GET(field) \ -int \ -ACCESSOR(get,field) (mu_address_t addr, size_t no, char *buf, size_t len, \ - size_t *n) \ -{ \ - size_t i; \ - const char *str; \ - int status = ACCESSOR(sget, field) (addr, no, &str); \ - \ - if (status) \ - return status; \ - \ - i = mu_cpystr (buf, str, len); \ - if (n) \ - *n = i; \ - return 0; \ -} - -#define DECL_AGET(field) \ -int \ -ACCESSOR(aget, field) (mu_address_t addr, size_t no, char **buf) \ -{ \ - const char *str; \ - int status = ACCESSOR(sget, field) (addr, no, &str); \ - \ - if (status) \ - return status; \ - \ - if (str) \ - { \ - *buf = strdup (str); \ - if (!*buf) \ - status = ENOMEM; \ - } \ - else \ - *buf = NULL; \ - return status; \ -} - -#define DECL_ACCESSORS(field) \ -DECL_SET(field) \ -DECL_SGET(field) \ -DECL_GET(field) \ -DECL_AGET(field) - - - -/* Personal part */ -DECL_ACCESSORS(personal) -/* Comments */ -DECL_ACCESSORS(comments) -/* Email */ -DECL_ACCESSORS(email) -/* Local part */ -DECL_ACCESSORS(local_part) -/* Domain */ -DECL_ACCESSORS(domain) -/* Route */ -DECL_ACCESSORS(route) - - - -#define format_char(c) do {\ - if (buflen) \ - {\ - *buf++ = c;\ - buflen--;\ - }\ - else\ - rc++;\ -} while(0) - -#define format_string(str) do {\ - if (buflen) \ - {\ - int n = snprintf (buf, buflen, "%s", str);\ - buf += n;\ - buflen -= n;\ - }\ - else\ - rc += strlen (str);\ -} while (0) - -size_t -mu_address_format_string (mu_address_t addr, char *buf, size_t buflen) -{ - int rc = 0; - int comma = 0; - - for (;addr; addr = addr->next) - { - if (addr->email) - { - int space = 0; - - if (comma) - format_char (','); - - if (addr->personal) - { - format_char ('"'); - format_string (addr->personal); - format_char ('"'); - space++; - } - - if (addr->comments) - { - if (space) - format_char (' '); - format_char ('('); - format_string (addr->comments); - format_char (')'); - space++; - } - - if (space) - format_char (' '); - format_char ('<'); - format_string (addr->email); - format_char ('>'); - comma++; - } - } - format_char (0); - return rc; -} - -static int -_address_is_group (mu_address_t addr) -{ - if (addr->personal && !addr->local_part && !addr->domain) - return 1; - return 0; -} - -static int -_address_is_email (mu_address_t addr) -{ - if (addr->email) - return 1; - return 0; -} - -static int -_address_is_unix_mailbox (mu_address_t addr) -{ - if (addr->local_part && !addr->email) - return 1; - return 0; -} - -int -mu_address_is_group (mu_address_t addr, size_t no, int *yes) -{ - mu_address_t subaddr; - - if (addr == NULL) - return EINVAL; - - subaddr = _address_get_nth (addr, no); - if (!subaddr) - return MU_ERR_NOENT; - - if (yes) - *yes = _address_is_group (subaddr); - return 0; -} - -int -mu_address_to_string (mu_address_t addr, char *buf, size_t len, size_t *n) -{ - size_t i; - if (addr == NULL) - return EINVAL; - if (buf) - *buf = '\0'; - - if (!addr->addr) - { - i = mu_address_format_string (addr, NULL, 0); - addr->addr = malloc (i + 1); - if (!addr->addr) - return ENOMEM; - mu_address_format_string (addr, addr->addr, i+1); - } - - i = mu_cpystr (buf, addr->addr, len); - if (n) - *n = i; - return 0; -} - -int -mu_address_get_count (mu_address_t addr, size_t *pcount) -{ - size_t j; - for (j = 0; addr; addr = addr->next, j++) - ; - if (pcount) - *pcount = j; - return 0; -} - -int -mu_address_get_group_count (mu_address_t addr, size_t *pcount) -{ - size_t j; - for (j = 0; addr; addr = addr->next) - { - if (_address_is_group (addr)) - j++; - } - if (pcount) - *pcount = j; - return 0; -} - -int -mu_address_get_email_count (mu_address_t addr, size_t *pcount) -{ - size_t j; - for (j = 0; addr; addr = addr->next) - { - if (_address_is_email (addr)) - j++; - } - if (pcount) - *pcount = j; - return 0; -} - -int -mu_address_get_unix_mailbox_count (mu_address_t addr, size_t *pcount) -{ - size_t j; - for (j = 0; addr; addr = addr->next) - { - if (_address_is_unix_mailbox (addr)) - j++; - } - if (pcount) - *pcount = j; - return 0; -} - -int -mu_address_contains_email (mu_address_t addr, const char *email) -{ - for (; addr; addr = addr->next) - if (mu_c_strcasecmp (addr->email, email) == 0) - return 1; - return 0; -} - -mu_add