Commit a13049b8 a13049b8b49c168e64fbb9f54e95ef0ef9f215cd by Sergey Poznyakoff

* README-alpha: Update.

* auth/pam.c (mu_pam_module_init): Use struct.
* include/mailutils/gocs.h (struct mu_gocs_pam): New data type.
* include/mailutils/libcfg.h (mu_sieve_cfg_capa)
(mu_daemon_cfg_capa,mu_auth_cfg_capa): New declarations.
* libargp/common.c (mu_daemon_argp_parser): Handle ARGP_KEY_INIT.
* libargp/pam.c (service_name): Remove.
(pam_settings): Add new variable.
(mu_pam_argp_parser): Reflect this.
* libcfg/auth.c (mu_auth_section_parser): New function.
(mu_auth_cfg_capa): New variable.
* libcfg/common.c (mu_daemon_section_parser): Handle
mu_cfg_section_start.
* libcfg/init.c (cfg_capa_table): Add auth, sieve, daemon.
(reserved_name): Remove auth and daemon.
* mailbox/Makefile.am (EXTRA_DIST): Remove @MU_EXTRA_DIST@.
* mailbox/daemon.c (mu_gocs_daemon_init): Remove extra checks.
* mailbox/mu_auth.c (_add_module_list): Skip delimiters.
* po/POTFILES.in: Update.
1 parent d454d077
1 2007-11-20 Sergey Poznyakoff <gray@gnu.org.ua>
2
3 * README-alpha: Update.
4 * auth/pam.c (mu_pam_module_init): Use struct.
5 * include/mailutils/gocs.h (struct mu_gocs_pam): New data type.
6 * include/mailutils/libcfg.h (mu_sieve_cfg_capa)
7 (mu_daemon_cfg_capa,mu_auth_cfg_capa): New declarations.
8 * libargp/common.c (mu_daemon_argp_parser): Handle ARGP_KEY_INIT.
9 * libargp/pam.c (service_name): Remove.
10 (pam_settings): Add new variable.
11 (mu_pam_argp_parser): Reflect this.
12 * libcfg/auth.c (mu_auth_section_parser): New function.
13 (mu_auth_cfg_capa): New variable.
14 * libcfg/common.c (mu_daemon_section_parser): Handle
15 mu_cfg_section_start.
16 * libcfg/init.c (cfg_capa_table): Add auth, sieve, daemon.
17 (reserved_name): Remove auth and daemon.
18 * mailbox/Makefile.am (EXTRA_DIST): Remove @MU_EXTRA_DIST@.
19 * mailbox/daemon.c (mu_gocs_daemon_init): Remove extra checks.
20 * mailbox/mu_auth.c (_add_module_list): Skip delimiters.
21 * po/POTFILES.in: Update.
22
1 2007-11-19 Sergey Poznyakoff <gray@gnu.org.ua> 23 2007-11-19 Sergey Poznyakoff <gray@gnu.org.ua>
2 24
3 * configure.ac: Add AM_PROG_LIBTOOL. 25 * configure.ac: Add AM_PROG_LIBTOOL.
......
...@@ -5,13 +5,10 @@ or CVS version of the package. See end of file for copying conditions. ...@@ -5,13 +5,10 @@ or CVS version of the package. See end of file for copying conditions.
5 * Introduction 5 * Introduction
6 6
7 This is a *pre-release* version, and not ready for production use 7 This is a *pre-release* version, and not ready for production use
8 yet. If you are taking source from CVS, you will need to have libtool, 8 yet. If you are taking source from CVS, you will need to have several
9 automake, and autoconf installed to help contribute. See the chapter 9 special tools to help contribute. See the file README-hacking for more
10 `Building' for the detailed instructions. The script autogen.sh is 10 information, See chapter `Building' for the detailed instructions on
11 provided to help autoconfigure mailutils from the cvs src. After you 11 how to build the package.
12 run autogen.sh, there should be a file 'INSTALL' with (generic)
13 installation instructions. Package-specific installation instructions
14 are set forth in the file README.
15 12
16 Please, note that the accompanying documentation may be inaccurate 13 Please, note that the accompanying documentation may be inaccurate
17 or incomplete. The ChangeLog file is the authoritative documentation of 14 or incomplete. The ChangeLog file is the authoritative documentation of
...@@ -33,35 +30,13 @@ contact the mailing list. ...@@ -33,35 +30,13 @@ contact the mailing list.
33 30
34 * Building 31 * Building
35 32
36 In order to build this you will first need to have right versions 33 Usual procedures apply:
37 of autotools and some auxiliary GNU programs. At the time of this 34
38 writing these are: 35 ./configure
39 36 make
40 Package Version (>=) 37 make install
41 ======== ============ 38
42 automake 1.8.5 39 See INSTALL and README for the detailed instructions.
43 autoconf 2.59
44 libtool 1.5.8
45 gettext 0.14.1
46 gawk 3.1.3
47
48 You will also need bison (or yacc) and flex. The grammar sources
49 were written so that any version of yacc or bison should be able to
50 handle them, however using recent bison is anyway recommended. The lex
51 sources could theoretically be compiled with AT&T lex. I have not
52 tested this, however, so using flex is higly recommended. I use flex
53 2.5.4.
54
55 To prepare the package for building run autogen.sh. This may spit out
56 several warnings like:
57
58 pop3d_OBJECTS:.$(OBJEXT: non-POSIX variable name
59
60 Ignore them, these are due to the bug in automake. Then run
61 ./configure with the desired options (See INSTALL and README for the
62 detailed instructions). Finally, run make. Notice that the first make
63 of the package should be made in the source directory. Subsequent
64 makes can use build directory different from the source one.
65 40
66 * Debugging 41 * Debugging
67 42
...@@ -79,7 +54,7 @@ any of the mailutils programs. The option instructs the program to ...@@ -79,7 +54,7 @@ any of the mailutils programs. The option instructs the program to
79 sleep for a given number of seconds (3600 by default) right after 54 sleep for a given number of seconds (3600 by default) right after
80 startup. For example, to debug `mimeview' utility, run 55 startup. For example, to debug `mimeview' utility, run
81 56
82 mimeview --HANG [OTHER-OPTIONS] 57 mimeview --HANG [OTHER-OPTIONS]
83 58
84 Then switch to another terminal, get the PID of the ivoked utility and 59 Then switch to another terminal, get the PID of the ivoked utility and
85 attach to it using gdb: 60 attach to it using gdb:
...@@ -92,35 +67,6 @@ Once in gdb, issue the following command ...@@ -92,35 +67,6 @@ Once in gdb, issue the following command
92 67
93 Now set your breakpoints and proceed as usual. 68 Now set your breakpoints and proceed as usual.
94 69
95 * Importing gnulib files
96
97 Mailutils imports several source files from gnulib. These go
98 mainly to the conventional library libmuaux (directory lib/), but
99 several of them are incorporated into the main library libmailutils
100 (directory mailbox/). The imported sources are kept in the CVS
101 repository to avoid using eventually unstable versions appearing in
102 the main gnulib CVS. Once in a time we update the sources. The update
103 procedure is quite straightforward: change to the root directory of
104 the mailutils tree and run `gnulib-sync' script:
105
106 $ cd mailutils
107 $ scripts/gnulib-sync $HOME/src/gnulib
108
109 The script takes a single argument: the name of the directory with the
110 copy of gnulib source tree (see http://savannah.gnu.org/projects/gnulib
111 for information on how to obtain gnulib sources). After incorporating
112 the files, gnulib-sync leaves in the current directory two files named
113 gnulib.changelog and gnulib.cvs. The file gnulib.changelog contains
114 an entry to be prepended to ChangeLog, the file gnulib.cvs is a shell
115 script with the commands necessary to incorporate all the changes into
116 CVS.
117
118 If you need to add more gnulib modules to mailutils, add their
119 names to gnulib.modules file, following the instructions in its
120 heading comment. Please avoid placing modules in :mailutils section, as
121 this may lead to unwanted name clashes when linking user programs with
122 libmailutils.
123
124 * Copyright information: 70 * Copyright information:
125 71
126 Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. 72 Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
......
...@@ -149,7 +149,10 @@ int ...@@ -149,7 +149,10 @@ int
149 mu_pam_module_init (void *data) 149 mu_pam_module_init (void *data)
150 { 150 {
151 if (data) 151 if (data)
152 mu_pam_service = strdup (data); 152 {
153 struct mu_gocs_pam *p = data;
154 mu_pam_service = p->service ? strdup (p->service) : p->service;
155 }
153 return 0; 156 return 0;
154 } 157 }
155 158
......
...@@ -68,6 +68,11 @@ struct mu_gocs_mailer ...@@ -68,6 +68,11 @@ struct mu_gocs_mailer
68 char *mailer; 68 char *mailer;
69 }; 69 };
70 70
71 struct mu_gocs_pam
72 {
73 char *service;
74 };
75
71 /* Auxiliary variables for use by libargp/libcfg */ 76 /* Auxiliary variables for use by libargp/libcfg */
72 extern int mu_load_user_rcfile; 77 extern int mu_load_user_rcfile;
73 extern int mu_load_site_rcfile; 78 extern int mu_load_site_rcfile;
......
...@@ -92,6 +92,9 @@ extern struct mu_cfg_capa mu_radius_cfg_capa; ...@@ -92,6 +92,9 @@ extern struct mu_cfg_capa mu_radius_cfg_capa;
92 extern struct mu_cfg_capa mu_sql_cfg_capa; 92 extern struct mu_cfg_capa mu_sql_cfg_capa;
93 extern struct mu_cfg_capa mu_tls_cfg_capa; 93 extern struct mu_cfg_capa mu_tls_cfg_capa;
94 extern struct mu_cfg_capa mu_virtdomain_cfg_capa; 94 extern struct mu_cfg_capa mu_virtdomain_cfg_capa;
95 extern struct mu_cfg_capa mu_sieve_cfg_capa;
96 extern struct mu_cfg_capa mu_daemon_cfg_capa;
97 extern struct mu_cfg_capa mu_auth_cfg_capa;
95 98
96 #ifdef __cplusplus 99 #ifdef __cplusplus
97 } 100 }
......
...@@ -498,6 +498,10 @@ mu_daemon_argp_parser (int key, char *arg, struct argp_state *state) ...@@ -498,6 +498,10 @@ mu_daemon_argp_parser (int key, char *arg, struct argp_state *state)
498 daemon_settings.transcript = 1; 498 daemon_settings.transcript = 1;
499 break; 499 break;
500 500
501 case ARGP_KEY_INIT:
502 daemon_settings = mu_gocs_daemon;
503 break;
504
501 case ARGP_KEY_FINI: 505 case ARGP_KEY_FINI:
502 mu_gocs_store ("daemon", &daemon_settings); 506 mu_gocs_store ("daemon", &daemon_settings);
503 break; 507 break;
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
23 #include "mailutils/libargp.h" 23 #include "mailutils/libargp.h"
24 #include <mailutils/pam.h> 24 #include <mailutils/pam.h>
25 25
26 static char *service_name; 26 static struct mu_gocs_pam pam_settings;
27 27
28 static error_t 28 static error_t
29 mu_pam_argp_parser (int key, char *arg, struct argp_state *state) 29 mu_pam_argp_parser (int key, char *arg, struct argp_state *state)
...@@ -31,11 +31,11 @@ mu_pam_argp_parser (int key, char *arg, struct argp_state *state) ...@@ -31,11 +31,11 @@ mu_pam_argp_parser (int key, char *arg, struct argp_state *state)
31 switch (key) 31 switch (key)
32 { 32 {
33 case OPT_PAM_SERVICE: 33 case OPT_PAM_SERVICE:
34 service_name = arg; 34 pam_settings.service = arg;
35 break; 35 break;
36 36
37 case ARGP_KEY_FINI: 37 case ARGP_KEY_FINI:
38 mu_gocs_store ("pam", service_name); 38 mu_gocs_store ("pam", &pam_settings);
39 break; 39 break;
40 40
41 default: 41 default:
......
...@@ -54,5 +54,22 @@ static struct mu_cfg_param mu_auth_param[] = { ...@@ -54,5 +54,22 @@ static struct mu_cfg_param mu_auth_param[] = {
54 { NULL } 54 { NULL }
55 }; 55 };
56 56
57 /* FIXME: init? */ 57 int
58 mu_auth_section_parser
59 (enum mu_cfg_section_stage stage, const mu_cfg_node_t *node,
60 void *section_data, void *call_data)
61 {
62 switch (stage)
63 {
64 case mu_cfg_section_start:
65 break;
58 66
67 case mu_cfg_section_end:
68 mu_auth_finish_setup ();
69 }
70 return 0;
71 }
72
73 struct mu_cfg_capa mu_auth_cfg_capa = {
74 "auth", mu_auth_param, mu_auth_section_parser
75 };
......
...@@ -127,4 +127,24 @@ static struct mu_cfg_param mu_daemon_param[] = { ...@@ -127,4 +127,24 @@ static struct mu_cfg_param mu_daemon_param[] = {
127 { NULL } 127 { NULL }
128 }; 128 };
129 129
130 DCL_CFG_CAPA (daemon); 130 int
131 mu_daemon_section_parser
132 (enum mu_cfg_section_stage stage, const mu_cfg_node_t *node,
133 void *section_data, void *call_data)
134 {
135 switch (stage)
136 {
137 case mu_cfg_section_start:
138 daemon_settings = mu_gocs_daemon;
139 break;
140
141 case mu_cfg_section_end:
142 mu_gocs_store ("daemon", &daemon_settings);
143 }
144 return 0;
145 }
146
147 struct mu_cfg_capa mu_daemon_cfg_capa = {
148 "daemon", mu_daemon_param, mu_daemon_section_parser
149 };
150
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
24 24
25 struct mu_cfg_capa *cfg_capa_table[] = { 25 struct mu_cfg_capa *cfg_capa_table[] = {
26 #define S(c) &__mu_common_cat3__(mu_,c,_cfg_capa) 26 #define S(c) &__mu_common_cat3__(mu_,c,_cfg_capa)
27 S (auth),
27 S (mailbox), 28 S (mailbox),
28 S (locking), 29 S (locking),
29 S (address), 30 S (address),
...@@ -35,6 +36,8 @@ struct mu_cfg_capa *cfg_capa_table[] = { ...@@ -35,6 +36,8 @@ struct mu_cfg_capa *cfg_capa_table[] = {
35 S (sql), 36 S (sql),
36 S (tls), 37 S (tls),
37 S (virtdomain), 38 S (virtdomain),
39 S (sieve),
40 S (daemon),
38 NULL 41 NULL
39 }; 42 };
40 43
...@@ -52,7 +55,7 @@ find_cfg_capa (const char *name) ...@@ -52,7 +55,7 @@ find_cfg_capa (const char *name)
52 static int 55 static int
53 reserved_name (const char *name) 56 reserved_name (const char *name)
54 { 57 {
55 static char *reserved[] = { "auth", "common", "daemon", "license", NULL }; 58 static char *reserved[] = { "common", "license", NULL };
56 char **p; 59 char **p;
57 for (p = reserved; *p; p++) 60 for (p = reserved; *p; p++)
58 if (strcmp (name, *p) == 0) 61 if (strcmp (name, *p) == 0)
......
1 # intmax.m4 serial 3 (gettext-0.16) 1 # intmax.m4 serial 2 (gettext-0.14.2)
2 dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. 2 dnl Copyright (C) 2002-2005 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation 3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it, 4 dnl gives unlimited permission to copy and/or distribute it,
...@@ -22,10 +22,7 @@ AC_DEFUN([gt_TYPE_INTMAX_T], ...@@ -22,10 +22,7 @@ AC_DEFUN([gt_TYPE_INTMAX_T],
22 #if HAVE_INTTYPES_H_WITH_UINTMAX 22 #if HAVE_INTTYPES_H_WITH_UINTMAX
23 #include <inttypes.h> 23 #include <inttypes.h>
24 #endif 24 #endif
25 ], [intmax_t x = -1; 25 ], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
26 return !x;],
27 gt_cv_c_intmax_t=yes,
28 gt_cv_c_intmax_t=no)])
29 if test $gt_cv_c_intmax_t = yes; then 26 if test $gt_cv_c_intmax_t = yes; then
30 AC_DEFINE(HAVE_INTMAX_T, 1, 27 AC_DEFINE(HAVE_INTMAX_T, 1,
31 [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) 28 [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
......
1 # inttypes-pri.m4 serial 4 (gettext-0.16) 1 # inttypes-pri.m4 serial 2 (gettext-0.15)
2 dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc. 2 dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation 3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it, 4 dnl gives unlimited permission to copy and/or distribute it,
...@@ -6,15 +6,13 @@ dnl with or without modifications, as long as this notice is preserved. ...@@ -6,15 +6,13 @@ dnl with or without modifications, as long as this notice is preserved.
6 6
7 dnl From Bruno Haible. 7 dnl From Bruno Haible.
8 8
9 AC_PREREQ(2.52)
10
11 # Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* 9 # Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
12 # macros to non-string values. This is the case on AIX 4.3.3. 10 # macros to non-string values. This is the case on AIX 4.3.3.
13 11
14 AC_DEFUN([gt_INTTYPES_PRI], 12 AC_DEFUN([gt_INTTYPES_PRI],
15 [ 13 [
16 AC_CHECK_HEADERS([inttypes.h]) 14 AC_REQUIRE([gl_HEADER_INTTYPES_H])
17 if test $ac_cv_header_inttypes_h = yes; then 15 if test $gl_cv_header_inttypes_h = yes; then
18 AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], 16 AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
19 gt_cv_inttypes_pri_broken, 17 gt_cv_inttypes_pri_broken,
20 [ 18 [
...@@ -28,9 +26,5 @@ char *p = PRId32; ...@@ -28,9 +26,5 @@ char *p = PRId32;
28 if test "$gt_cv_inttypes_pri_broken" = yes; then 26 if test "$gt_cv_inttypes_pri_broken" = yes; then
29 AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, 27 AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
30 [Define if <inttypes.h> exists and defines unusable PRI* macros.]) 28 [Define if <inttypes.h> exists and defines unusable PRI* macros.])
31 PRI_MACROS_BROKEN=1
32 else
33 PRI_MACROS_BROKEN=0
34 fi 29 fi
35 AC_SUBST([PRI_MACROS_BROKEN])
36 ]) 30 ])
......
1 # inttypes_h.m4 serial 7 1 # inttypes_h.m4 serial 6
2 dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc. 2 dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation 3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it, 4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved. 5 dnl with or without modifications, as long as this notice is preserved.
...@@ -15,7 +15,7 @@ AC_DEFUN([gl_AC_HEADER_INTTYPES_H], ...@@ -15,7 +15,7 @@ AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
15 [AC_TRY_COMPILE( 15 [AC_TRY_COMPILE(
16 [#include <sys/types.h> 16 [#include <sys/types.h>
17 #include <inttypes.h>], 17 #include <inttypes.h>],
18 [uintmax_t i = (uintmax_t) -1; return !i;], 18 [uintmax_t i = (uintmax_t) -1;],
19 gl_cv_header_inttypes_h=yes, 19 gl_cv_header_inttypes_h=yes,
20 gl_cv_header_inttypes_h=no)]) 20 gl_cv_header_inttypes_h=no)])
21 if test $gl_cv_header_inttypes_h = yes; then 21 if test $gl_cv_header_inttypes_h = yes; then
......
...@@ -33,7 +33,7 @@ AM_CPPFLAGS = \ ...@@ -33,7 +33,7 @@ AM_CPPFLAGS = \
33 -DSITE_VIRTUAL_PWDDIR=\"@SITE_VIRTUAL_PWDDIR@\"\ 33 -DSITE_VIRTUAL_PWDDIR=\"@SITE_VIRTUAL_PWDDIR@\"\
34 -DLOCALEDIR=\"$(localedir)\" 34 -DLOCALEDIR=\"$(localedir)\"
35 35
36 EXTRA_DIST = @MU_EXTRA_DIST@ errors muerrno.cin parsedate.y fgetpwent.c cfg_parser.y cfg_parser.h inttostr.c 36 EXTRA_DIST = errors muerrno.cin parsedate.y fgetpwent.c cfg_parser.y cfg_parser.h inttostr.c inttostr.h
37 37
38 libmailutils_la_SOURCES = \ 38 libmailutils_la_SOURCES = \
39 address.c\ 39 address.c\
......
...@@ -87,12 +87,6 @@ mu_gocs_daemon_init (void *data) ...@@ -87,12 +87,6 @@ mu_gocs_daemon_init (void *data)
87 { 87 {
88 struct mu_gocs_daemon *cfg = data; 88 struct mu_gocs_daemon *cfg = data;
89 mu_gocs_daemon = *cfg; 89 mu_gocs_daemon = *cfg;
90
91 if (mu_gocs_daemon.maxchildren)
92 mu_gocs_daemon.mode = MODE_DAEMON;
93
94 if (mu_gocs_daemon.pidfile)
95 mu_gocs_daemon.mode = MODE_DAEMON;
96 } 90 }
97 return 0; 91 return 0;
98 } 92 }
......
...@@ -319,7 +319,7 @@ _add_module_list (const char *modlist, int (*fun)(const char *name)) ...@@ -319,7 +319,7 @@ _add_module_list (const char *modlist, int (*fun)(const char *name))
319 exit (1); 319 exit (1);
320 } 320 }
321 321
322 for (i = 0; i < argc; i++) 322 for (i = 0; i < argc; i += 2)
323 { 323 {
324 if (fun (argv[i])) 324 if (fun (argv[i]))
325 { 325 {
......
...@@ -27,6 +27,9 @@ imap4d/login.c ...@@ -27,6 +27,9 @@ imap4d/login.c
27 imap4d/search.c 27 imap4d/search.c
28 imap4d/signal.c 28 imap4d/signal.c
29 imap4d/util.c 29 imap4d/util.c
30 lib/argp-help.c
31 lib/argp-parse.c
32 lib/getopt.c
30 lib/mailcap.c 33 lib/mailcap.c
31 lib/xmalloc.c 34 lib/xmalloc.c
32 libargp/mu_argp.c 35 libargp/mu_argp.c
...@@ -94,12 +97,9 @@ mail/summary.c ...@@ -94,12 +97,9 @@ mail/summary.c
94 mail/unalias.c 97 mail/unalias.c
95 mail/util.c 98 mail/util.c
96 mail/z.c 99 mail/z.c
97 mailbox/argp-help.c
98 mailbox/argp-parse.c
99 mailbox/errors 100 mailbox/errors
100 mailbox/file_stream.c 101 mailbox/file_stream.c
101 mailbox/filter_iconv.c 102 mailbox/filter_iconv.c
102 mailbox/getopt.c
103 mailbox/message.c 103 mailbox/message.c
104 mailbox/mu_auth.c 104 mailbox/mu_auth.c
105 mailbox/mutil.c 105 mailbox/mutil.c
......