Commit ed9454c6 ed9454c6df05b870395376ae5a200121f1755fdc by Sergey Poznyakoff

New example

* configure.ac (MU_PRI_OFF_T): Define to the printf
format spec suitable for printing mu_off_t.
Don't use [ ] instead of test.
* include/mailutils/types.hin (MU_PRI_OFF_T): New define.
* include/mailutils/Makefile.am (type.h): Pass MU_PRI_OFF_T

* examples/mboxsize.c: New file.
* examples/Makefile.am: Build mboxsize
1 parent eed8a3dc
...@@ -691,10 +691,13 @@ AC_CHECK_SIZEOF(off_t) ...@@ -691,10 +691,13 @@ AC_CHECK_SIZEOF(off_t)
691 AC_CHECK_SIZEOF(long) 691 AC_CHECK_SIZEOF(long)
692 AC_CHECK_SIZEOF(long long) 692 AC_CHECK_SIZEOF(long long)
693 AC_SUBST(MU_OFF_TYPE) 693 AC_SUBST(MU_OFF_TYPE)
694 AC_SUBST(MU_PRI_OFF_T)
694 if test $ac_cv_sizeof_off_t -eq $ac_cv_sizeof_long; then 695 if test $ac_cv_sizeof_off_t -eq $ac_cv_sizeof_long; then
695 MU_OFF_TYPE=long 696 MU_OFF_TYPE=long
697 MU_PRI_OFF_T='ld'
696 elif test $ac_cv_sizeof_off_t -eq $ac_cv_sizeof_long_long; then 698 elif test $ac_cv_sizeof_off_t -eq $ac_cv_sizeof_long_long; then
697 MU_OFF_TYPE="long long" 699 MU_OFF_TYPE="long long"
700 MU_PRI_OFF_T='lld'
698 else 701 else
699 AC_MSG_ERROR([Cannot find ${ac_cv_sizeof_off_t}-byte type, suitable for mu_off_t]) 702 AC_MSG_ERROR([Cannot find ${ac_cv_sizeof_off_t}-byte type, suitable for mu_off_t])
700 fi 703 fi
...@@ -1159,7 +1162,7 @@ GINT_INIT([gint],[1.8 with-guile], ...@@ -1159,7 +1162,7 @@ GINT_INIT([gint],[1.8 with-guile],
1159 [useguile=yes 1162 [useguile=yes
1160 AC_DEFINE([WITH_GUILE],1,[Enable Guile support]) 1163 AC_DEFINE([WITH_GUILE],1,[Enable Guile support])
1161 GUILE_BINDIR=`guile-config info bindir` 1164 GUILE_BINDIR=`guile-config info bindir`
1162 if [ -z "$GUILE_BINDIR" ]; then 1165 if test -z "$GUILE_BINDIR"; then
1163 GUILE_BINDIR="`guile-config info prefix`/bin" 1166 GUILE_BINDIR="`guile-config info prefix`/bin"
1164 fi 1167 fi
1165 LIBMU_SCM=../libmu_scm/libmu_scm.la 1168 LIBMU_SCM=../libmu_scm/libmu_scm.la
......
...@@ -16,6 +16,7 @@ lsf ...@@ -16,6 +16,7 @@ lsf
16 mailcap 16 mailcap
17 mblconv 17 mblconv
18 mboxidx 18 mboxidx
19 mboxsize
19 mimetest 20 mimetest
20 msg-send 21 msg-send
21 mta 22 mta
......
...@@ -39,6 +39,7 @@ noinst_PROGRAMS = \ ...@@ -39,6 +39,7 @@ noinst_PROGRAMS = \
39 lsf\ 39 lsf\
40 mblconv\ 40 mblconv\
41 mboxidx\ 41 mboxidx\
42 mboxsize\
42 msg-send\ 43 msg-send\
43 mta\ 44 mta\
44 mucat\ 45 mucat\
...@@ -95,6 +96,18 @@ sfrom_LDADD =\ ...@@ -95,6 +96,18 @@ sfrom_LDADD =\
95 @MU_AUTHLIBS@\ 96 @MU_AUTHLIBS@\
96 ${MU_LIB_MAILUTILS} 97 ${MU_LIB_MAILUTILS}
97 98
99 mboxsize_LDADD =\
100 ../lib/libmuaux.la\
101 ${MU_LIB_MBOX}\
102 ${MU_LIB_IMAP}\
103 ${MU_LIB_POP}\
104 ${MU_LIB_NNTP}\
105 ${MU_LIB_MH}\
106 ${MU_LIB_MAILDIR}\
107 ${MU_LIB_AUTH}\
108 @MU_AUTHLIBS@\
109 ${MU_LIB_MAILUTILS}
110
98 nntpclient_LDADD = \ 111 nntpclient_LDADD = \
99 ../lib/libmuaux.la\ 112 ../lib/libmuaux.la\
100 ${MU_LIB_NNTP}\ 113 ${MU_LIB_NNTP}\
......
1 /* GNU Mailutils -- a suite of utilities for electronic mail
2 Copyright (C) 1999-2005, 2007, 2010-2012, 2014-2016 Free Software
3 Foundation, Inc.
4
5 GNU Mailutils is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 GNU Mailutils is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. */
17
18 #include <mailutils/mailutils.h>
19
20 struct mu_cli_setup cli = {
21 NULL,
22 NULL,
23 "compute mailbox size",
24 "MBOX"
25 };
26
27 static char *capa[] = {
28 "debug",
29 NULL
30 };
31
32 int
33 main (int argc, char **argv)
34 {
35 int rc;
36 mu_mailbox_t mbox;
37 mu_off_t size;
38 char *name;
39
40 mu_register_all_mbox_formats ();
41
42 mu_cli (argc, argv, &cli, capa, NULL, &argc, &argv);
43
44 if (argc != 1)
45 {
46 mu_error ("wrong number of arguments");
47 return 1;
48 }
49 name = argv[0];
50
51 rc = mu_mailbox_create_default (&mbox, name);
52 if (rc)
53 {
54 mu_diag_funcall (MU_DIAG_ERROR, "mu_mailbox_create_default",
55 name, rc);
56 return 1;
57 }
58
59 rc = mu_mailbox_open (mbox, MU_STREAM_READ);
60 if (rc)
61 {
62 mu_diag_funcall (MU_DIAG_ERROR, "mu_mailbox_open", name, rc);
63 return 1;
64 }
65
66 rc = mu_mailbox_get_size (mbox, &size);
67 if (rc)
68 {
69 mu_diag_funcall (MU_DIAG_ERROR, "mu_mailbox_get_size", name, rc);
70 return 1;
71 }
72
73 mu_printf ("%" MU_PRI_OFF_T "\n", size);
74
75 return 0;
76 }
77
78
79
80
...@@ -21,7 +21,10 @@ errno.h: $(top_srcdir)/libmailutils/diag/errors errno.hin ...@@ -21,7 +21,10 @@ errno.h: $(top_srcdir)/libmailutils/diag/errors errno.hin
21 $(AM_V_GEN)$(AWK) -f $(mu_aux_dir)/generr.awk $(top_srcdir)/libmailutils/diag/errors errno.hin > errno.h 21 $(AM_V_GEN)$(AWK) -f $(mu_aux_dir)/generr.awk $(top_srcdir)/libmailutils/diag/errors errno.hin > errno.h
22 22
23 types.h: $(top_srcdir)/include/mailutils/types.hin Makefile 23 types.h: $(top_srcdir)/include/mailutils/types.hin Makefile
24 $(AM_V_GEN)sed 's/_MU_OFF_TYPE_/$(MU_OFF_TYPE)/;s/_MU_DEFAULT_RECORD_/$(MU_DEFAULT_RECORD)/' $(top_srcdir)/include/mailutils/types.hin > $@ 24 $(AM_V_GEN)sed -e 's/_MU_OFF_TYPE_/$(MU_OFF_TYPE)/' \
25 -e 's/_MU_DEFAULT_RECORD_/$(MU_DEFAULT_RECORD)/' \
26 -e 's/_MU_PRI_OFF_T_/$(MU_PRI_OFF_T)/' \
27 $(top_srcdir)/include/mailutils/types.hin > $@
25 DISTCLEANFILES = types.h 28 DISTCLEANFILES = types.h
26 29
27 pkginclude_HEADERS = \ 30 pkginclude_HEADERS = \
......
...@@ -83,6 +83,7 @@ struct mu_sockaddr; /* defined in mailutils/sockaddr.h */ ...@@ -83,6 +83,7 @@ struct mu_sockaddr; /* defined in mailutils/sockaddr.h */
83 struct mu_cidr; /* defined in mailutils/cidr.h */ 83 struct mu_cidr; /* defined in mailutils/cidr.h */
84 84
85 typedef _MU_OFF_TYPE_ mu_off_t; 85 typedef _MU_OFF_TYPE_ mu_off_t;
86 #define MU_PRI_OFF_T "_MU_PRI_OFF_T_"
86 87
87 typedef struct mu_address *mu_address_t; 88 typedef struct mu_address *mu_address_t;
88 typedef struct _mu_attribute *mu_attribute_t; 89 typedef struct _mu_attribute *mu_attribute_t;
......