Rocco Rutte:
authorpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Mon, 8 Aug 2005 11:49:53 +0000 (11:49 +0000)
committerpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Mon, 8 Aug 2005 11:49:53 +0000 (11:49 +0000)
- 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
Makefile.in [deleted file]
addrbook.c [deleted file]
alias.c
alias.h [new file with mode: 0644]
buffer.c [new file with mode: 0644]
buffer.h [new file with mode: 0644]
mutt.h
muttlib.c
protos.h

index 04e0322..019fa53 100644 (file)
@@ -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 (file)
index 0c85641..0000000
+++ /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 (file)
index 16c147f..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright notice from original mutt:
- * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
- *
- * 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 <string.h>
-#include <stdlib.h>
-#include <ctype.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}
-};
-
-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 (file)
--- 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 <string.h>
+#include <ctype.h>
 
 #include "lib/mem.h"
 #include "lib/intl.h"
 #include "lib/rx.h"
 #include "lib/debug.h"
 
-#include <string.h>
-#include <ctype.h>
+#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 (file)
index 0000000..6a22e61
--- /dev/null
+++ b/alias.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ *
+ * 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 (file)
index 0000000..adbc8f6
--- /dev/null
+++ b/buffer.c
@@ -0,0 +1,98 @@
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+
+#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 (file)
index 0000000..29f201e
--- /dev/null
+++ b/buffer.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ *
+ * 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 (file)
--- 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"
index 00886ad..b8059f0 100644 (file)
--- 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)
index 43ade4c..2f375c2 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -16,6 +16,7 @@
 #elif HAVE_INTTYPES_H
 #include <inttypes.h>
 #endif
+
 #include "mbyte.h"
 
 #define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')
 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 *);