Commit 3d49bfc2 3d49bfc21a6fe14ddd498755c8a5c0531269af47 by Sergey Poznyakoff

*** empty log message ***

1 parent 977ac58a
Makefile.in
Makefile
.deps
.libs
from
.gdbinit
## Process this file with GNU Automake to create Makefile.in
## Copyright (C) 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
##
## GNU Mailutils is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License as
## published by the Free Software Foundation; either version 2, or (at
## your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib -I${top_builddir}/include/mailutils/gnu @INTLINCS@
SUBDIRS = testsuite
noinst_PROGRAMS = from
from_LDADD = \
../mailbox/mbox/libmu_mbox.la\
../mailbox/imap/libmu_imap.la\
../mailbox/pop/libmu_pop.la\
../mailbox/nntp/libmu_nntp.la\
../mailbox/mh/libmu_mh.la\
../mailbox/maildir/libmu_maildir.la\
../mailbox/libmailbox.la\
../lib/libmailutils.la\
@AUTHLIBS@ @MU_COMMON_LIBRARIES@
/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 1999, 2000, 2002, 2003,
2004 Free Software Foundation, Inc.
GNU Mailutils is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Mailutils is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Mailutils; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/**
*
* Created as an example for using mailutils API
* Sean 'Shaleh' Perry <shaleh@debian.org>, 1999
* Alain Magloire alainm@gnu.org
*
**/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <mailutils/address.h>
#include <mailutils/argp.h>
#include <mailutils/debug.h>
#include <mailutils/errno.h>
#include <mailutils/header.h>
#include <mailutils/list.h>
#include <mailutils/mailbox.h>
#include <mailutils/message.h>
#include <mailutils/registrar.h>
#include <mailutils/stream.h>
#include <mailutils/nls.h>
#include <mailutils/tls.h>
#include <mailutils/mutil.h>
#include <mailutils/error.h>
#include <mailutils/mime.h>
const char *program_version = "from (" PACKAGE_STRING ")";
static char doc[] = N_("GNU from -- display from and subject");
static struct argp_option options[] = {
{"debug", 'd', NULL, 0, N_("Enable debugging output"), 0},
{0, 0, 0, 0}
};
static int debug;
static error_t
parse_opt (int key, char *arg, struct argp_state *state)
{
switch (key)
{
case 'd':
debug++;
break;
default:
return ARGP_ERR_UNKNOWN;
}
return 0;
}
static struct argp argp = {
options,
parse_opt,
N_("[URL]"),
doc,
};
static const char *capa[] = {
"common",
"license",
"mailbox",
#ifdef WITH_TLS
"tls",
#endif
NULL
};
static char *
rfc2047_decode_wrapper (char *buf, size_t buflen)
{
char locale[32];
char *charset = NULL;
char *tmp;
int rc;
memset (locale, 0, sizeof (locale));
/* Try to deduce the charset from LC_ALL or LANG variables */
tmp = getenv ("LC_ALL");
if (!tmp)
tmp = getenv ("LANG");
if (tmp)
{
char *sp = NULL;
char *lang;
char *terr;
strncpy (locale, tmp, sizeof (locale) - 1);
lang = strtok_r (locale, "_", &sp);
terr = strtok_r (NULL, ".", &sp);
charset = strtok_r (NULL, "@", &sp);
if (!charset)
charset = mu_charset_lookup (lang, terr);
}
if (!charset)
return strdup (buf);
rc = rfc2047_decode (charset, buf, &tmp);
if (rc)
{
if (debug)
mu_error (_("Cannot decode line `%s': %s"),
buf, mu_strerror (rc));
return strdup (buf);
}
return tmp;
}
int
main (int argc, char **argv)
{
mailbox_t mbox;
size_t i;
size_t count = 0;
char *mailbox_name = NULL;
char *buf;
char personal[128];
int status;
/* Native Language Support */
mu_init_nls ();
{
int opt;
mu_argp_init (program_version, NULL);
#ifdef WITH_TLS
mu_tls_init_client_argp ();
#endif
mu_argp_parse (&argp, &argc, &argv, 0, capa, &opt, NULL);
mailbox_name = argv[opt];
}
/* Register the desire formats. */
mu_register_all_mbox_formats ();
status = mailbox_create_default (&mbox, mailbox_name);
if (status != 0)
{
mu_error (_("Could not create mailbox <%s>: %s."),
mailbox_name ? mailbox_name : _("default"),
mu_strerror (status));
exit (1);
}
/* Debuging Trace. */
if (debug)
{
mu_debug_t debug;
mailbox_get_debug (mbox, &debug);
mu_debug_set_level (debug, MU_DEBUG_TRACE|MU_DEBUG_PROT);
}
status = mailbox_open (mbox, MU_STREAM_READ);
if (status != 0)
{
mu_error (_("Could not open mailbox <%s>: %s."),
mailbox_name, mu_strerror (status));
exit (1);
}
mailbox_messages_count (mbox, &count);
for (i = 1; i <= count; ++i)
{
message_t msg;
header_t hdr;
size_t len = 0;
if ((status = mailbox_get_message (mbox, i, &msg)) != 0
|| (status = message_get_header (msg, &hdr)) != 0)
{
mu_error (_("msg %d : %s"), i, mu_strerror (status));
exit (2);
}
status = header_aget_value (hdr, MU_HEADER_FROM, &buf);
if (status == 0)
{
address_t address = NULL;
char *s = rfc2047_decode_wrapper (buf, strlen (buf));
address_create (&address, s);
free (s);
len = 0;
address_get_personal (address, 1, personal, sizeof (personal), &len);
printf ("%s\t", (len != 0) ? personal : buf);
address_destroy (&address);
}
else
{
status = header_aget_value (hdr, MU_HEADER_TO, &buf);
if (status == 0)
{
char *s = rfc2047_decode_wrapper (buf, strlen (buf));
printf ("%s\t", s);
free (s);
}
}
free (buf);
status = header_aget_value_unfold (hdr, MU_HEADER_SUBJECT, &buf);
if (status == 0)
{
char *s = rfc2047_decode_wrapper (buf, strlen (buf));
printf ("%s\n", s);
free (s);
free (buf);
}
}
status = mailbox_close (mbox);
if (status != 0)
{
mu_error (_("Could not close <%s>: %s."),
mailbox_name, mu_strerror (status));
}
mailbox_destroy (&mbox);
return 0;
}
Makefile
Makefile.in
*.log
*.sum
site.exp
remote.exp
data
## Process this file with GNU Automake to create Makefile.in
## Copyright (C) 2002 Free Software Foundation, Inc.
##
## GNU Mailutils is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License as
## published by the Free Software Foundation; either version 2, or (at
## your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
AUTOMAKE_OPTIONS = dejagnu
DEJATOOL = from
RUNTESTFLAGS =
CLEANFILES = *.log
test_dirs = from
dist-hook:
here=`cd $(top_builddir)/$(subdir) && pwd`; \
srcdir=`cd $(srcdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
for dir in $(test_dirs); \
do \
cd $$srcdir;\
mkdir $$distdir/$$dir;\
cd $$dir;\
for file in DISTFILES `cat DISTFILES`; do \
d=$$srcdir/$$dir; \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $$distdir/$$dir/$$file; \
else \
test -f $$distdir/$$dir/$$file \
|| cp -p $$d/$$file $$distdir/$$dir/$$file || exit; \
fi; \
done;\
done;\
cd $$here
site.exp: Makefile remote.exp
@echo 'Making a new site.exp file...'
@test ! -f site.bak || rm -f site.bak
@echo '## these variables are automatically generated by make ##' > $@-t
@echo '# Do not edit here. If you wish to override these values' >> $@-t
@echo '# edit the last section' >> $@-t
@echo 'set tool $(DEJATOOL)' >> $@-t
@echo "set top_srcdir `cd $(top_srcdir); pwd`" >> $@-t
@echo "set srcdir `cd $(srcdir); pwd`" >> $@-t
@echo 'set objdir' `pwd` >> $@-t
@echo 'set host_alias "$(host_alias)"' >> $@-t
@echo 'set host_triplet $(host_triplet)' >> $@-t
@echo 'set target_alias "$(target_alias)"' >> $@-t
@echo 'set target_triplet $(target_triplet)' >> $@-t
@echo 'set build_alias "$(build_alias)"' >> $@-t
@echo 'set build_triplet $(build_triplet)' >> $@-t
@echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t
@test ! -f site.exp || sed '1,/^## All variables above are.*##/ d' site.exp >> $@-t
@test ! -f site.exp || mv site.exp site.bak
@mv $@-t site.exp
remote.exp:;
@echo 'Making a new remote.exp file...'
@test ! -f remote.bak || rm -f remote.bak
@echo '## These variables are used to set up for the remote testing.' >> $@-t
@echo '## Please, read file README in this directory for instructions' >> $@-t
@echo '## on how to use this file' >> $@-t
@echo "set host_board `hostname`" >> $@-t
@echo 'set board_info($$host_board,connect) rlogin' >> $@-t
@echo 'set board_info($$host_board,shell_prompt) "\\$$ "' >> $@-t
@echo "set board_info(\$$host_board,top_srcdir) `cd $(top_srcdir); pwd`" >> $@-t
@echo "set board_info(\$$host_board,srcdir) `cd $(srcdir); pwd`" >> $@-t
@echo "set board_info(\$$host_board,objdir) `pwd`" >> $@-t
@echo "set board_info(\$$host_board,top_srcdir) `cd $(top_srcdir); pwd`" >> $@-t
@echo "set board_info(\$$host_board,top_builddir) `cd $(top_builddir); pwd`" >> $@-t
@test ! -f remote.exp || mv remote.exp remote.bak
@mv $@-t remote.exp
DISTCLEANFILES=*.exp *.log *.sum
distclean-local:
-rm -rf data
# -*- tcl -*-
# This file is part of Mailutils testsuite.
# Copyright (C) 2002, Free Software Foundation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
source $top_srcdir/testsuite/lib/mailutils.exp
mu_init
set env(MAIL) $MU_SPOOL_DIR/mbox1
set env(FOLDER) $env(MAIL)
mu_prepare_spools
mu_exec -message "from" \
"Foo Bar\tJabberwocky"\
"Bar\tRe: Jabberwocky"\
"Sergey Poznyakoff\tSimple MIME"\
"Sergey Poznyakoff\tNested MIME"\
"Sergey Poznyakoff\tEmpty MIME Parts"
mu_exec -message "from mbox" -arg %mbox \
"Sergey Poznyakoff\tMBOX"
#end of test.exp