From 666a29207bb781f47ec85f6a3c3cdeb554b30c21 Mon Sep 17 00:00:00 2001 From: pdmef Date: Mon, 8 Aug 2005 11:49:53 +0000 Subject: [PATCH] Rocco Rutte: - start to kill protos.h by moving some structures and prototypes to dedicated source files git-svn-id: svn://svn.berlios.de/mutt-ng/trunk@381 e385b8ad-14ed-0310-8656-cc95a2468c6d --- Makefile.am | 50 ++-- Makefile.in | 709 ---------------------------------------------------- addrbook.c | 233 ----------------- alias.c | 219 +++++++++++++++- alias.h | 36 +++ buffer.c | 98 ++++++++ buffer.h | 22 ++ mutt.h | 13 +- muttlib.c | 79 ------ protos.h | 21 +- 10 files changed, 405 insertions(+), 1075 deletions(-) delete mode 100644 Makefile.in delete mode 100644 addrbook.c create mode 100644 alias.h create mode 100644 buffer.c create mode 100644 buffer.h diff --git a/Makefile.am b/Makefile.am index 04e0322..019fa53 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,18 +27,26 @@ BUILT_SOURCES = keymap_defs.h patchlist.c bin_PROGRAMS = muttng @DOTLOCK_TARGET@ @PGPAUX_TARGET@ @SMIMEAUX_TARGET@ muttng_SOURCES = $(BUILT_SOURCES) \ - addrbook.c alias.c attach.c base64.c browser.c buffy.c color.c \ - compress.c crypt.c cryptglue.c \ - commands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c \ - edit.c enter.c flags.c init.c filter.c from.c getdomain.c \ - handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c \ - main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c \ - postpone.c query.c recvattach.c recvcmd.c \ - rfc822.c rfc1524.c rfc2047.c rfc2231.c \ - score.c send.c sendlib.c signal.c sort.c \ - status.c system.c thread.c charset.c history.c lib.c \ - muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c md5c.c \ - url.c ascii.c mutt_idna.c sidebar.c hcache.c crypt-mod.c crypt-mod.h \ + alias.c ascii.c attach.c \ + base64.c buffer.c browser.c buffy.c \ + charset.c color.c compress.c crypt.c cryptglue.c commands.c complete.c compose.c \ + copy.c curs_lib.c curs_main.c crypt-mod.c crypt-mod.h \ + date.c \ + edit.c editmsg.c enter.c \ + flags.c filter.c from.c \ + getdomain.c \ + handler.c hash.c hcache.c hdrline.c headers.c help.c history.c hook.c \ + init.c \ + keymap.c \ + lib.c \ + main.c mbox.c mbyte.c md5c.c menu.c mh.c muttlib.c mutt_idna.c mx.c \ + pager.c parse.c pattern.c postpone.c \ + query.c \ + recvattach.c recvcmd.c rfc822.c rfc1524.c rfc2047.c rfc2231.c \ + score.c send.c sendlib.c sidebar.c signal.c sort.c status.c system.c \ + thread.c \ + url.c utf8.c \ + wcwidth.c \ xterm.c muttng_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(LIBPOP) $(LIBNNTP) \ @@ -68,25 +76,29 @@ INCLUDES=-I. -I$(top_srcdir) $(IMAP_INCLUDES) $(POP_INCLUDES) $(NNTP_INCLUDES) $ CPPFLAGS=@CPPFLAGS@ -I$(includedir) - -EXTRA_muttng_SOURCES = account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c \ +EXTRA_muttng_SOURCES = \ + account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c \ mutt_tunnel.c smime.c pgp.c pgpinvoke.c pgpkey.c \ pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c \ - browser.h mbyte.h remailer.h url.h \ + alias.h \ + buffer.h browser.h \ + mbyte.h remailer.h url.h \ pgppacket.c mutt_idna.h mutt_libesmtp.c \ sidebar.h crypt-mod-pgp-classic.c crypt-mod-smime-classic.c EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO \ - configure acconfig.h account.h \ - compress.h \ - attach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs \ + configure acconfig.h \ + account.h alias.h attach.h \ + buffer.h buffy.h \ + charset.h compress.h copy.h crypthash.h \ + dotlock.h functions.h gen_defs \ globals.h hash.h history.h init.h keymap.h mutt_crypt.h \ mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h \ mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \ mbox.h mh.h mx.h pager.h pgp.h protos.h reldate.h rfc1524.h rfc2047.h \ rfc2231.h rfc822.h sha1.h sort.h mime.types VERSION autogen.sh \ _regex.h OPS.MIX remailer.c remailer.h browser.h \ - mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc \ + mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc \ makedoc.c stamp-doc-rc README.SSL smime.h\ muttngbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ mkchangelog.sh cvslog2changelog.pl mutt_idna.h \ diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 0c85641..0000000 --- a/Makefile.in +++ /dev/null @@ -1,709 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AR = @AR@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -DBX = @DBX@ -DEBUGGER = @DEBUGGER@ -DOTLOCK_GROUP = @DOTLOCK_GROUP@ -DOTLOCK_PERMISSION = @DOTLOCK_PERMISSION@ -DOTLOCK_TARGET = @DOTLOCK_TARGET@ -GDB = @GDB@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GPGME_CONFIG = @GPGME_CONFIG@ -HAVE_LIB = @HAVE_LIB@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -ISPELL = @ISPELL@ -KRB5CFGPATH = @KRB5CFGPATH@ -LIB = @LIB@ -LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@ -LIBGNUTLS_CONFIG = @LIBGNUTLS_CONFIG@ -LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@ -LIBGPGME_CFLAGS = @LIBGPGME_CFLAGS@ -LIBGPGME_LIBS = @LIBGPGME_LIBS@ -LIBICONV = @LIBICONV@ -LIBIMAP = @LIBIMAP@ -LIBIMAPDEPS = @LIBIMAPDEPS@ -LTLIB = @LTLIB@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MUTTLIBS = @MUTTLIBS@ -MUTT_LIB_OBJECTS = @MUTT_LIB_OBJECTS@ -PACKAGE = @PACKAGE@ -PGPAUX_TARGET = @PGPAUX_TARGET@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SDB = @SDB@ -SENDMAIL = @SENDMAIL@ -SGML2HTML_CMD = @SGML2HTML_CMD@ -SGML2PS_CMD = @SGML2PS_CMD@ -SGML2TXT_CMD = @SGML2TXT_CMD@ -SMIMEAUX_TARGET = @SMIMEAUX_TARGET@ -SUBVERSION = @SUBVERSION@ -U = @U@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -docdir = @docdir@ -mutt_libesmtp_config_path = @mutt_libesmtp_config_path@ - -AUTOMAKE_OPTIONS = foreign -EXTRA_PROGRAMS = muttng_dotlock pgpringng pgpewrapng makedoc - -@BUILD_IMAP_TRUE@IMAP_SUBDIR = imap -@BUILD_IMAP_TRUE@IMAP_INCLUDES = -I$(top_srcdir)/imap - -SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR) - -bin_SCRIPTS = muttngbug fleang - -BUILT_SOURCES = keymap_defs.h patchlist.c - -bin_PROGRAMS = muttng @DOTLOCK_TARGET@ @PGPAUX_TARGET@ @SMIMEAUX_TARGET@ -muttng_SOURCES = $(BUILT_SOURCES) addrbook.c alias.c attach.c base64.c browser.c buffy.c color.c compress.c crypt.c cryptglue.c commands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c edit.c enter.c flags.c init.c filter.c from.c getdomain.c handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c postpone.c query.c recvattach.c recvcmd.c rfc822.c rfc1524.c rfc2047.c rfc2231.c score.c send.c sendlib.c signal.c sort.c status.c system.c thread.c charset.c history.c lib.c muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c md5c.c url.c ascii.c mutt_idna.c sidebar.c hcache.c crypt-mod.c crypt-mod.h - - -muttng_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) $(INTLLIBS) $(LIBICONV) - - -muttng_DEPENDENCIES = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAPDEPS) $(INTLDEPS) - - -makedoc_SOURCES = makedoc.c -makedoc_LDADD = -makedoc_DEPENDENCIES = - -# $(makedoc_OBJECTS): $(makedoc_SOURCES) -# $(HOST_CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) -c $< - -# makedoc: $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES) -# @rm -rf makedoc -# $(HOST_CC) $(AM_CFLAGS) $(LDFLAGS) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) -o makedoc - -CPP = @CPP@ - -DEFS = -DPKGDATADIR=\"$(pkgdatadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" -DBINDIR=\"$(bindir)\" -DMUTTLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H=1 - - -INCLUDES = -I. -I$(top_srcdir) $(IMAP_INCLUDES) $(LIBGPGME_CFLAGS) -Iintl - -CPPFLAGS = @CPPFLAGS@ -I$(includedir) - -EXTRA_muttng_SOURCES = account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_tunnel.c pop.c pop_auth.c pop_lib.c smime.c pgp.c pgpinvoke.c pgpkey.c pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c browser.h mbyte.h remailer.h url.h mutt_ssl_nss.c pgppacket.c mutt_idna.h nntp.c newsrc.c mutt_libesmtp.c sidebar.h crypt-mod-pgp-classic.c crypt-mod-smime-classic.c - - -EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO configure acconfig.h account.h compress.h attach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs globals.h hash.h history.h init.h keymap.h mutt_crypt.h mailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h mx.h pager.h pgp.h pop.h protos.h reldate.h rfc1524.h rfc2047.h rfc2231.h rfc822.h sha1.h sort.h mime.types VERSION autogen.sh nntp.h ChangeLog.nntp _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc makedoc.c stamp-doc-rc README.SSL smime.h muttngbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh ChangeLog.old mkchangelog.sh cvslog2changelog.pl mutt_idna.h snprintf.c regex.c mutt_libesmtp.h crypt-gpgme.h - - -muttng_dotlock_SOURCES = mutt_dotlock.c -muttng_dotlock_LDADD = @LIBOBJS@ -muttng_dotlock_DEPENDENCIES = @LIBOBJS@ - -pgpringng_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c md5c.c pgppacket.c ascii.c -pgpringng_LDADD = @LIBOBJS@ $(INTLLIBS) -pgpringng_DEPENDENCIES = @LIBOBJS@ $(INTLDEPS) - -pgpewrapng_SOURCES = pgpewrap.c -pgpewrapng_LDADD = -pgpewrapng_DEPENDENCIES = - -CLEANFILES = mutt_dotlock.c stamp-doc-rc makedoc keymap_alldefs.h keymap_defs.h patchlist.c - - -ACLOCAL_AMFLAGS = -I m4 - -LDADD = @LIBOBJS@ @INTLLIBS@ - -OPS = @OPS@ -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = muttbug.sh Muttngrc.head -PROGRAMS = $(bin_PROGRAMS) - -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -muttng_dotlock_OBJECTS = mutt_dotlock.o -muttng_dotlock_LDFLAGS = -pgpringng_OBJECTS = pgppubring.o pgplib.o lib.o extlib.o sha1.o md5c.o \ -pgppacket.o ascii.o -pgpringng_LDFLAGS = -pgpewrapng_OBJECTS = pgpewrap.o -pgpewrapng_LDFLAGS = -makedoc_OBJECTS = makedoc.o -makedoc_LDFLAGS = -muttng_OBJECTS = patchlist.o addrbook.o alias.o attach.o base64.o \ -browser.o buffy.o color.o compress.o crypt.o cryptglue.o commands.o \ -complete.o compose.o copy.o curs_lib.o curs_main.o date.o edit.o \ -enter.o flags.o init.o filter.o from.o getdomain.o handler.o hash.o \ -hdrline.o headers.o help.o hook.o keymap.o main.o mbox.o menu.o mh.o \ -mx.o pager.o parse.o pattern.o postpone.o query.o recvattach.o \ -recvcmd.o rfc822.o rfc1524.o rfc2047.o rfc2231.o score.o send.o \ -sendlib.o signal.o sort.o status.o system.o thread.o charset.o \ -history.o lib.o muttlib.o editmsg.o utf8.o mbyte.o wcwidth.o md5c.o \ -url.o ascii.o mutt_idna.o sidebar.o hcache.o crypt-mod.o -muttng_LDFLAGS = -SCRIPTS = $(bin_SCRIPTS) - -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = README ./stamp-h.in ABOUT-NLS ChangeLog INSTALL \ -Makefile.am Makefile.in Muttngrc.head.in NEWS TODO acconfig.h \ -aclocal.m4 config.guess config.h.in config.sub configure configure.in \ -install-sh missing mkinstalldirs muttbug.sh.in strcasecmp.c strdup.c - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DIST_SUBDIRS = m4 po intl doc contrib imap -SOURCES = $(muttng_dotlock_SOURCES) $(pgpringng_SOURCES) $(pgpewrapng_SOURCES) $(makedoc_SOURCES) $(muttng_SOURCES) $(EXTRA_muttng_SOURCES) -OBJECTS = $(muttng_dotlock_OBJECTS) $(pgpringng_OBJECTS) $(pgpewrapng_OBJECTS) $(makedoc_OBJECTS) $(muttng_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .o .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): configure.in m4/codeset.m4 m4/curslib.m4 m4/funcdecl.m4 \ - m4/gettext.m4 m4/glibc21.m4 m4/gssapi.m4 m4/iconv.m4 \ - m4/lcmessage.m4 m4/libesmtp.m4 m4/libgnutls.m4 \ - m4/progtest.m4 m4/types.m4 - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=config.h \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/config.h.in: $(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: -muttbug.sh: $(top_builddir)/config.status muttbug.sh.in - cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -Muttngrc.head: $(top_builddir)/config.status Muttngrc.head.in - cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -mostlyclean-binPROGRAMS: - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -distclean-binPROGRAMS: - -maintainer-clean-binPROGRAMS: - -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - done - -.c.o: - $(COMPILE) -c $< - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -muttng_dotlock: $(muttng_dotlock_OBJECTS) $(muttng_dotlock_DEPENDENCIES) - @rm -f muttng_dotlock - $(LINK) $(muttng_dotlock_LDFLAGS) $(muttng_dotlock_OBJECTS) $(muttng_dotlock_LDADD) $(LIBS) - -pgpringng: $(pgpringng_OBJECTS) $(pgpringng_DEPENDENCIES) - @rm -f pgpringng - $(LINK) $(pgpringng_LDFLAGS) $(pgpringng_OBJECTS) $(pgpringng_LDADD) $(LIBS) - -pgpewrapng: $(pgpewrapng_OBJECTS) $(pgpewrapng_DEPENDENCIES) - @rm -f pgpewrapng - $(LINK) $(pgpewrapng_LDFLAGS) $(pgpewrapng_OBJECTS) $(pgpewrapng_LDADD) $(LIBS) - -makedoc: $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES) - @rm -f makedoc - $(LINK) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) $(LIBS) - -muttng: $(muttng_OBJECTS) $(muttng_DEPENDENCIES) - @rm -f muttng - $(LINK) $(muttng_LDFLAGS) $(muttng_OBJECTS) $(muttng_LDADD) $(LIBS) - -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_SCRIPTS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ - else if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ - else :; fi; fi; \ - done - -uninstall-binSCRIPTS: - @$(NORMAL_UNINSTALL) - list='$(bin_SCRIPTS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ - done - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && rev=". $$rev"; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(DIST_SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -all-recursive-am: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: install-binPROGRAMS install-binSCRIPTS \ - install-exec-local -install-exec: install-exec-recursive - -install-data-am: install-data-local -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS -uninstall: uninstall-recursive -all-am: Makefile $(PROGRAMS) $(SCRIPTS) config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir) - - -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \ - mostlyclean-compile mostlyclean-tags \ - mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-tags \ - clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \ - distclean-tags distclean-generic clean-am - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \ - maintainer-clean-compile maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ -maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile uninstall-binSCRIPTS install-binSCRIPTS \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -install-exec-local install-exec-am install-exec install-data-local \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs-am installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - - -mutt_dotlock.c: dotlock.c - cp $(srcdir)/dotlock.c mutt_dotlock.c - -fleang: muttbug.sh - cp muttbug.sh fleang - chmod +x fleang - -smime_keysng: $(srcdir)/smime_keys.pl - cp $(srcdir)/smime_keys.pl smime_keysng - chmod +x smime_keysng - -Makefile: $(BUILT_SOURCES) - -keymap_defs.h: $(OPS) $(srcdir)/gen_defs - $(srcdir)/gen_defs $(OPS) > keymap_defs.h - -keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs - $(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.PGP \ - $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME \ - > keymap_alldefs.h - -reldate: - echo 'const char *ReleaseDate = "'`date +%Y-%m-%d`'";' > $(srcdir)/reldate.h - -patchlist.c: $(srcdir)/PATCHES $(srcdir)/patchlist.sh - $(srcdir)/patchlist.sh < $(srcdir)/PATCHES > patchlist.c - -install-exec-local: - if test -f $(DESTDIR)$(bindir)/mutt.dotlock && test -f $(DESTDIR)$(bindir)/muttng_dotlock ; then \ - rm -f $(DESTDIR)$(bindir)/mutt.dotlock ; \ - ln -sf $(DESTDIR)$(bindir)/muttng_dotlock $(DESTDIR)$(bindir)/mutt.dotlock ; \ - fi - if test -f $(DESTDIR)$(bindir)/muttng_dotlock && test x@DOTLOCK_GROUP@ != x ; then \ - chgrp @DOTLOCK_GROUP@ $(DESTDIR)$(bindir)/muttng_dotlock && \ - chmod @DOTLOCK_PERMISSION@ $(DESTDIR)$(bindir)/muttng_dotlock || \ - { echo "Can't fix muttng_dotlock's permissions!" >&2 ; exit 1 ; } \ - fi - -install-data-local: Muttngrc - $(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir) - -if [ -f $(DESTDIR)$(pkgdatadir)/Muttngrc ] ; then \ - mv $(DESTDIR)$(pkgdatadir)/Muttngrc* $(DESTDIR)$(sysconfdir) ; \ - elif [ -f $(DESTDIR)$(pkgdatadir)/../Muttngrc ] ; then \ - mv $(DESTDIR)$(pkgdatadir)/../Muttngrc* $(DESTDIR)$(sysconfdir) ; \ - elif [ ! -f $(DESTDIR)$(sysconfdir)/Muttngrc ] ; then \ - $(INSTALL) -m 644 $(srcdir)/Muttngrc $(DESTDIR)$(sysconfdir) ; \ - fi - -if [ ! -f $(DESTDIR)$(sysconfdir)/muttng-mime.types ]; then \ - $(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir)/muttng-mime.types; \ - fi - -# Don't make this one ChangeLog - it's intended to be -# used manually. - -pclean: - cat /dev/null > $(top_srcdir)/PATCHES - -check-security: - (cd $(top_srcdir) && ./check_sec.sh) - -commit-real: - (cd $(top_srcdir) && cvs commit) - -commit-changelog: - (cd $(top_srcdir) && cvs commit -m "# changelog commit" ChangeLog) - -commit: pclean check-security commit-real changelog commit-changelog - -changelog: - (cd $(top_srcdir); \ - cvs update ChangeLog; \ - sh ./mkchangelog.sh | fmt -c | cat - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \ - $${VISUAL:-vi} ChangeLog) - -ChangeLog: changelog - -# kluge around automake problems. - -dist-hook: - -for file in $(BUILT_SOURCES) ; do rm -f $(distdir)/$$file ; done - -mutt-dist: - (cd $(srcdir) && ./build-release ) - -update-doc: stamp-doc-rc - (cd doc && $(MAKE) update-doc) - -Muttngrc: stamp-doc-rc - -stamp-doc-rc: $(srcdir)/init.h makedoc Muttngrc.head - -rm -f Muttngrc stamp-doc-rc - $(CPP) $(INCLUDES) $(DEFS) $(CPPFLAGS) -D_MAKEDOC -C \ - $(srcdir)/init.h | ./makedoc -c | cat Muttngrc.head - > Muttngrc - touch stamp-doc-rc - -.PHONY: commit pclean check-security commit-real commit-changelog -.PHONY: changelog ChangeLog - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/addrbook.c b/addrbook.c deleted file mode 100644 index 16c147f..0000000 --- a/addrbook.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright notice from original mutt: - * Copyright (C) 1996-2000 Michael R. Elkins - * - * This file is part of mutt-ng, see http://www.muttng.org/. - * It's licensed under the GNU General Public License, - * please see the file GPL in the top level source directory. - */ - -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include "mutt.h" -#include "mutt_menu.h" -#include "mapping.h" -#include "sort.h" - -#include "mutt_idna.h" - -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" - -#include -#include -#include - -#define RSORT(x) (SortAlias & SORT_REVERSE) ? -x : x - -static struct mapping_t AliasHelp[] = { - {N_("Exit"), OP_EXIT}, - {N_("Del"), OP_DELETE}, - {N_("Undel"), OP_UNDELETE}, - {N_("Select"), OP_GENERIC_SELECT_ENTRY}, - {N_("Help"), OP_HELP}, - {NULL} -}; - -static const char *alias_format_str (char *dest, size_t destlen, char op, - const char *src, const char *fmt, - const char *ifstring, - const char *elsestring, - unsigned long data, format_flag flags) -{ - char tmp[SHORT_STRING], adr[SHORT_STRING]; - ALIAS *alias = (ALIAS *) data; - - switch (op) { - case 'f': - snprintf (tmp, sizeof (tmp), "%%%ss", fmt); - snprintf (dest, destlen, tmp, alias->del ? "D" : " "); - break; - case 'a': - mutt_format_s (dest, destlen, fmt, alias->name); - break; - case 'r': - adr[0] = 0; - rfc822_write_address (adr, sizeof (adr), alias->addr, 1); - snprintf (tmp, sizeof (tmp), "%%%ss", fmt); - snprintf (dest, destlen, tmp, adr); - break; - case 'n': - snprintf (tmp, sizeof (tmp), "%%%sd", fmt); - snprintf (dest, destlen, tmp, alias->num + 1); - break; - case 't': - dest[0] = alias->tagged ? '*' : ' '; - dest[1] = 0; - break; - } - - return (src); -} - -static void alias_entry (char *s, size_t slen, MUTTMENU * m, int num) -{ - mutt_FormatString (s, slen, NONULL (AliasFmt), alias_format_str, - (unsigned long) ((ALIAS **) m->data)[num], - M_FORMAT_ARROWCURSOR); -} - -static int alias_tag (MUTTMENU * menu, int n, int m) -{ - ALIAS *cur = ((ALIAS **) menu->data)[n]; - int ot = cur->tagged; - - cur->tagged = (m >= 0 ? m : !cur->tagged); - - return cur->tagged - ot; -} - -static int alias_SortAlias (const void *a, const void *b) -{ - ALIAS *pa = *(ALIAS **) a; - ALIAS *pb = *(ALIAS **) b; - int r = str_casecmp (pa->name, pb->name); - - return (RSORT (r)); -} - -static int alias_SortAddress (const void *a, const void *b) -{ - ADDRESS *pa = (*(ALIAS **) a)->addr; - ADDRESS *pb = (*(ALIAS **) b)->addr; - int r; - - if (pa == pb) - r = 0; - else if (pa == NULL) - r = -1; - else if (pb == NULL) - r = 1; - else if (pa->personal) { - if (pb->personal) - r = str_casecmp (pa->personal, pb->personal); - else - r = 1; - } - else if (pb->personal) - r = -1; - else - r = ascii_strcasecmp (pa->mailbox, pb->mailbox); - return (RSORT (r)); -} - -void mutt_alias_menu (char *buf, size_t buflen, ALIAS * aliases) -{ - ALIAS *aliasp; - MUTTMENU *menu; - ALIAS **AliasTable = NULL; - int t = -1; - int i, done = 0; - int op; - char helpstr[SHORT_STRING]; - - int omax; - - if (!aliases) { - mutt_error _("You have no aliases!"); - - return; - } - - /* tell whoever called me to redraw the screen when I return */ - set_option (OPTNEEDREDRAW); - - menu = mutt_new_menu (); - menu->make_entry = alias_entry; - menu->tag = alias_tag; - menu->menu = MENU_ALIAS; - menu->title = _("Aliases"); - menu->help = - mutt_compile_help (helpstr, sizeof (helpstr), MENU_ALIAS, AliasHelp); - -new_aliases: - - omax = menu->max; - - /* count the number of aliases */ - for (aliasp = aliases; aliasp; aliasp = aliasp->next) { - aliasp->self->del = 0; - aliasp->self->tagged = 0; - menu->max++; - } - - mem_realloc (&AliasTable, menu->max * sizeof (ALIAS *)); - menu->data = AliasTable; - - for (i = omax, aliasp = aliases; aliasp; aliasp = aliasp->next, i++) { - AliasTable[i] = aliasp->self; - aliases = aliasp; - } - - if ((SortAlias & SORT_MASK) != SORT_ORDER) { - qsort (AliasTable, i, sizeof (ALIAS *), - (SortAlias & SORT_MASK) == - SORT_ADDRESS ? alias_SortAddress : alias_SortAlias); - } - - for (i = 0; i < menu->max; i++) - AliasTable[i]->num = i; - - while (!done) { - if (aliases->next) { - menu->redraw |= REDRAW_FULL; - aliases = aliases->next; - goto new_aliases; - } - - switch ((op = mutt_menuLoop (menu))) { - case OP_DELETE: - case OP_UNDELETE: - if (menu->tagprefix) { - for (i = 0; i < menu->max; i++) - if (AliasTable[i]->tagged) - AliasTable[i]->del = (op == OP_DELETE) ? 1 : 0; - menu->redraw |= REDRAW_INDEX; - } - else { - AliasTable[menu->current]->self->del = (op == OP_DELETE) ? 1 : 0; - menu->redraw |= REDRAW_CURRENT; - if (option (OPTRESOLVE) && menu->current < menu->max - 1) { - menu->current++; - menu->redraw |= REDRAW_INDEX; - } - } - break; - case OP_GENERIC_SELECT_ENTRY: - t = menu->current; - case OP_EXIT: - done = 1; - break; - } - } - - for (i = 0; i < menu->max; i++) { - if (AliasTable[i]->tagged) { - mutt_addrlist_to_local (AliasTable[i]->addr); - rfc822_write_address (buf, buflen, AliasTable[i]->addr, 0); - t = -1; - } - } - - if (t != -1) { - mutt_addrlist_to_local (AliasTable[t]->addr); - rfc822_write_address (buf, buflen, AliasTable[t]->addr, 0); - } - - mutt_menuDestroy (&menu); - mem_free (&AliasTable); - -} diff --git a/alias.c b/alias.c index 5a58449..beb6ad2 100644 --- a/alias.c +++ b/alias.c @@ -11,9 +11,8 @@ # include "config.h" #endif -#include "mutt.h" -#include "mutt_curses.h" -#include "mutt_idna.h" +#include +#include #include "lib/mem.h" #include "lib/intl.h" @@ -21,8 +20,23 @@ #include "lib/rx.h" #include "lib/debug.h" -#include -#include +#include "mutt.h" +#include "mutt_curses.h" +#include "mutt_idna.h" +#include "mutt_menu.h" +#include "mapping.h" +#include "sort.h" + +#define RSORT(x) (SortAlias & SORT_REVERSE) ? -x : x + +static struct mapping_t AliasHelp[] = { + {N_("Exit"), OP_EXIT}, + {N_("Del"), OP_DELETE}, + {N_("Undel"), OP_UNDELETE}, + {N_("Select"), OP_GENERIC_SELECT_ENTRY}, + {N_("Help"), OP_HELP}, + {NULL} +}; ADDRESS *mutt_lookup_alias (const char *s) { @@ -522,3 +536,198 @@ int mutt_addr_is_user (ADDRESS * addr) debug_print(5, ("no, all failed.\n")); return 0; } + +static const char *alias_format_str (char *dest, size_t destlen, char op, + const char *src, const char *fmt, + const char *ifstring, + const char *elsestring, + unsigned long data, format_flag flags) +{ + char tmp[SHORT_STRING], adr[SHORT_STRING]; + ALIAS *alias = (ALIAS *) data; + + switch (op) { + case 'f': + snprintf (tmp, sizeof (tmp), "%%%ss", fmt); + snprintf (dest, destlen, tmp, alias->del ? "D" : " "); + break; + case 'a': + mutt_format_s (dest, destlen, fmt, alias->name); + break; + case 'r': + adr[0] = 0; + rfc822_write_address (adr, sizeof (adr), alias->addr, 1); + snprintf (tmp, sizeof (tmp), "%%%ss", fmt); + snprintf (dest, destlen, tmp, adr); + break; + case 'n': + snprintf (tmp, sizeof (tmp), "%%%sd", fmt); + snprintf (dest, destlen, tmp, alias->num + 1); + break; + case 't': + dest[0] = alias->tagged ? '*' : ' '; + dest[1] = 0; + break; + } + + return (src); +} + +static void alias_entry (char *s, size_t slen, MUTTMENU * m, int num) +{ + mutt_FormatString (s, slen, NONULL (AliasFmt), alias_format_str, + (unsigned long) ((ALIAS **) m->data)[num], + M_FORMAT_ARROWCURSOR); +} + +static int alias_tag (MUTTMENU * menu, int n, int m) +{ + ALIAS *cur = ((ALIAS **) menu->data)[n]; + int ot = cur->tagged; + + cur->tagged = (m >= 0 ? m : !cur->tagged); + + return cur->tagged - ot; +} + +static int alias_SortAlias (const void *a, const void *b) +{ + ALIAS *pa = *(ALIAS **) a; + ALIAS *pb = *(ALIAS **) b; + int r = str_casecmp (pa->name, pb->name); + + return (RSORT (r)); +} + +static int alias_SortAddress (const void *a, const void *b) +{ + ADDRESS *pa = (*(ALIAS **) a)->addr; + ADDRESS *pb = (*(ALIAS **) b)->addr; + int r; + + if (pa == pb) + r = 0; + else if (pa == NULL) + r = -1; + else if (pb == NULL) + r = 1; + else if (pa->personal) { + if (pb->personal) + r = str_casecmp (pa->personal, pb->personal); + else + r = 1; + } + else if (pb->personal) + r = -1; + else + r = ascii_strcasecmp (pa->mailbox, pb->mailbox); + return (RSORT (r)); +} + +void mutt_alias_menu (char *buf, size_t buflen, ALIAS * aliases) +{ + ALIAS *aliasp; + MUTTMENU *menu; + ALIAS **AliasTable = NULL; + int t = -1; + int i, done = 0; + int op; + char helpstr[SHORT_STRING]; + + int omax; + + if (!aliases) { + mutt_error _("You have no aliases!"); + + return; + } + + /* tell whoever called me to redraw the screen when I return */ + set_option (OPTNEEDREDRAW); + + menu = mutt_new_menu (); + menu->make_entry = alias_entry; + menu->tag = alias_tag; + menu->menu = MENU_ALIAS; + menu->title = _("Aliases"); + menu->help = + mutt_compile_help (helpstr, sizeof (helpstr), MENU_ALIAS, AliasHelp); + +new_aliases: + + omax = menu->max; + + /* count the number of aliases */ + for (aliasp = aliases; aliasp; aliasp = aliasp->next) { + aliasp->self->del = 0; + aliasp->self->tagged = 0; + menu->max++; + } + + mem_realloc (&AliasTable, menu->max * sizeof (ALIAS *)); + menu->data = AliasTable; + + for (i = omax, aliasp = aliases; aliasp; aliasp = aliasp->next, i++) { + AliasTable[i] = aliasp->self; + aliases = aliasp; + } + + if ((SortAlias & SORT_MASK) != SORT_ORDER) { + qsort (AliasTable, i, sizeof (ALIAS *), + (SortAlias & SORT_MASK) == + SORT_ADDRESS ? alias_SortAddress : alias_SortAlias); + } + + for (i = 0; i < menu->max; i++) + AliasTable[i]->num = i; + + while (!done) { + if (aliases->next) { + menu->redraw |= REDRAW_FULL; + aliases = aliases->next; + goto new_aliases; + } + + switch ((op = mutt_menuLoop (menu))) { + case OP_DELETE: + case OP_UNDELETE: + if (menu->tagprefix) { + for (i = 0; i < menu->max; i++) + if (AliasTable[i]->tagged) + AliasTable[i]->del = (op == OP_DELETE) ? 1 : 0; + menu->redraw |= REDRAW_INDEX; + } + else { + AliasTable[menu->current]->self->del = (op == OP_DELETE) ? 1 : 0; + menu->redraw |= REDRAW_CURRENT; + if (option (OPTRESOLVE) && menu->current < menu->max - 1) { + menu->current++; + menu->redraw |= REDRAW_INDEX; + } + } + break; + case OP_GENERIC_SELECT_ENTRY: + t = menu->current; + case OP_EXIT: + done = 1; + break; + } + } + + for (i = 0; i < menu->max; i++) { + if (AliasTable[i]->tagged) { + mutt_addrlist_to_local (AliasTable[i]->addr); + rfc822_write_address (buf, buflen, AliasTable[i]->addr, 0); + t = -1; + } + } + + if (t != -1) { + mutt_addrlist_to_local (AliasTable[t]->addr); + rfc822_write_address (buf, buflen, AliasTable[t]->addr, 0); + } + + mutt_menuDestroy (&menu); + mem_free (&AliasTable); + +} diff --git a/alias.h b/alias.h new file mode 100644 index 0000000..6a22e61 --- /dev/null +++ b/alias.h @@ -0,0 +1,36 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 1996-2000 Michael R. Elkins + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ +#ifndef _MUTT_ALIAS_H +#define _MUTT_ALIAS_H + +#include "rfc822.h" + +typedef struct alias { + struct alias *self; /* XXX - ugly hack */ + char *name; + ADDRESS *addr; + struct alias *next; + short tagged; + short del; + short num; +} ALIAS; + +void mutt_create_alias (ENVELOPE *, ADDRESS *); +int mutt_check_alias_name (const char *, char *); +ADDRESS *mutt_get_address (ENVELOPE *, char **); +ADDRESS *mutt_lookup_alias (const char *s); +ADDRESS *mutt_expand_aliases (ADDRESS *); +void mutt_expand_aliases_env (ENVELOPE *); +void mutt_free_alias (ALIAS **); +ADDRESS *alias_reverse_lookup (ADDRESS *); +int mutt_alias_complete (char *, size_t); +int mutt_addr_is_user (ADDRESS *); +void mutt_alias_menu (char *, size_t, ALIAS *); + +#endif /* !_MUTT_ALIAS_H */ diff --git a/buffer.c b/buffer.c new file mode 100644 index 0000000..adbc8f6 --- /dev/null +++ b/buffer.c @@ -0,0 +1,98 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 1996-2000 Michael R. Elkins + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "buffer.h" + +#include "lib/mem.h" +#include "lib/str.h" + +/* + * Creates and initializes a BUFFER*. If passed an existing BUFFER*, + * just initializes. Frees anything already in the buffer. + * + * Disregards the 'destroy' flag, which seems reserved for caller. + * This is bad, but there's no apparent protocol for it. + */ +BUFFER *mutt_buffer_init (BUFFER * b) +{ + if (!b) { + b = mem_malloc (sizeof (BUFFER)); + if (!b) + return NULL; + } + else { + mem_free(&b->data); + } + memset (b, 0, sizeof (BUFFER)); + return b; +} + +/* + * Creates and initializes a BUFFER*. If passed an existing BUFFER*, + * just initializes. Frees anything already in the buffer. Copies in + * the seed string. + * + * Disregards the 'destroy' flag, which seems reserved for caller. + * This is bad, but there's no apparent protocol for it. + */ +BUFFER *mutt_buffer_from (BUFFER * b, char *seed) +{ + if (!seed) + return NULL; + + b = mutt_buffer_init (b); + b->data = str_dup (seed); + b->dsize = str_len (seed); + b->dptr = (char *) b->data + b->dsize; + return b; +} + +void mutt_buffer_addstr (BUFFER * buf, const char *s) +{ + mutt_buffer_add (buf, s, str_len (s)); +} + +void mutt_buffer_addch (BUFFER * buf, char c) +{ + mutt_buffer_add (buf, &c, 1); +} + +void mutt_buffer_free (BUFFER ** p) +{ + if (!p || !*p) + return; + + mem_free (&(*p)->data); + /* dptr is just an offset to data and shouldn't be freed */ + mem_free (p); +} + +/* dynamically grows a BUFFER to accomodate s, in increments of 128 bytes. + * Always one byte bigger than necessary for the null terminator, and + * the buffer is always null-terminated */ +void mutt_buffer_add (BUFFER * buf, const char *s, size_t len) +{ + size_t offset; + + if (buf->dptr + len + 1 > buf->data + buf->dsize) { + offset = buf->dptr - buf->data; + buf->dsize += len < 128 ? 128 : len + 1; + mem_realloc ((void **) &buf->data, buf->dsize); + buf->dptr = buf->data + offset; + } + memcpy (buf->dptr, s, len); + buf->dptr += len; + *(buf->dptr) = '\0'; +} diff --git a/buffer.h b/buffer.h new file mode 100644 index 0000000..29f201e --- /dev/null +++ b/buffer.h @@ -0,0 +1,22 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 1996-2000 Michael R. Elkins + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ +#ifndef _MUTT_BUFFER_H +#define _MUTT_BUFFER_H + +#include "mutt.h" + +int mutt_extract_token (BUFFER *, BUFFER *, int); +BUFFER *mutt_buffer_init (BUFFER *); +BUFFER *mutt_buffer_from (BUFFER *, char *); +void mutt_buffer_free (BUFFER **); +void mutt_buffer_add (BUFFER *, const char *, size_t); +void mutt_buffer_addstr (BUFFER *, const char *); +void mutt_buffer_addch (BUFFER *, char); + +#endif /* !_MUTT_BUFFER_H */ diff --git a/mutt.h b/mutt.h index d2dcd8b..5593224 100644 --- a/mutt.h +++ b/mutt.h @@ -584,16 +584,6 @@ LIST *mutt_add_list_n (LIST*, const void*, size_t len); void mutt_init (int, LIST *); -typedef struct alias { - struct alias *self; /* XXX - ugly hack */ - char *name; - ADDRESS *addr; - struct alias *next; - short tagged; - short del; - short num; -} ALIAS; - typedef struct envelope { ADDRESS *return_path; ADDRESS *from; @@ -928,6 +918,9 @@ void state_prefix_putc (char, STATE *); int state_printf (STATE *, const char *, ...); #include "ascii.h" +#include "alias.h" +#include "addrbook.h" +#include "buffer.h" #include "protos.h" #include "lib.h" #include "globals.h" diff --git a/muttlib.c b/muttlib.c index 00886ad..b8059f0 100644 --- a/muttlib.c +++ b/muttlib.c @@ -1368,85 +1368,6 @@ void mutt_sleep (short s) sleep (s); } -/* - * Creates and initializes a BUFFER*. If passed an existing BUFFER*, - * just initializes. Frees anything already in the buffer. - * - * Disregards the 'destroy' flag, which seems reserved for caller. - * This is bad, but there's no apparent protocol for it. - */ -BUFFER *mutt_buffer_init (BUFFER * b) -{ - if (!b) { - b = mem_malloc (sizeof (BUFFER)); - if (!b) - return NULL; - } - else { - mem_free(&b->data); - } - memset (b, 0, sizeof (BUFFER)); - return b; -} - -/* - * Creates and initializes a BUFFER*. If passed an existing BUFFER*, - * just initializes. Frees anything already in the buffer. Copies in - * the seed string. - * - * Disregards the 'destroy' flag, which seems reserved for caller. - * This is bad, but there's no apparent protocol for it. - */ -BUFFER *mutt_buffer_from (BUFFER * b, char *seed) -{ - if (!seed) - return NULL; - - b = mutt_buffer_init (b); - b->data = str_dup (seed); - b->dsize = str_len (seed); - b->dptr = (char *) b->data + b->dsize; - return b; -} - -void mutt_buffer_addstr (BUFFER * buf, const char *s) -{ - mutt_buffer_add (buf, s, str_len (s)); -} - -void mutt_buffer_addch (BUFFER * buf, char c) -{ - mutt_buffer_add (buf, &c, 1); -} - -void mutt_buffer_free (BUFFER ** p) -{ - if (!p || !*p) - return; - - mem_free (&(*p)->data); - /* dptr is just an offset to data and shouldn't be freed */ - mem_free (p); -} - -/* dynamically grows a BUFFER to accomodate s, in increments of 128 bytes. - * Always one byte bigger than necessary for the null terminator, and - * the buffer is always null-terminated */ -void mutt_buffer_add (BUFFER * buf, const char *s, size_t len) -{ - size_t offset; - - if (buf->dptr + len + 1 > buf->data + buf->dsize) { - offset = buf->dptr - buf->data; - buf->dsize += len < 128 ? 128 : len + 1; - mem_realloc ((void **) &buf->data, buf->dsize); - buf->dptr = buf->data + offset; - } - memcpy (buf->dptr, s, len); - buf->dptr += len; - *(buf->dptr) = '\0'; -} - /* Decrease a file's modification time by 1 second */ time_t mutt_decrease_mtime (const char *f, struct stat *st) diff --git a/protos.h b/protos.h index 43ade4c..2f375c2 100644 --- a/protos.h +++ b/protos.h @@ -16,6 +16,7 @@ #elif HAVE_INTTYPES_H #include #endif + #include "mbyte.h" #define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#') @@ -24,14 +25,6 @@ void _mutt_make_string (char *, size_t, const char *, CONTEXT *, HEADER *, format_flag); -int mutt_extract_token (BUFFER *, BUFFER *, int); -BUFFER *mutt_buffer_init (BUFFER *); -BUFFER *mutt_buffer_from (BUFFER *, char *); -void mutt_buffer_free (BUFFER **); -void mutt_buffer_add (BUFFER *, const char *, size_t); -void mutt_buffer_addstr (BUFFER *, const char *); -void mutt_buffer_addch (BUFFER *, char); - #define mutt_system(x) _mutt_system(x,0) int _mutt_system (const char *, int); @@ -73,10 +66,7 @@ int query_quadoption (int, const char *); int quadoption (int); ADDRESS *mutt_default_from (void); -ADDRESS *mutt_get_address (ENVELOPE *, char **); -ADDRESS *mutt_lookup_alias (const char *s); ADDRESS *mutt_remove_duplicates (ADDRESS *); -ADDRESS *mutt_expand_aliases (ADDRESS *); ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *); BODY *mutt_make_file_attach (const char *); @@ -159,7 +149,6 @@ void mutt_account_hook (const char *url); void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv, LIST *** pp, LIST *** qq); void mutt_adv_mktemp (char *, size_t); -void mutt_alias_menu (char *, size_t, ALIAS *); void mutt_allow_interrupt (int); void mutt_attach_init (BODY *); void mutt_block_signals (void); @@ -170,7 +159,6 @@ void mutt_break_thread (HEADER *); void mutt_canonical_charset (char *, size_t, const char *); void mutt_check_rescore (CONTEXT *); void mutt_clear_error (void); -void mutt_create_alias (ENVELOPE *, ADDRESS *); void mutt_decode_attachment (BODY *, STATE *); void mutt_decode_base64 (STATE * s, long len, int istext, iconv_t cd); void mutt_default_save (char *, size_t, HEADER *); @@ -182,7 +170,6 @@ void mutt_edit_headers (const char *, const char *, HEADER *, char *, size_t); void mutt_curses_error (const char *, ...); void mutt_curses_message (const char *, ...); void mutt_enter_command (void); -void mutt_expand_aliases_env (ENVELOPE *); void mutt_expand_file_fmt (char *, size_t, const char *, const char *); void mutt_expand_fmt (char *, size_t, const char *, const char *); void mutt_expand_link (char *, const char *, const char *); @@ -194,7 +181,6 @@ void mutt_format_s (char *, size_t, const char *, const char *); void mutt_format_s_tree (char *, size_t, const char *, const char *); void mutt_forward_intro (FILE * fp, HEADER * cur); void mutt_forward_trailer (FILE * fp); -void mutt_free_alias (ALIAS **); void mutt_free_body (BODY **); void mutt_free_color (int fg, int bg); void mutt_free_enter_state (ENTER_STATE **); @@ -260,15 +246,12 @@ void mutt_write_address_list (ADDRESS * adr, FILE * fp, int linelen, int display); void mutt_set_virtual (CONTEXT *); -int mutt_addr_is_user (ADDRESS *); int mutt_addwch (wchar_t); -int mutt_alias_complete (char *, size_t); int mutt_alloc_color (int fg, int bg); int mutt_any_key_to_continue (const char *); int mutt_builtin_editor (const char *, HEADER *, HEADER *); int mutt_can_decode (BODY *); int mutt_change_flag (HEADER *, int); -int mutt_check_alias_name (const char *, char *); int mutt_check_encoding (const char *); int mutt_check_key (const char *); int mutt_check_menu (const char *); @@ -377,8 +360,6 @@ pid_t mutt_create_filter (const char *, FILE **, FILE **, FILE **); pid_t mutt_create_filter_fd (const char *, FILE **, FILE **, FILE **, int, int, int); -ADDRESS *alias_reverse_lookup (ADDRESS *); - /* base64.c */ void mutt_to_base64 (unsigned char *, const unsigned char *, size_t, size_t); int mutt_from_base64 (char *, const char *); -- 2.20.1