From ee2489483b27075fd21ba3c01c87deb7afbdd9d9 Mon Sep 17 00:00:00 2001 From: Daniel Spiljar Date: Fri, 3 Mar 2023 22:49:48 +0100 Subject: [PATCH] Code cleanup and indentation. C source files (with the exception of third-party files, i.e. getopt and md5) have been indented with GNU indent. The indentation "standard" has been documented in the readme file. --- README.md | 3 + src/info.c | 116 ++++++++++----------- src/info.h | 2 +- src/maildir.c | 144 ++++++++++++++------------ src/maildir.h | 48 +++++---- src/main.c | 65 ++++++------ src/mbox.c | 48 +++++---- src/mbox.h | 8 +- src/message.h | 8 +- src/mh.c | 203 +++++++++++++++++++----------------- src/mh.h | 42 ++++---- src/misc.c | 218 ++++++++++++++++++++------------------- src/misc.h | 17 +-- src/re.c | 42 ++++---- src/re.h | 4 +- src/scan.c | 279 ++++++++++++++++++++++++++------------------------ src/scan.h | 6 +- src/wrap.c | 81 +++++++++------ src/wrap.h | 69 +++++++------ 19 files changed, 740 insertions(+), 663 deletions(-) diff --git a/README.md b/README.md index 5dead84..17b61eb 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,6 @@ GNU/Linux distrubution, for example), please drop me a line about it. For build instructions, read the file "INSTALL", and run `./configure --help`. + +This project aims to follow the GNU coding style (https://www.gnu.org/prep/standards/html_node/Formatting.html), +at least loosely. The code should be indented with indent -gnu -nut -ppi2. diff --git a/src/info.c b/src/info.c index b041ae4..888f943 100644 --- a/src/info.c +++ b/src/info.c @@ -36,7 +36,8 @@ print_wrap (char *str, int len, int *n) fprintf (stdout, "\n"); *n = 0; } - else fprintf (stdout, " "); + else + fprintf (stdout, " "); } void @@ -45,12 +46,12 @@ version (void) int n = 0; fprintf (stdout, "%s %s\n\n" - "Copyright (C) 2000 - 2004, 2006, 2010, 2023 Daniel Spiljar\n" - "This program is free software; you can redistribute it and/or " - "modify\nit under the terms of the GNU General Public License " - "as published by\nthe Free Software Foundation; either version " - "2 of the License, or\n(at your option) any later version.\n\n", - APPNAME, VERSION); + "Copyright (C) 2000 - 2004, 2006, 2010, 2023 Daniel Spiljar\n" + "This program is free software; you can redistribute it and/or " + "modify\nit under the terms of the GNU General Public License " + "as published by\nthe Free Software Foundation; either version " + "2 of the License, or\n(at your option) any later version.\n\n", + APPNAME, VERSION); fprintf (stdout, "Compilation options:\n"); #ifdef HAVE_DIRENT_H print_wrap ("HAVE_DIRENT_H", 13, &n); @@ -64,9 +65,10 @@ version (void) #ifdef HAVE_FTS_OPEN print_wrap ("HAVE_FTS_OPEN", 13, &n); #else -# ifdef HAVE_FTW +# ifdef HAVE_FTW print_wrap ("HAVE_FTW", 8, &n); -# endif /* HAVE_FTW */ +# endif + /* HAVE_FTW */ #endif /* HAVE_FTS_OPEN */ /* fprintf (stdout, "HAVE_LIBLOCKFILE "); @@ -100,71 +102,71 @@ version (void) #endif /* HAVE_LIBDMALLOC */ fprintf (stdout, "\n"); - exit(0); + exit (0); } -void +void help (void) { - fprintf(stdout, "%s %s - search MAILBOX for messages matching PATTERN\n\n", - APPNAME, VERSION); - fprintf(stdout, - "Miscellaneous:\n\n" - " -h, --help\t\t\tThis help screen\n" - " -V, --version\t\tDisplay version, copyright and\n" - "\t\t\t\tcompile-time options information\n" - " -r, --recursive\t\tDescend into directories recursively\n\n" - "Output control:\n\n" - " -c, --count\t\t\tPrint a count of matching messages\n" - " -d, --delete\t\t\tDelete matching messages\n" - " -nd, --no-duplicates\t\tIgnore duplicate messages\n" - " -o, --output=MAILBOX\t\tWrite messages to MAILBOX\n" - " -p, --pipe=COMMAND\t\tPipe each found message to COMMAND\n" - " -s, --no-messages\t\tSuppress most error messages\n" - " --debug\t\t\tPrint messages useful for debugging\n\n" - "Matching criteria:\n\n" - " -E, --extended-regexp\tPATTERN is an extended regular expression\n" - " -G, --basic-regexp\t\tPATTERN is a basic regular expression\n"); + fprintf (stdout, "%s %s - search MAILBOX for messages matching PATTERN\n\n", + APPNAME, VERSION); + fprintf (stdout, + "Miscellaneous:\n\n" + " -h, --help\t\t\tThis help screen\n" + " -V, --version\t\tDisplay version, copyright and\n" + "\t\t\t\tcompile-time options information\n" + " -r, --recursive\t\tDescend into directories recursively\n\n" + "Output control:\n\n" + " -c, --count\t\t\tPrint a count of matching messages\n" + " -d, --delete\t\t\tDelete matching messages\n" + " -nd, --no-duplicates\t\tIgnore duplicate messages\n" + " -o, --output=MAILBOX\t\tWrite messages to MAILBOX\n" + " -p, --pipe=COMMAND\t\tPipe each found message to COMMAND\n" + " -s, --no-messages\t\tSuppress most error messages\n" + " --debug\t\t\tPrint messages useful for debugging\n\n" + "Matching criteria:\n\n" + " -E, --extended-regexp\tPATTERN is an extended regular expression\n" + " -G, --basic-regexp\t\tPATTERN is a basic regular expression\n"); #ifdef HAVE_LIBPCRE - fprintf(stdout, - " -P, --perl-regexp\t\tPATTERN is a Perl regular expression\n"); + fprintf (stdout, + " -P, --perl-regexp\t\tPATTERN is a Perl regular expression\n"); #endif /* HAVE_LIBPCRE */ - fprintf(stdout, - " -e, --regexp=PATTERN\t\tUse PATTERN as a regular expression\n" - " -i, --ignore-case\t\tIgnore case distinctions\n" - " -v, --invert-match\t\tSelect non-matching messages\n\n" - "Search scope selection:\n\n" - " -H, --headers\t\tMatch PATTERN against message headers\n" - " -B, --body\t\t\tMatch PATTERN against message body\n\n" - "File locking:\n\n" - " -nl, --no-file-lock\t\tDo not lock files\n" - " -l, --file-lock=METHOD\tSelect file locking METHOD\n" - "\t\t\t\tMETHOD is"); + fprintf (stdout, + " -e, --regexp=PATTERN\t\tUse PATTERN as a regular expression\n" + " -i, --ignore-case\t\tIgnore case distinctions\n" + " -v, --invert-match\t\tSelect non-matching messages\n\n" + "Search scope selection:\n\n" + " -H, --headers\t\tMatch PATTERN against message headers\n" + " -B, --body\t\t\tMatch PATTERN against message body\n\n" + "File locking:\n\n" + " -nl, --no-file-lock\t\tDo not lock files\n" + " -l, --file-lock=METHOD\tSelect file locking METHOD\n" + "\t\t\t\tMETHOD is"); #ifdef HAVE_FCNTL - fprintf(stdout, " `fcntl',"); + fprintf (stdout, " `fcntl',"); #endif /* HAVE_FCNTL */ #ifdef HAVE_FLOCK - fprintf(stdout, " `flock',"); + fprintf (stdout, " `flock',"); #endif /* HAVE_FLOCK */ - fprintf(stdout, " or `none'\n\n" - "Mailbox type selection:\n\n" - " -m, --mailbox-format=TYPE\tSelect mailbox TYPE\n" - "\t\t\t\tTYPE is `mbox', "); + fprintf (stdout, " or `none'\n\n" + "Mailbox type selection:\n\n" + " -m, --mailbox-format=TYPE\tSelect mailbox TYPE\n" + "\t\t\t\tTYPE is `mbox', "); #ifdef HAVE_LIBZ - fprintf(stdout, "`zmbox', "); + fprintf (stdout, "`zmbox', "); #endif /* HAVE_LIBZ */ #ifdef HAVE_LIBBZ2 - fprintf(stdout, "`bz2mbox', "); + fprintf (stdout, "`bz2mbox', "); #endif /* HAVE_LIBBZ2 */ - fprintf(stdout, - "`mh',\n" - "\t\t\t\t`nnml', `nnmh', or `maildir'.\n\n" - "Mail bug reports and flames to <%s>.\n", BUGREPORT_ADDR); + fprintf (stdout, + "`mh',\n" + "\t\t\t\t`nnml', `nnmh', or `maildir'.\n\n" + "Mail bug reports and flames to <%s>.\n", BUGREPORT_ADDR); - exit(0); + exit (0); } -void +void usage (void) { printf ("Usage: %s [OPTION] PATTERN MAILBOX ...\n\n" diff --git a/src/info.h b/src/info.h index ffb81df..cc55e1c 100644 --- a/src/info.h +++ b/src/info.h @@ -18,7 +18,7 @@ */ #ifndef INFO_H -#define INFO_H +# define INFO_H void print_wrap (char *str, int len, int *n); void version (void); diff --git a/src/maildir.c b/src/maildir.c index 4e7b608..c687fe3 100644 --- a/src/maildir.c +++ b/src/maildir.c @@ -23,20 +23,23 @@ #include #ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) #else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ #endif /* HAVE_DIRENT_H */ #include @@ -52,7 +55,7 @@ #include "wrap.h" #ifdef HAVE_LIBDMALLOC -#include +# include #endif /* HAVE_LIBDMALLOC */ maildir_t * @@ -64,20 +67,20 @@ maildir_open (const char *path) foo = m_opendir (path); if (foo == NULL) - return NULL; + return NULL; closedir (foo); if (-1 == maildir_check (path)) { if (config.merr) - fprintf (stderr, "%s: %s: Not a maildir folder\n", APPNAME, path); + fprintf (stderr, "%s: %s: Not a maildir folder\n", APPNAME, path); return NULL; } - dirname = (char *) xmalloc((sizeof (char) * (strlen (path) + 5))); + dirname = (char *) xmalloc ((sizeof (char) * (strlen (path) + 5))); - mp = (maildir_t *) xmalloc(sizeof (maildir_t)); + mp = (maildir_t *) xmalloc (sizeof (maildir_t)); sprintf (dirname, "%s/new", path); mp->new = m_opendir (dirname); if (mp->new == NULL) @@ -108,14 +111,14 @@ maildir_open (const char *path) free (dirname); return mp; -} /* maildir_open */ +} /* maildir_open */ message_t * -maildir_read_message (maildir_t *mdp) +maildir_read_message (maildir_t * mdp) { int isheaders = 1; int have_from = 0, have_to = 0, have_message_id = 0, have_sender = 0, - have_date = 0; + have_date = 0; static message_t *message; static struct dirent *d_content; char *filename, buffer[BUFSIZ]; @@ -124,9 +127,9 @@ maildir_read_message (maildir_t *mdp) message = allocate_message (); - for(;;) + for (;;) { - if (mdp->new != NULL) + if (mdp->new != NULL) { d_content = readdir (mdp->new); if (d_content == NULL) @@ -155,9 +158,10 @@ maildir_read_message (maildir_t *mdp) if (d_content->d_name[0] == '.') continue; - filename = - (char *) xmalloc ((sizeof (char)*((strlen (d_content->d_name)) - + (strlen (config.boxname)) + 6))); + filename = + (char *) xmalloc ((sizeof (char) * ((strlen (d_content->d_name)) + + (strlen (config.boxname)) + + 6))); /* filename = @@ -173,7 +177,7 @@ maildir_read_message (maildir_t *mdp) free (filename); isheaders = 1; - fp = m_fopen(message->filename, "r"); + fp = m_fopen (message->filename, "r"); if (fp == NULL) continue; @@ -185,7 +189,7 @@ maildir_read_message (maildir_t *mdp) { isheaders = 0; continue; - } /* if */ + } /* if */ if (isheaders) { if (0 == strncasecmp ("From: ", buffer, 6)) @@ -199,43 +203,45 @@ maildir_read_message (maildir_t *mdp) if (0 == strncasecmp ("Message-ID: ", buffer, 12)) have_message_id = 1; if (0 == strncasecmp ("Return-Path: ", buffer, 13)) - message->from = parse_return_path(buffer); + message->from = parse_return_path (buffer); message->headers = (char *) xrealloc (message->headers, - ((1 + s + message->hbytes) * sizeof (char))); + ((1 + s + + message->hbytes) * sizeof (char))); strcpy (message->headers + message->hbytes, buffer); message->hbytes += s; - } /* if */ + } /* if */ else { message->body = (char *) xrealloc (message->body, - ((1 + s + message->bbytes) * sizeof (char))); + ((1 + s + + message->bbytes) * sizeof (char))); strcpy (message->body + message->bbytes, buffer); message->bbytes += s; - } /* else */ - } /* while */ + } /* else */ + } /* while */ /* if (!have_from || !have_to || !have_message_id) */ - if ((!have_from && !have_sender)|| !have_date) + if ((!have_from && !have_sender) || !have_date) { if (config.merr) - fprintf(stderr, "%s: %s: Not a RFC 2822 message\n", - APPNAME, message->filename); - fclose(fp); + fprintf (stderr, "%s: %s: Not a RFC 2822 message\n", + APPNAME, message->filename); + fclose (fp); continue; } - - fclose(fp); - return message; - } /* for */ -} /* maildir_read_message */ -void -maildir_write_message (message_t *m, const char *path) + fclose (fp); + return message; + } /* for */ +} /* maildir_read_message */ + +void +maildir_write_message (message_t * m, const char *path) { char bla[BUFSIZ], *s1, *s2; int t; @@ -245,11 +251,11 @@ maildir_write_message (message_t *m, const char *path) t = (int) time (NULL); sprintf (bla, "%i.%i_%i.%s", - t, config.pid, runtime.maildir_count, config.hostname); + t, config.pid, runtime.maildir_count, config.hostname); s1 = (char *) xmalloc ((strlen (path) + strlen (bla) + 6) * sizeof (char)); - sprintf(s1, "%s/tmp/%s", path, bla); + sprintf (s1, "%s/tmp/%s", path, bla); s2 = (char *) xmalloc ((strlen (path) + strlen (bla) + 6) * sizeof (char)); - sprintf(s2, "%s/new/%s", path, bla); + sprintf (s2, "%s/new/%s", path, bla); f1 = m_fopen (s1, "w"); fprintf (f1, "%s\n%s", m->headers, m->body); @@ -257,7 +263,7 @@ maildir_write_message (message_t *m, const char *path) rename (s1, s2); } -int +int maildir_check (const char *path) { static struct stat fs; @@ -268,48 +274,54 @@ maildir_check (const char *path) sprintf (s, "%s/cur", path); i = stat (s, &fs); - if (-1 == i) return -1; - if (! S_ISDIR (fs.st_mode)) return -1; + if (-1 == i) + return -1; + if (!S_ISDIR (fs.st_mode)) + return -1; sprintf (s, "%s/new", path); i = stat (s, &fs); - if (-1 == i) return -1; - if (! S_ISDIR (fs.st_mode)) return -1; + if (-1 == i) + return -1; + if (!S_ISDIR (fs.st_mode)) + return -1; - sprintf(s, "%s/tmp", path); + sprintf (s, "%s/tmp", path); i = stat (s, &fs); - if (-1 == i) return -1; - if (! S_ISDIR (fs.st_mode)) return -1; + if (-1 == i) + return -1; + if (!S_ISDIR (fs.st_mode)) + return -1; free (s); return 0; } -void +void maildir_create (const char *path) { char *s; int i; - s = (char *) xmalloc ((strlen (path) + 4) * sizeof(char)); + s = (char *) xmalloc ((strlen (path) + 4) * sizeof (char)); errno = 0; for (;;) { - sprintf(s, "%s", path); - i = mkdir (s, S_IRWXU); - if (-1 == i) - break; - sprintf(s, "%s/new", path); + sprintf (s, "%s", path); i = mkdir (s, S_IRWXU); if (-1 == i) break; - sprintf(s, "%s/cur", path); + sprintf (s, "%s/new", path); i = mkdir (s, S_IRWXU); if (-1 == i) break; - sprintf(s, "%s/tmp", path); + sprintf (s, "%s/cur", path); + i = mkdir (s, S_IRWXU); + if (-1 == i) + break; + sprintf (s, "%s/tmp", path); i = mkdir (s, S_IRWXU); if (-1 == i) break; @@ -321,7 +333,7 @@ maildir_create (const char *path) { if (config.merr) { - fprintf(stderr, "%s:%s: ", APPNAME, s); + fprintf (stderr, "%s:%s: ", APPNAME, s); perror (NULL); } } diff --git a/src/maildir.h b/src/maildir.h index bfb0183..002b997 100644 --- a/src/maildir.h +++ b/src/maildir.h @@ -18,28 +18,32 @@ */ #ifndef MAILDIR_H -#define MAILDIR_H +# define MAILDIR_H -#include +# include -#ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) -#else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ -#endif /* HAVE_DIRENT_H */ +# ifdef HAVE_DIRENT_H +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +# else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ +# endif + /* HAVE_DIRENT_H */ -#include "mboxgrep.h" +# include "mboxgrep.h" typedef struct { @@ -50,8 +54,8 @@ typedef struct maildir_t *maildir_open (const char *path); int maildir_check (const char *path); void maildir_create (const char *path); -void maildir_close (maildir_t *mdp); -message_t *maildir_read_message (maildir_t *mdp); -void maildir_write_message (message_t *m, const char *path); +void maildir_close (maildir_t * mdp); +message_t *maildir_read_message (maildir_t * mdp); +void maildir_write_message (message_t * m, const char *path); #endif /* MAILDIR_H */ diff --git a/src/main.c b/src/main.c index efe8716..da14fac 100644 --- a/src/main.c +++ b/src/main.c @@ -26,7 +26,7 @@ #include #include #ifdef HAVE_LIBZ -#include +# include #endif /* HAVE_LIBZ */ #include "getopt.h" @@ -36,11 +36,11 @@ #include "mbox.h" #include "mh.h" #include "scan.h" -#include "wrap.h" /* xcalloc() et cetera */ +#include "wrap.h" /* xcalloc() et cetera */ #include "re.h" #ifdef HAVE_LIBDMALLOC -#include +# include #endif /* HAVE_LIBDMALLOC */ option_t config; @@ -54,33 +54,32 @@ main (int argc, char **argv) runtime.count = 0; runtime.maildir_count = 0; - static struct option long_options[] = - { - {"count", 0, 0, 'c'}, - {"delete", 0, 0, 'd'}, - /* {"date", 1, 0, 'D'}, */ - {"extended-regexp", 0, 0, 'E'}, - {"basic-regexp", 0, 0, 'G'}, - {"perl-regexp", 0, 0, 'P'}, - {"help", 0, 0, 'h'}, - {"ignore-case", 0, 0, 'i'}, - {"mailbox-format", 1, 0, 'm'}, - {"no", 1, 0, 'n' }, - {"pipe", 1, 0, 'p'}, - {"regexp", 1, 0, 'e'}, - {"invert-match", 0, 0, 'v'}, - {"version", 0, 0, 'V'}, - {"headers", 0, 0, 'H'}, - {"body", 0, 0, 'B'}, - {"no-messages", 0, 0, 's'}, - {"output", 1, 0, 'o'}, - {"no-duplicates", 0, 0, 200}, - {"no-file-lock", 0, 0, 201}, - {"debug", 0, 0, 202}, - {"file-lock", 1, 0, 'l'}, - {"recursive", 0, 0, 'r'}, - {0, 0, 0, 0} - }; + static struct option long_options[] = { + {"count", 0, 0, 'c'}, + {"delete", 0, 0, 'd'}, + /* {"date", 1, 0, 'D'}, */ + {"extended-regexp", 0, 0, 'E'}, + {"basic-regexp", 0, 0, 'G'}, + {"perl-regexp", 0, 0, 'P'}, + {"help", 0, 0, 'h'}, + {"ignore-case", 0, 0, 'i'}, + {"mailbox-format", 1, 0, 'm'}, + {"no", 1, 0, 'n'}, + {"pipe", 1, 0, 'p'}, + {"regexp", 1, 0, 'e'}, + {"invert-match", 0, 0, 'v'}, + {"version", 0, 0, 'V'}, + {"headers", 0, 0, 'H'}, + {"body", 0, 0, 'B'}, + {"no-messages", 0, 0, 's'}, + {"output", 1, 0, 'o'}, + {"no-duplicates", 0, 0, 200}, + {"no-file-lock", 0, 0, 201}, + {"debug", 0, 0, 202}, + {"file-lock", 1, 0, 'l'}, + {"recursive", 0, 0, 'r'}, + {0, 0, 0, 0} + }; set_default_options (); @@ -102,14 +101,14 @@ main (int argc, char **argv) runtime.cs->md5 = (char **) xcalloc (1, sizeof (char **)); runtime.cs->n = 0; - if (optind < argc && ! config.haveregex) + if (optind < argc && !config.haveregex) { config.regex_s = xstrdup (argv[optind]); config.haveregex = 1; ++optind; } - if (config.haveregex) + if (config.haveregex) { #ifdef HAVE_LIBPCRE if (config.perl) @@ -161,7 +160,7 @@ main (int argc, char **argv) ++optind; } - if (! havemailbox) + if (!havemailbox) { config.format = MBOX; scan_mailbox ("-"); diff --git a/src/mbox.c b/src/mbox.c index 1cbf57e..6329d68 100644 --- a/src/mbox.c +++ b/src/mbox.c @@ -30,13 +30,13 @@ #include #include #ifdef HAVE_FLOCK -#include +# include #endif /* HAVE_FLOCK */ #ifdef HAVE_LIBZ -#include +# include #endif /* HAVE_LIBZ */ #ifdef HAVE_LIBBZ2 -#include +# include #endif /* HAVE_LIBBZ2 */ #define BUFLEN 16384 @@ -46,7 +46,7 @@ #include "wrap.h" #ifdef HAVE_LIBDMALLOC -#include +# include #endif /* HAVE_LIBDMALLOC */ mbox_t * @@ -70,11 +70,11 @@ mbox_open (const char *path, const char *mode) fd = m_open (path, O_RDONLY, 0); else if (mode[0] == 'w') fd = m_open (path, (O_WRONLY | O_CREAT | O_APPEND), - (S_IWUSR | S_IRUSR)); + (S_IWUSR | S_IRUSR)); else { fprintf (stderr, "%s: mbox.c: Unknown mode %c. You shouldn't " - "get this error...", APPNAME, mode[0]); + "get this error...", APPNAME, mode[0]); exit (2); } @@ -88,7 +88,7 @@ mbox_open (const char *path, const char *mode) errno = 0; return NULL; } - + if (config.lock) { #ifdef HAVE_FLOCK @@ -100,7 +100,7 @@ mbox_open (const char *path, const char *mode) op = LOCK_EX; if (-1 == flock (fd, op)) #else - memset (&lck, 0, sizeof (struct flock)); + memset (&lck, 0, sizeof (struct flock)); lck.l_whence = SEEK_SET; if (mode[0] == 'r') lck.l_type = F_RDLCK; @@ -119,7 +119,7 @@ mbox_open (const char *path, const char *mode) close (fd); return NULL; } - } + } if (mode[0] == 'r') { @@ -147,7 +147,7 @@ mbox_open (const char *path, const char *mode) mp->fp = (BZFILE *) BZ2_bzdopen (fd, "wb"); #endif /* HAVE_LIBBZ2 */ } - + if (mp->fp == NULL) { if (config.merr) @@ -191,9 +191,10 @@ mbox_open (const char *path, const char *mode) { if (0 == strcmp ("-", path)) fprintf (stderr, "%s: (standard input): Not a mbox folder\n", - APPNAME); + APPNAME); else - fprintf (stderr, "%s: %s: Not a mbox folder\n", APPNAME, path); + fprintf (stderr, "%s: %s: Not a mbox folder\n", APPNAME, + path); } if (config.format == MBOX) fclose (mp->fp); @@ -308,7 +309,7 @@ mbox_read_message (mbox_t * mp) { message->headers = (char *) realloc (message->headers, - ((1 + s + message->hbytes) * sizeof (char))); + ((1 + s + message->hbytes) * sizeof (char))); strcpy (message->headers + message->hbytes, buffer); message->hbytes += s; } @@ -321,7 +322,7 @@ mbox_read_message (mbox_t * mp) } message->body = (char *) realloc (message->body, - ((1 + s + message->bbytes) * sizeof (char))); + ((1 + s + message->bbytes) * sizeof (char))); strcpy (message->body + message->bbytes, buffer); message->bbytes += s; } @@ -346,7 +347,7 @@ tmpfile_name (const char *path) { char *fname, *tmpdir; - if (path == NULL) /* no path prefix given, use /tmp or TMPDIR */ + if (path == NULL) /* no path prefix given, use /tmp or TMPDIR */ { tmpdir = getenv ("TMPDIR"); if (tmpdir == NULL) @@ -361,13 +362,13 @@ tmpfile_name (const char *path) config.tmpfilename = (char *) xmalloc ((strlen (tmpdir) + (strlen (fname) + 1)) - * sizeof (char)); + * sizeof (char)); sprintf (config.tmpfilename, "%s%s", tmpdir, fname); } -void -mbox_write_message (message_t *msg, mbox_t *mbox) +void +mbox_write_message (message_t * msg, mbox_t * mbox) { if (config.format == MBOX) fprintf (mbox->fp, "%s\n%s", msg->headers, msg->body); @@ -375,7 +376,7 @@ mbox_write_message (message_t *msg, mbox_t *mbox) else if (config.format == ZMBOX) { gzwrite_loop (mbox->fp, msg->headers); - gzwrite(mbox->fp, "\n", 1); + gzwrite (mbox->fp, "\n", 1); gzwrite_loop (mbox->fp, msg->body); } #endif /* HAVE_LIBZ */ @@ -402,11 +403,14 @@ tmpfile_mod_own (const int fd, const char *path) if (stat (path, &s) != -1) { if (fchown (fd, s.st_uid, s.st_gid) == -1) - if (config.merr) perror (config.tmpfilename); + if (config.merr) + perror (config.tmpfilename); if (fchmod (fd, s.st_mode) == -1) - if (config.merr) perror (config.tmpfilename); + if (config.merr) + perror (config.tmpfilename); } - else if (config.merr) perror (path); + else if (config.merr) + perror (path); } } diff --git a/src/mbox.h b/src/mbox.h index 883f749..098b40a 100644 --- a/src/mbox.h +++ b/src/mbox.h @@ -18,11 +18,11 @@ */ #ifndef MBOX_H -#define MBOX_H 1 +# define MBOX_H 1 -#include +# include -#include "message.h" +# include "message.h" typedef struct { @@ -39,6 +39,6 @@ void tmpfile_mod_own (const int fd, const char *path); int tmpfile_create (void); void mbox_close (mbox_t * mbp); message_t *mbox_read_message (mbox_t * mp); -void mbox_write_message (message_t *m, mbox_t *mbox); +void mbox_write_message (message_t * m, mbox_t * mbox); #endif /* MBOX_H */ diff --git a/src/message.h b/src/message.h index 19ab5c9..c18cb7f 100644 --- a/src/message.h +++ b/src/message.h @@ -18,14 +18,14 @@ */ #ifndef MESSAGE_H -#define MESSAGE_H 1 +# define MESSAGE_H 1 -#include +# include typedef struct { - char *filename; /* used with directory formats, such as maildir or MH */ - char *msgid; + char *filename; /* used with directory formats, such as maildir or MH */ + char *msgid; char *from; char *headers; int hbytes; diff --git a/src/mh.c b/src/mh.c index abf4bb2..684d175 100644 --- a/src/mh.c +++ b/src/mh.c @@ -22,20 +22,23 @@ #include #ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) #else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ #endif /* HAVE_DIRENT_H */ #include @@ -49,12 +52,13 @@ #include "wrap.h" #ifdef HAVE_LIBDMALLOC -# include +# include #endif /* HAVE_LIBDMALLOC */ extern option_t config; -DIR *mh_open (const char *path) +DIR * +mh_open (const char *path) { DIR *dp; @@ -62,22 +66,24 @@ DIR *mh_open (const char *path) if (dp == NULL) { if (config.merr) - { - fprintf (stderr, "%s: %s: ", APPNAME, path); - perror (NULL); - } + { + fprintf (stderr, "%s: %s: ", APPNAME, path); + perror (NULL); + } errno = 0; return NULL; } return dp; -} /* mh_open */ +} /* mh_open */ -void mh_close (DIR *dp) +void +mh_close (DIR * dp) { closedir (dp); -} /* mh_close */ +} /* mh_close */ -message_t *mh_read_message (DIR *dp) +message_t * +mh_read_message (DIR * dp) { int isheaders = 1; int have_from = 0, have_date = 0, have_sender = 0; @@ -91,16 +97,17 @@ message_t *mh_read_message (DIR *dp) filename = NULL; - for(;;) + for (;;) { - d_content = readdir(dp); - if (d_content == NULL) return NULL; + d_content = readdir (dp); + if (d_content == NULL) + return NULL; if (d_content->d_name[0] == '.') - continue; + continue; - filename = (char *) xrealloc - (filename, ((strlen (d_content->d_name)) + - (strlen (config.boxname)) + 2)); + filename = (char *) xrealloc + (filename, ((strlen (d_content->d_name)) + + (strlen (config.boxname)) + 2)); /* message->headers = (char *) xrealloc (message->headers, 0); */ /* message->hbytes = 0; */ @@ -112,13 +119,13 @@ message_t *mh_read_message (DIR *dp) fp = m_fopen (filename, "r"); isheaders = 1; if (fp == NULL) - { - free (message->headers); - free (message->body); - message->hbytes = 0; - message->bbytes = 0; - continue; - } + { + free (message->headers); + free (message->body); + message->hbytes = 0; + message->bbytes = 0; + continue; + } fgets (buffer, BUFSIZ, fp); @@ -137,76 +144,80 @@ message_t *mh_read_message (DIR *dp) /* continue; */ /* } */ /* } */ - + fseek (fp, 0, SEEK_SET); while (fgets (buffer, BUFSIZ, fp) != NULL) - { - s = strlen (buffer); - if (0 == strncmp ("\n", buffer, 1) && isheaders == 1) - { - isheaders = 0; - continue; - } /* if */ - if (isheaders) - { - if (0 == strncasecmp ("From: ", buffer, 6)) - have_from = 1; - if (0 == strncasecmp ("Sender: ", buffer, 8)) - have_sender = 1; - if (0 == strncasecmp ("Date: ", buffer, 6)) - have_date = 1; - if (0 == strncasecmp ("Return-Path: ", buffer, 13)) - message->from = parse_return_path (buffer); + { + s = strlen (buffer); + if (0 == strncmp ("\n", buffer, 1) && isheaders == 1) + { + isheaders = 0; + continue; + } /* if */ + if (isheaders) + { + if (0 == strncasecmp ("From: ", buffer, 6)) + have_from = 1; + if (0 == strncasecmp ("Sender: ", buffer, 8)) + have_sender = 1; + if (0 == strncasecmp ("Date: ", buffer, 6)) + have_date = 1; + if (0 == strncasecmp ("Return-Path: ", buffer, 13)) + message->from = parse_return_path (buffer); - message->headers = - (char *) realloc (message->headers, - ((1 + s + message->hbytes) * sizeof (char))); - strcpy (message->headers + message->hbytes, buffer); - message->hbytes += s; - } /* if */ - else - { - message->body = - (char *) realloc (message->body, - ((1 + s + message->bbytes) * sizeof (char))); - strcpy (message->body + message->bbytes, buffer); - message->bbytes += s; - } /* else */ - } /* while */ + message->headers = + (char *) realloc (message->headers, + ((1 + s + + message->hbytes) * sizeof (char))); + strcpy (message->headers + message->hbytes, buffer); + message->hbytes += s; + } /* if */ + else + { + message->body = + (char *) realloc (message->body, + ((1 + s + + message->bbytes) * sizeof (char))); + strcpy (message->body + message->bbytes, buffer); + message->bbytes += s; + } /* else */ + } /* while */ - if ((!have_from && !have_sender)|| !have_date) - { - if (config.merr) - fprintf (stderr, "%s: %s: Not a RFC 2822 message\n", - APPNAME, filename); - fclose (fp); - free (message->headers); - message->headers = NULL; - free (message->body); - message->body = NULL; - message->hbytes = 0; - message->bbytes = 0; - continue; - } + if ((!have_from && !have_sender) || !have_date) + { + if (config.merr) + fprintf (stderr, "%s: %s: Not a RFC 2822 message\n", + APPNAME, filename); + fclose (fp); + free (message->headers); + message->headers = NULL; + free (message->body); + message->body = NULL; + message->hbytes = 0; + message->bbytes = 0; + continue; + } else - { - message->filename = (char *) xstrdup (filename); - fclose (fp); - free (filename); + { + message->filename = (char *) xstrdup (filename); + fclose (fp); + free (filename); - return message; - } - } /* for */ -} /* mh_read_message */ + return message; + } + } /* for */ +} /* mh_read_message */ -void mh_write_message (message_t *m, const char *path) +void +mh_write_message (message_t * m, const char *path) { struct dirent *dc; int x, y = 0; char s1[BUFSIZ]; - DIR *d; FILE *f; + DIR *d; + FILE *f; d = m_opendir (path); rewinddir (d); @@ -215,11 +226,11 @@ void mh_write_message (message_t *m, const char *path) { x = strtol (dc->d_name, NULL, 10); if (x > y) - y = x; + y = x; } y++; sprintf (s1, "%s/%i", path, y); - + f = m_fopen (s1, "w"); fprintf (f, "%s\n%s", m->headers, m->body); fclose (f); diff --git a/src/mh.h b/src/mh.h index 22a41fe..7269763 100644 --- a/src/mh.h +++ b/src/mh.h @@ -18,29 +18,33 @@ */ #ifndef MH_H -#define MH_H 1 +# define MH_H 1 -#include +# include -#ifdef HAVE_DIRENT_H -# include -#else -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ -#endif /* HAVE_DIRENT_H */ +# ifdef HAVE_DIRENT_H +# include +# else +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ +# endif + /* HAVE_DIRENT_H */ -#include "mboxgrep.h" +# include "mboxgrep.h" DIR *mh_open (const char *path); -void mh_close (DIR *dp); -message_t *mh_read_message (DIR *dp); -void mh_write_message (message_t *m, const char *path); +void mh_close (DIR * dp); +message_t *mh_read_message (DIR * dp); +void mh_write_message (message_t * m, const char *path); #endif /* MH_H */ diff --git a/src/misc.c b/src/misc.c index 9c7154f..f08d34a 100644 --- a/src/misc.c +++ b/src/misc.c @@ -17,9 +17,9 @@ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#define _XOPEN_SOURCE /* Pull in strptime(3) from time.h */ -#define _BSD_SOURCE /* Compensate for _XOPEN_SOURCE to pull in strdup(3) - * from string.h. */ +#define _XOPEN_SOURCE /* Pull in strptime(3) from time.h */ +#define _BSD_SOURCE /* Compensate for _XOPEN_SOURCE to pull in strdup(3) + * from string.h. */ #include @@ -68,7 +68,8 @@ folder_format (const char *name) return f; } -lockmethod_t lock_method (const char *name) +lockmethod_t +lock_method (const char *name) { lockmethod_t l; @@ -87,7 +88,7 @@ lockmethod_t lock_method (const char *name) else { if (config.merr) - fprintf (stderr, "mboxgrep: %s: unknown file locking method\n", name); + fprintf (stderr, "mboxgrep: %s: unknown file locking method\n", name); exit (2); } @@ -122,17 +123,19 @@ time_t parse_date(char *datestr) } */ -char * parse_return_path(char *rpath) +char * +parse_return_path (char *rpath) { char *blah1, blah2[BUFSIZ]; - sscanf(rpath, "Return-Path: <%[^\r\n>]>", blah2); + sscanf (rpath, "Return-Path: <%[^\r\n>]>", blah2); blah1 = xstrdup (blah2); return blah1; } -void * allocate_message (void) +void * +allocate_message (void) { message_t *message; @@ -151,7 +154,8 @@ void * allocate_message (void) return message; } -void postmark_print (message_t *msg) +void +postmark_print (message_t * msg) { time_t tt; struct tm *ct; @@ -178,9 +182,9 @@ set_default_options (void) config.dedup = 0; config.recursive = 0; config.ignorecase = 0; - config.format = MBOX; /* default mailbox format */ - config.lock = FCNTL; /* default file locking method */ - config.merr = 1; /* report errors by default */ + config.format = MBOX; /* default mailbox format */ + config.lock = FCNTL; /* default file locking method */ + config.merr = 1; /* report errors by default */ config.debug = 0; } @@ -191,108 +195,108 @@ get_runtime_options (int *argc, char **argv, struct option *long_options) while (1) { - c = getopt_long (*argc, argv, "BcdEe:GHhil:m:n:o:Pp:rsVv", long_options, - &option_index); + c = getopt_long (*argc, argv, "BcdEe:GHhil:m:n:o:Pp:rsVv", long_options, + &option_index); if (c == -1) break; switch (c) { - case '?': - usage(); - case 'c': - config.action = COUNT; - break; - case 'd': - config.action = DELETE; - break; - case 'e': - config.regex_s = xstrdup (optarg); - config.haveregex = 1; - break; - case 'o': - config.outboxname = xstrdup (optarg); - config.action = WRITE; - break; - case 'E': - config.extended = 1; - break; - case 'G': - config.extended = 0; - break; - case 'P': + case '?': + usage (); + case 'c': + config.action = COUNT; + break; + case 'd': + config.action = DELETE; + break; + case 'e': + config.regex_s = xstrdup (optarg); + config.haveregex = 1; + break; + case 'o': + config.outboxname = xstrdup (optarg); + config.action = WRITE; + break; + case 'E': + config.extended = 1; + break; + case 'G': + config.extended = 0; + break; + case 'P': #ifdef HAVE_LIBPCRE - config.extended = 0; - config.perl = 1; + config.extended = 0; + config.perl = 1; #else - fprintf(stderr, - "%s: Support for Perl regular expressions not " - "compiled in\n", APPNAME); - exit(2); + fprintf (stderr, + "%s: Support for Perl regular expressions not " + "compiled in\n", APPNAME); + exit (2); #endif /* HAVE_LIBPCRE */ - break; - case 'h': - help (); - break; - case 'i': - config.ignorecase = 1; - break; - case 'm': - config.format = folder_format (optarg); - break; - case 'l': - config.lock = lock_method (optarg); - break; - case 'p': - config.action = PIPE; - config.pipecmd = xstrdup (optarg); - break; - case 'V': - version (); - break; - case 'v': - config.invert = 1; - break; - case 'H': - config.headers = 1; - break; - case 'B': - config.body = 1; - break; - case 's': - config.merr = 0; - break; - case 201: - config.lock = 0; - break; - case 202: - config.debug = 1; - fprintf (stderr, "%s: %s, line %d: enable debugging\n", - APPNAME, __FILE__, __LINE__); - break; - case 'r': - config.recursive = 1; - break; - case 200: - config.dedup = 1; - break; - case 'n': - { - switch (optarg[0]) - { - case 'd': - config.dedup = 1; - break; - case 'l': - config.lock = 0; - break; - default: - fprintf(stderr, "%s: invalid option -- n%c\n", - APPNAME, optarg[0]); - exit(2); - } - } - } /* switch */ - } /* while */ + break; + case 'h': + help (); + break; + case 'i': + config.ignorecase = 1; + break; + case 'm': + config.format = folder_format (optarg); + break; + case 'l': + config.lock = lock_method (optarg); + break; + case 'p': + config.action = PIPE; + config.pipecmd = xstrdup (optarg); + break; + case 'V': + version (); + break; + case 'v': + config.invert = 1; + break; + case 'H': + config.headers = 1; + break; + case 'B': + config.body = 1; + break; + case 's': + config.merr = 0; + break; + case 201: + config.lock = 0; + break; + case 202: + config.debug = 1; + fprintf (stderr, "%s: %s, line %d: enable debugging\n", + APPNAME, __FILE__, __LINE__); + break; + case 'r': + config.recursive = 1; + break; + case 200: + config.dedup = 1; + break; + case 'n': + { + switch (optarg[0]) + { + case 'd': + config.dedup = 1; + break; + case 'l': + config.lock = 0; + break; + default: + fprintf (stderr, "%s: invalid option -- n%c\n", + APPNAME, optarg[0]); + exit (2); + } + } + } /* switch */ + } /* while */ } diff --git a/src/misc.h b/src/misc.h index 209bdca..4e91970 100644 --- a/src/misc.h +++ b/src/misc.h @@ -18,20 +18,21 @@ */ #ifndef MISC_H -#define MISC_H 1 +# define MISC_H 1 -#include "mboxgrep.h" -#include "getopt.h" -#include "message.h" +# include "mboxgrep.h" +# include "getopt.h" +# include "message.h" /* #include */ format_t folder_format (const char *name); lockmethod_t lock_method (const char *name); /* time_t parse_date(char *datestr); */ -char * parse_return_path(char *rpath); -void * allocate_message (void); -void postmark_print (message_t *msg); +char *parse_return_path (char *rpath); +void *allocate_message (void); +void postmark_print (message_t * msg); void set_default_options (void); -void get_runtime_options (int *argc, char **argv, struct option *long_options); +void get_runtime_options (int *argc, char **argv, + struct option *long_options); #endif /* MISC_H */ diff --git a/src/re.c b/src/re.c index 2d6e95a..54d03db 100644 --- a/src/re.c +++ b/src/re.c @@ -22,11 +22,11 @@ #include #include #ifdef HAVE_LIBPCRE -#include +# include #endif /* HAVE_LIBPCRE */ #include "mboxgrep.h" #include "message.h" -#include "wrap.h" /* xcalloc() et cetera */ +#include "wrap.h" /* xcalloc() et cetera */ #ifdef HAVE_LIBPCRE void @@ -36,35 +36,32 @@ pcre_init (void) const char *error; config.pcre_pattern = - (pcre *) pcre_compile (config.regex_s, - (config.ignorecase ? PCRE_CASELESS : 0), - &error, &errptr, NULL); + (pcre *) pcre_compile (config.regex_s, + (config.ignorecase ? PCRE_CASELESS : 0), + &error, &errptr, NULL); if (config.pcre_pattern == NULL) { if (config.merr) - fprintf (stderr, "%s: %s: %s\n", APPNAME, config.regex_s, - error); - exit(2); + fprintf (stderr, "%s: %s: %s\n", APPNAME, config.regex_s, error); + exit (2); } } void -pcre_match (message_t *msg) +pcre_match (message_t * msg) { int of[BUFSIZ]; if (config.headers) config.res1 = pcre_exec ((pcre *) config.pcre_pattern, - (pcre_extra *) config.pcre_hints, - msg->headers, - (int) strlen (msg->headers), 0, 0, of, BUFSIZ); + (pcre_extra *) config.pcre_hints, + msg->headers, (int) strlen (msg->headers), 0, 0, of, BUFSIZ); if (config.body) config.res2 = pcre_exec ((pcre *) config.pcre_pattern, - (pcre_extra *) config.pcre_hints, - msg->body, - (int) strlen (msg->body), 0, 0, of, BUFSIZ); + (pcre_extra *) config.pcre_hints, + msg->body, (int) strlen (msg->body), 0, 0, of, BUFSIZ); config.res1 = config.res1 ^ 1; config.res2 = config.res2 ^ 1; @@ -77,20 +74,21 @@ regex_init (void) int flag1 = 0, flag2 = 0; int errcode = 0; char errbuf[BUFSIZ]; - + if (config.ignorecase) flag1 = REG_ICASE; if (config.extended) flag2 = REG_EXTENDED; config.posix_pattern = (regex_t *) xmalloc (sizeof (regex_t)); - errcode = regcomp ((regex_t *) config.posix_pattern, config.regex_s, - (flag1 | flag2 | REG_NEWLINE )); + errcode = regcomp ((regex_t *) config.posix_pattern, config.regex_s, + (flag1 | flag2 | REG_NEWLINE)); if (0 != errcode) { if (config.merr) { - regerror (errcode, (regex_t *) config.posix_pattern, errbuf, BUFSIZ); + regerror (errcode, (regex_t *) config.posix_pattern, errbuf, + BUFSIZ); fprintf (stderr, "%s: %s: %s\n", APPNAME, config.regex_s, errbuf); } exit (2); @@ -98,12 +96,12 @@ regex_init (void) } void -regex_match (message_t *msg) +regex_match (message_t * msg) { if (config.headers) config.res1 = regexec ((regex_t *) config.posix_pattern, - msg->headers, 0, NULL, 0); + msg->headers, 0, NULL, 0); if (config.body) config.res2 = regexec ((regex_t *) config.posix_pattern, - msg->body, 0, NULL, 0); + msg->body, 0, NULL, 0); } diff --git a/src/re.h b/src/re.h index f8a86d3..65af223 100644 --- a/src/re.h +++ b/src/re.h @@ -21,7 +21,7 @@ #ifdef HAVE_LIBPCRE void pcre_init (void); -void pcre_match (message_t *msg); +void pcre_match (message_t * msg); #endif /* HAVE_LIBPCRE */ void regex_init (void); -void regex_match (message_t *msg); +void regex_match (message_t * msg); diff --git a/src/scan.c b/src/scan.c index 0a66978..bdfe6ba 100644 --- a/src/scan.c +++ b/src/scan.c @@ -1,6 +1,6 @@ -/* -*- C -*- +/* mboxgrep - scan mailbox for messages matching a regular expression - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 Daniel Spiljar + Copyright (C) 2000 - 2004, 2006, 2023 Daniel Spiljar Mboxgrep is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License along with mboxgrep; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - $Id: scan.c,v 1.32 2006-10-22 23:34:49 dspiljar Exp $ */ + */ #include @@ -26,20 +25,23 @@ #include #ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) #else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ #endif /* HAVE_DIRENT_H */ #include @@ -57,20 +59,21 @@ #include "misc.h" #include "re.h" #ifdef HAVE_FTS_OPEN -# include -# include +# include +# include #else -# ifdef HAVE_FTW -# include -# endif /* HAVE_FTW */ +# ifdef HAVE_FTW +# include +# endif + /* HAVE_FTW */ #endif /* HAVE_FTS_OPEN */ #ifdef HAVE_LIBDMALLOC -#include +# include #endif /* HAVE_LIBDMALLOC */ -void scan_mailbox (char path[]) - /* {{{ */ +void +scan_mailbox (char path[]) { static FILE *outf; static mbox_t *mbox, *out; @@ -82,40 +85,45 @@ void scan_mailbox (char path[]) if (config.format == MAILDIR && config.action == WRITE) { - foo = opendir (config.outboxname); /* do NOT change this to m_opendir! */ + foo = opendir (config.outboxname); /* do NOT change this to m_opendir! */ if (foo == NULL && errno == ENOENT) - maildir_create (config.outboxname); - else closedir (foo); + maildir_create (config.outboxname); + else + closedir (foo); if (-1 == maildir_check (config.outboxname)) - { - if (config.merr) - fprintf (stderr, "%s: %s: Not a maildir folder\n", APPNAME, - config.outboxname); - exit (2); - } + { + if (config.merr) + fprintf (stderr, "%s: %s: Not a maildir folder\n", APPNAME, + config.outboxname); + exit (2); + } } runtime.count = 0; if (config.action == DELETE) delete = 1; - if ((config.format == MBOX) || (config.format == ZMBOX) || - (config.format == BZ2MBOX)) + if ((config.format == MBOX) || (config.format == ZMBOX) + || (config.format == BZ2MBOX)) { mbox = (mbox_t *) mbox_open (path, "r"); - if (mbox == NULL) return; + if (mbox == NULL) + return; } - else if ((config.format == MH) || (config.format == NNMH) || - (config.format == NNML)) + else if ((config.format == MH) || (config.format == NNMH) + || (config.format == NNML)) { boxd = mh_open (path); - if (boxd == NULL) return; + if (boxd == NULL) + return; } else if (config.format == MAILDIR) { maildird = maildir_open (path); - if (maildird == NULL) return; + + if (maildird == NULL) + return; } for (;;) @@ -123,102 +131,105 @@ void scan_mailbox (char path[]) config.res1 = 1; config.res2 = 1; - if ((config.format == MBOX) || (config.format == ZMBOX) || - (config.format == BZ2MBOX)) - msg = (message_t *) mbox_read_message (mbox); - else if ((config.format == MH) || (config.format == NNMH) || - (config.format == NNML)) - msg = (message_t *) mh_read_message (boxd); + if ((config.format == MBOX) || (config.format == ZMBOX) + || (config.format == BZ2MBOX)) + msg = (message_t *) mbox_read_message (mbox); + else if ((config.format == MH) || (config.format == NNMH) + || (config.format == NNML)) + msg = (message_t *) mh_read_message (boxd); else if (config.format == MAILDIR) - msg = (message_t *) maildir_read_message (maildird); + msg = (message_t *) maildir_read_message (maildird); - if (msg == NULL) break; + if (msg == NULL) + break; - if (msg->from == NULL) msg->from = (char *) xstrdup ("nobody"); + if (msg->from == NULL) + msg->from = (char *) xstrdup ("nobody"); #ifdef HAVE_LIBPCRE if (config.perl) - pcre_match (msg); + pcre_match (msg); else #endif /* HAVE_LIBPCRE */ - regex_match (msg); + regex_match (msg); if (config.dedup) - isdup = md5_check_message (msg->body, runtime.cs); + isdup = md5_check_message (msg->body, runtime.cs); if (((config.res1 == 0) | (config.res2 == 0)) ^ - ((config.invert ^ delete)) && - ((config.dedup && !isdup) || !config.dedup)) - { - if (config.action == DISPLAY) - { - if (config.format != MBOX && config.format != ZMBOX - && config.format != BZ2MBOX - && 0 != strncmp ("From ", msg->headers, 5)) - postmark_print (msg); - fprintf (stdout, "%s\n%s", msg->headers, msg->body); - } - else if (config.action == WRITE) - { - if (config.format == MAILDIR) - maildir_write_message (msg, config.outboxname); - else if (config.format == MH || config.format == NNMH || - config.format == NNML) - mh_write_message (msg, config.outboxname); - else if ((config.format == MBOX) || (config.format == ZMBOX) || - (config.format == BZ2MBOX)) - { - out = mbox_open (config.outboxname, "w"); - /* fprintf (out->fp, "%s\n%s", msg->headers, msg->body); */ - mbox_write_message (msg, out); - mbox_close (out); - } - } - else if (config.action == PIPE) - { - outf = popen (config.pipecmd, "w"); - if (outf == NULL) - { - if (config.merr) - { - fprintf (stderr, "%s: %s: ", APPNAME, config.pipecmd); - perror (NULL); - } - exit (2); - } /* if */ - fprintf (outf, "%s\n%s", msg->headers, msg->body); - pclose (outf); - } - else if (config.action == COUNT) - runtime.count++; - else if (config.action == DELETE && - ((config.format == MBOX) || (config.format == ZMBOX) || - (config.format == BZ2MBOX))) - mbox_write_message (msg, runtime.tmp_mbox); - } + ((config.invert ^ delete)) && + ((config.dedup && !isdup) || !config.dedup)) + { + if (config.action == DISPLAY) + { + if (config.format != MBOX && config.format != ZMBOX + && config.format != BZ2MBOX + && 0 != strncmp ("From ", msg->headers, 5)) + postmark_print (msg); - else if (((((config.res1 == 0) | (config.res2 == 0)) ^ - config.invert) && delete) && - ((config.format == MH) || (config.format == NNMH) || - (config.format == NNML) || (config.format == MAILDIR))) - m_unlink(msg->filename); + fprintf (stdout, "%s\n%s", msg->headers, msg->body); + } + else if (config.action == WRITE) + { + if (config.format == MAILDIR) + maildir_write_message (msg, config.outboxname); + else if (config.format == MH || config.format == NNMH + || config.format == NNML) + mh_write_message (msg, config.outboxname); + else if ((config.format == MBOX) || (config.format == ZMBOX) + || (config.format == BZ2MBOX)) + { + out = mbox_open (config.outboxname, "w"); + /* fprintf (out->fp, "%s\n%s", msg->headers, msg->body); */ + mbox_write_message (msg, out); + mbox_close (out); + } + } + else if (config.action == PIPE) + { + outf = popen (config.pipecmd, "w"); + if (outf == NULL) + { + if (config.merr) + { + fprintf (stderr, "%s: %s: ", APPNAME, config.pipecmd); + perror (NULL); + } + exit (2); + } /* if */ + fprintf (outf, "%s\n%s", msg->headers, msg->body); + pclose (outf); + } + else if (config.action == COUNT) + runtime.count++; + else if (config.action == DELETE && + ((config.format == MBOX) || (config.format == ZMBOX) + || (config.format == BZ2MBOX))) + mbox_write_message (msg, runtime.tmp_mbox); + } - free(msg->body); - free(msg->headers); - free(msg); - } /* for */ - if ((config.format == MBOX) || (config.format == ZMBOX) || - (config.format == BZ2MBOX)) + else + if (((((config.res1 == 0) | (config.res2 == 0)) ^ config.invert) + && delete) && ((config.format == MH) || (config.format == NNMH) + || (config.format == NNML) + || (config.format == MAILDIR))) + m_unlink (msg->filename); + + free (msg->body); + free (msg->headers); + free (msg); + } /* for */ + + if ((config.format == MBOX) || (config.format == ZMBOX) + || (config.format == BZ2MBOX)) mbox_close (mbox); - else if ((config.format == MH) || (config.format == NNMH) || - (config.format == NNML)) - mh_close(boxd); + else if ((config.format == MH) || (config.format == NNMH) + || (config.format == NNML)) + mh_close (boxd); } -/* }}} */ - -void recursive_scan (char path[]) - /* {{{ */ +void +recursive_scan (char path[]) { #ifdef HAVE_FTS_OPEN FTS *ftsfoo; @@ -236,9 +247,9 @@ void recursive_scan (char path[]) if (ftsfoo == NULL) { - /* fixme (?) */ - perror(APPNAME); - exit (2); + /* fixme (?) */ + perror (APPNAME); + exit (2); } while ((ftsbar = fts_read (ftsfoo))) @@ -251,34 +262,34 @@ void recursive_scan (char path[]) #endif /* HAVE_FTS_OPEN */ } -/* }}} */ - -int md5_check_message (char *body, checksum_t *chksum) - /* {{{ */ +int +md5_check_message (char *body, checksum_t * chksum) { struct md5_ctx a; char b[16]; int i; md5_init_ctx (&a); + if (body == NULL) md5_process_bytes ("", 0, &a); else - md5_process_bytes (body, strlen(body), &a); - md5_finish_ctx(&a, b); + md5_process_bytes (body, strlen (body), &a); + + md5_finish_ctx (&a, b); for (i = 0; i < chksum->n; i++) { - if (0 == strncmp ((char *)chksum->md5[i], b, 16)) - return 1; + if (0 == strncmp ((char *) chksum->md5[i], b, 16)) + return 1; } - chksum->md5 = - (char **) xrealloc (chksum->md5, (1 + chksum->n) * sizeof (char *)); + chksum->md5 = + (char **) xrealloc (chksum->md5, (1 + chksum->n) * sizeof (char *)); + chksum->md5[chksum->n] = xstrdup (b); (chksum->n)++; return 0; } -/* }}} */ diff --git a/src/scan.h b/src/scan.h index 7a4ff8e..a348166 100644 --- a/src/scan.h +++ b/src/scan.h @@ -18,12 +18,12 @@ */ #ifndef SCAN_H -#define SCAN_H 1 +# define SCAN_H 1 -#include "mboxgrep.h" +# include "mboxgrep.h" void scan_mailbox (char path[]); void recursive_scan (char path[]); -int md5_check_message (char *body, checksum_t *chksum); +int md5_check_message (char *body, checksum_t * chksum); #endif /* SCAN_H */ diff --git a/src/wrap.c b/src/wrap.c index a5ec960..4611d3d 100644 --- a/src/wrap.c +++ b/src/wrap.c @@ -24,26 +24,29 @@ #include #ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) #else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ #endif /* HAVE_DIRENT_H */ #ifdef HAVE_LIBZ -#include +# include #endif /* HAVE_LIBZ */ #ifdef HAVE_LIBBZ2 -#include +# include #endif /* HAVE_LIBBZ2 */ #include @@ -54,12 +57,13 @@ #include "mboxgrep.h" #ifndef APPNAME -#define APPNAME "mboxgrep" +# define APPNAME "mboxgrep" #endif #define BUFLEN 16384 -int m_open (const char *pathname, int flags, mode_t mode) +int +m_open (const char *pathname, int flags, mode_t mode) { int blah; @@ -76,9 +80,10 @@ int m_open (const char *pathname, int flags, mode_t mode) exit (2); } return blah; -} +} -FILE *m_fopen (const char *path, const char *mode) +FILE * +m_fopen (const char *path, const char *mode) { FILE *blah; @@ -96,7 +101,8 @@ FILE *m_fopen (const char *path, const char *mode) return blah; } -FILE *m_fdopen (int fildes, const char *mode) +FILE * +m_fdopen (int fildes, const char *mode) { FILE *blah; @@ -111,7 +117,8 @@ FILE *m_fdopen (int fildes, const char *mode) #ifdef HAVE_LIBZ -gzFile m_gzdopen (int fildes, const char *mode) +gzFile +m_gzdopen (int fildes, const char *mode) { gzFile blah; @@ -126,7 +133,8 @@ gzFile m_gzdopen (int fildes, const char *mode) #endif /* HAVE_LIBZ */ -DIR *m_opendir (const char *name) +DIR * +m_opendir (const char *name) { DIR *blah; @@ -144,7 +152,8 @@ DIR *m_opendir (const char *name) #ifndef HAVE_LIBDMALLOC -void *xmalloc (size_t size) +void * +xmalloc (size_t size) { void *foo; @@ -158,7 +167,8 @@ void *xmalloc (size_t size) return foo; } -void *xrealloc (void *ptr, size_t size) +void * +xrealloc (void *ptr, size_t size) { void *foo; @@ -172,7 +182,8 @@ void *xrealloc (void *ptr, size_t size) return foo; } -void *xcalloc (size_t nmemb, size_t size) +void * +xcalloc (size_t nmemb, size_t size) { void *foo; @@ -186,7 +197,8 @@ void *xcalloc (size_t nmemb, size_t size) return foo; } -char *xstrdup (const char *s) +char * +xstrdup (const char *s) { char *foo; @@ -202,7 +214,8 @@ char *xstrdup (const char *s) #endif /* HAVE_LIBDMALLOC */ -int m_unlink (const char *pathname) +int +m_unlink (const char *pathname) { int baz; @@ -220,7 +233,8 @@ int m_unlink (const char *pathname) #ifdef HAVE_LIBZ -void gzwrite_loop (void *fp, char *str) +void +gzwrite_loop (void *fp, char *str) { int quux, len, baz; @@ -228,8 +242,8 @@ void gzwrite_loop (void *fp, char *str) baz = strlen (str); for (;;) { - len = gzwrite (fp, (str+quux), - (((quux + BUFLEN) < baz) ? BUFLEN : (baz - quux))); + len = gzwrite (fp, (str + quux), + (((quux + BUFLEN) < baz) ? BUFLEN : (baz - quux))); quux += len; if (quux == baz) break; @@ -240,7 +254,8 @@ void gzwrite_loop (void *fp, char *str) #ifdef HAVE_LIBBZ2 -void bzwrite_loop (void *fp, char *str) +void +bzwrite_loop (void *fp, char *str) { int quux, len, baz; @@ -248,8 +263,8 @@ void bzwrite_loop (void *fp, char *str) baz = strlen (str); for (;;) { - len = BZ2_bzwrite (fp, (str+quux), - (((quux + BUFLEN) < baz) ? BUFLEN : (baz - quux))); + len = BZ2_bzwrite (fp, (str + quux), + (((quux + BUFLEN) < baz) ? BUFLEN : (baz - quux))); quux += len; if (quux == baz) break; diff --git a/src/wrap.h b/src/wrap.h index 4fd64d5..6f678cb 100644 --- a/src/wrap.h +++ b/src/wrap.h @@ -22,55 +22,64 @@ /* wrappers around certain std functions */ #ifndef WRAP_H -#define WRAP_H +# define WRAP_H -#include -#include -#include +# include +# include +# include -#ifdef HAVE_DIRENT_H -# include -#else -# ifdef HAVE_SYS_NDIR_H -# include -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# endif /* HAVE_NDIR_H */ -#endif /* HAVE_DIRENT_H */ -#ifdef HAVE_LIBZ -#include -#endif /* HAVE_LIBZ */ +# ifdef HAVE_DIRENT_H +# include +# else +# ifdef HAVE_SYS_NDIR_H +# include +# endif + /* HAVE_SYS_NDIR_H */ +# ifdef HAVE_SYS_DIR_H +# include +# endif + /* HAVE_SYS_DIR_H */ +# ifdef HAVE_NDIR_H +# include +# endif + /* HAVE_NDIR_H */ +# endif + /* HAVE_DIRENT_H */ +# ifdef HAVE_LIBZ +# include +# endif + /* HAVE_LIBZ */ -#include +# include -#ifdef HAVE_LIBDMALLOC -# include -#endif /* HAVE_LIBDMALLOC */ +# ifdef HAVE_LIBDMALLOC +# include +# endif + /* HAVE_LIBDMALLOC */ int m_open (const char *pathname, int flags, mode_t mode); FILE *m_fopen (const char *path, const char *mode); FILE *m_fdopen (int fildes, const char *mode); -#ifdef HAVE_LIBZ +# ifdef HAVE_LIBZ gzFile m_gzdopen (int fildes, const char *mode); void gzwrite_loop (void *fp, char *str); -#endif /* HAVE_LIBZ */ -#ifdef HAVE_LIBBZ2 +# endif + /* HAVE_LIBZ */ +# ifdef HAVE_LIBBZ2 void bzwrite_loop (void *fp, char *str); -#endif /* HAVE_LIBBZ2 */ +# endif + /* HAVE_LIBBZ2 */ DIR *m_opendir (const char *name); -#ifndef HAVE_LIBDMALLOC +# ifndef HAVE_LIBDMALLOC void *xmalloc (size_t size); void *xrealloc (void *ptr, size_t size); void *xcalloc (size_t nmemb, size_t size); char *xstrdup (const char *s); -#endif /* HAVE_LIBDMALLOC */ +# endif + /* HAVE_LIBDMALLOC */ int m_unlink (const char *pathname);