aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/backup.c251
-rw-r--r--src/builtin.c337
-rw-r--r--src/builtin.h14
-rw-r--r--src/cmdline.opt93
-rw-r--r--src/config.c2398
-rw-r--r--src/dictionary.c305
-rw-r--r--src/directive.c1152
-rw-r--r--src/diskio.c1155
-rw-r--r--src/exec.c253
-rw-r--r--src/gpg.c527
-rw-r--r--src/interval.c161
-rw-r--r--src/job.c572
-rw-r--r--src/lock.c434
-rw-r--r--src/mail.c1069
-rw-r--r--src/mail.h9
-rw-r--r--src/meta.c221
-rw-r--r--src/net.c415
-rw-r--r--src/null.c68
-rw-r--r--src/pidfile.c104
-rw-r--r--src/process.c469
-rw-r--r--src/pushd.c206
-rw-r--r--src/report.c45
-rw-r--r--src/sql.c272
-rw-r--r--src/sql.h55
-rw-r--r--src/tcpwrap.c85
-rw-r--r--src/timer.c309
-rw-r--r--src/triplet.c1270
-rw-r--r--src/txtacc.c228
-rw-r--r--src/userprivs.c160
-rw-r--r--src/verify.c538
-rw-r--r--src/vtab.c97
-rw-r--r--src/watcher.c379
-rw-r--r--src/wydawca.c608
-rw-r--r--src/wydawca.h735
35 files changed, 7197 insertions, 7799 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index e042272..2c8f3c4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,5 @@
# This file is part of Wydawca
-# Copyright (C) 2007, 2009-2011 Sergey Poznyakoff
+# Copyright (C) 2007, 2009-2013 Sergey Poznyakoff
#
# Wydawca is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/src/backup.c b/src/backup.c
index c5c55de..7119ae1 100644
--- a/src/backup.c
+++ b/src/backup.c
@@ -1,5 +1,5 @@
/* wydawca - automatic release submission daemon
- Copyright (C) 2011, 2012 Sergey Poznyakoff
+ Copyright (C) 2011-2013 Sergey Poznyakoff
Wydawca is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -19,147 +19,138 @@
char const *simple_backup_suffix = "~";
static const char *
-split_filename (char const *file, char **pdir)
+split_filename(char const *file, char **pdir)
{
- const char *p = strrchr (file, '/');
-
- if (!p)
- {
- *pdir = grecs_strdup (".");
- p = file;
- }
- else
- {
- size_t len = p - file;
- char *dir = grecs_malloc (len + 1);
- memcpy (dir, file, len);
- dir[len] = 0;
- *pdir = dir;
- p++;
- }
- return p;
+ const char *p = strrchr(file, '/');
+
+ if (!p) {
+ *pdir = grecs_strdup(".");
+ p = file;
+ } else {
+ size_t len = p - file;
+ char *dir = grecs_malloc(len + 1);
+ memcpy(dir, file, len);
+ dir[len] = 0;
+ *pdir = dir;
+ p++;
+ }
+ return p;
}
#define MINSUFSIZE 8
#define ISDIGIT(c) ('0' <= (c) && (c) <= '9')
static char *
-get_backup_suffix (char const *file, enum backup_type type)
+get_backup_suffix(char const *file, enum backup_type type)
{
- char *dirname;
- const char *basename;
- size_t baselen;
- DIR *dir;
- struct dirent *ent;
- char *lastsuf = NULL;
- size_t lastsuflen = 0;
- size_t lastsufsize = 0;
- int carry = 0;
- char *newsuf;
- char *q;
-
- if (type == simple_backups)
- return grecs_strdup (simple_backup_suffix);
-
- basename = split_filename (file, &dirname);
- baselen = strlen (basename);
- dir = opendir (dirname);
- if (!dir)
- {
- int ec = errno;
- free (dirname);
- errno = ec;
- return NULL;
- }
-
- while ((ent = readdir (dir)))
- {
- size_t len = strlen (ent->d_name);
- const char *p;
- size_t suflen;
-
- if (len < baselen + 4 || memcmp (ent->d_name, basename, baselen))
- continue;
- p = ent->d_name + baselen;
- suflen = len - baselen;
- if (p[0] == '.' && p[1] == '~' && p[suflen-1] == '~' &&
- (suflen > lastsuflen
- || (suflen == lastsuflen &&
- memcmp (p, lastsuf, lastsuflen) > 0)))
- {
- carry = 1;
- for (q = (char*) p + suflen - 2; q > p + 1 && ISDIGIT (*q); q--)
- if (*q != '9')
- carry = 0;
- q++;
- if (!ISDIGIT (*q))
- continue;
-
- if (suflen > lastsufsize)
- {
- lastsufsize = suflen;
- if (!lastsuf)
- {
- if (lastsufsize < MINSUFSIZE)
- lastsufsize = MINSUFSIZE;
- lastsuf = grecs_malloc (lastsufsize);
+ char *dirname;
+ const char *basename;
+ size_t baselen;
+ DIR *dir;
+ struct dirent *ent;
+ char *lastsuf = NULL;
+ size_t lastsuflen = 0;
+ size_t lastsufsize = 0;
+ int carry = 0;
+ char *newsuf;
+ char *q;
+
+ if (type == simple_backups)
+ return grecs_strdup(simple_backup_suffix);
+
+ basename = split_filename(file, &dirname);
+ baselen = strlen(basename);
+ dir = opendir(dirname);
+ if (!dir) {
+ int ec = errno;
+ free(dirname);
+ errno = ec;
+ return NULL;
+ }
+
+ while ((ent = readdir(dir))) {
+ size_t len = strlen(ent->d_name);
+ const char *p;
+ size_t suflen;
+
+ if (len < baselen + 4 ||
+ memcmp(ent->d_name, basename, baselen))
+ continue;
+ p = ent->d_name + baselen;
+ suflen = len - baselen;
+ if (p[0] == '.' && p[1] == '~' && p[suflen - 1] == '~' &&
+ (suflen > lastsuflen
+ || (suflen == lastsuflen &&
+ memcmp(p, lastsuf, lastsuflen) > 0))) {
+ carry = 1;
+ for (q = (char *)p + suflen - 2;
+ q > p + 1 && ISDIGIT(*q); q--)
+ if (*q != '9')
+ carry = 0;
+ q++;
+ if (!ISDIGIT(*q))
+ continue;
+
+ if (suflen > lastsufsize) {
+ lastsufsize = suflen;
+ if (!lastsuf) {
+ if (lastsufsize < MINSUFSIZE)
+ lastsufsize = MINSUFSIZE;
+ lastsuf = grecs_malloc(lastsufsize);
+ } else
+ lastsuf = grecs_realloc(lastsuf,
+ lastsufsize);
+ }
+ memcpy(lastsuf, p, suflen);
+ lastsuflen = suflen;
}
- else
- lastsuf = grecs_realloc (lastsuf, lastsufsize);
- }
- memcpy (lastsuf, p, suflen);
- lastsuflen = suflen;
}
- }
- closedir (dir);
- free (dirname);
-
- if (lastsuf)
- {
- size_t newsuflen;
-
- newsuflen = lastsuflen + carry;
- newsuf = grecs_malloc (newsuflen + 1);
- newsuf[0] = '.';
- newsuf[1] = '~';
- newsuf[2] = '0';
- memcpy (newsuf + 2 + carry, lastsuf + 2, lastsuflen - 3);
- newsuf[newsuflen-1] = '~';
- newsuf[newsuflen] = 0;
-
- for (q = newsuf + newsuflen - 2; *q == '9'; q--)
- *q = '0';
- ++*q;
- free (lastsuf);
- }
- else if (type == numbered_existing_backups)
- newsuf = grecs_strdup (simple_backup_suffix);
- else
- newsuf = grecs_strdup (".~1~");
- return newsuf;
+ closedir(dir);
+ free(dirname);
+
+ if (lastsuf) {
+ size_t newsuflen;
+
+ newsuflen = lastsuflen + carry;
+ newsuf = grecs_malloc(newsuflen + 1);
+ newsuf[0] = '.';
+ newsuf[1] = '~';
+ newsuf[2] = '0';
+ memcpy(newsuf + 2 + carry, lastsuf + 2, lastsuflen - 3);
+ newsuf[newsuflen - 1] = '~';
+ newsuf[newsuflen] = 0;
+
+ for (q = newsuf + newsuflen - 2; *q == '9'; q--)
+ *q = '0';
+ ++*q;
+ free(lastsuf);
+ } else if (type == numbered_existing_backups)
+ newsuf = grecs_strdup(simple_backup_suffix);
+ else
+ newsuf = grecs_strdup(".~1~");
+ return newsuf;
}
char *
-find_backup_file_name (char const *file, enum backup_type type)
+find_backup_file_name(char const *file, enum backup_type type)
{
- size_t flen;
- char *suffix;
- char *newname;
-
- if (type == no_backups)
- {
- errno = 0;
- return NULL;
- }
-
- suffix = get_backup_suffix (file, type);
- if (!suffix)
- return NULL;
- flen = strlen (file);
- newname = grecs_malloc (flen + strlen (suffix) + 1);
- memcpy (newname, file, flen);
- strcpy (newname + flen, suffix);
- free (suffix);
- /* FIXME: Check newname length */
- return newname;
+ size_t flen;
+ char *suffix;
+ char *newname;
+
+ if (type == no_backups) {
+ errno = 0;
+ return NULL;
+ }
+
+ suffix = get_backup_suffix(file, type);
+ if (!suffix)
+ return NULL;
+ flen = strlen(file);
+ newname = grecs_malloc(flen + strlen(suffix) + 1);
+ memcpy(newname, file, flen);
+ strcpy(newname + flen, suffix);
+ free(suffix);
+ /* FIXME: Check newname length */
+ return newname;
}
diff --git a/src/builtin.c b/src/builtin.c
index f031897..72b73cd 100644
--- a/src/builtin.c
+++ b/src/builtin.c
@@ -1,5 +1,5 @@
/* wydawca - automatic release submission daemon
- Copyright (C) 2009-2011 Sergey Poznyakoff
+ Copyright (C) 2009-2013 Sergey Poznyakoff
Wydawca is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -22,21 +22,21 @@
#endif
int
-builtin_init (struct dictionary *dict)
+builtin_init(struct dictionary *dict)
{
- return 0;
+ return 0;
}
int
-builtin_done (struct dictionary *dict)
+builtin_done(struct dictionary *dict)
{
- return 0;
+ return 0;
}
void *
-builtin_open (struct dictionary *dict)
+builtin_open(struct dictionary *dict)
{
- return dict;
+ return dict;
}
#define CMP_EXACT 0
@@ -52,216 +52,203 @@ builtin_open (struct dictionary *dict)
typedef int (*strcmp_fn) (const char *, const char *, int flags);
static int
-cmp_exact (const char *pat, const char *str, int flags)
+cmp_exact(const char *pat, const char *str, int flags)
{
- return strcmp (pat, str) == 0;
+ return strcmp(pat, str) == 0;
}
static int
-cmp_exact_ci (const char *pat, const char *str, int flags)
+cmp_exact_ci(const char *pat, const char *str, int flags)
{
- return strcmp (pat, str) == 0;
+ return strcmp(pat, str) == 0;
}
static int
-cmp_fnmatch (const char *pat, const char *str, int flags)
+cmp_fnmatch(const char *pat, const char *str, int flags)
{
- return fnmatch (pat, str, flags) == 0;
+ return fnmatch(pat, str, flags) == 0;
}
static int
-cmp_regex (const char *pat, const char *str, int flags)
+cmp_regex(const char *pat, const char *str, int flags)
{
- int rc;
- regex_t regex;
-
- rc = regcomp (&regex, pat, flags);
- if (rc)
- {
- char errbuf[512];
-
- regerror (rc, &regex, errbuf, sizeof (errbuf));
- logmsg (LOG_ERR, _("%s: cannot compile regexp: %s"), pat, errbuf);
- return 0;
- }
-
- rc = regexec (&regex, str, 0, NULL, 0);
- regfree (&regex);
- return rc == 0;
+ int rc;
+ regex_t regex;
+
+ rc = regcomp(&regex, pat, flags);
+ if (rc) {
+ char errbuf[512];
+
+ regerror(rc, &regex, errbuf, sizeof(errbuf));
+ logmsg(LOG_ERR, _("%s: cannot compile regexp: %s"), pat,
+ errbuf);
+ return 0;
+ }
+
+ rc = regexec(&regex, str, 0, NULL, 0);
+ regfree(&regex);
+ return rc == 0;
}
int
-parse_cmp_type (const char *pat, strcmp_fn *cmpfn, int *rf)
+parse_cmp_type(const char *pat, strcmp_fn * cmpfn, int *rf)
{
- size_t len = strcspn (pat, ",");
- int flags = 0;
- int cmp;
-
- if (STRMATCH ("exact", pat, len))
- cmp = CMP_EXACT;
- else if (STRMATCH ("fnmatch", pat, len))
- cmp = CMP_FNMATCH;
- else if (STRMATCH ("regex", pat, len))
- cmp = CMP_REGEX;
- else
- return 1;
-
- pat += len;
- if (*pat)
- {
- while (*++pat)
- {
- switch (*pat)
- {
- case 'i':
- flags |= RF_ICASE;
- break;
-
- case 'b':
- flags |= RF_BASIC;
- break;
-
- default:
- logmsg (LOG_NOTICE, _("unrecognized comparison flag: %c"), *pat);
- }
+ size_t len = strcspn(pat, ",");
+ int flags = 0;
+ int cmp;
+
+ if (STRMATCH("exact", pat, len))
+ cmp = CMP_EXACT;
+ else if (STRMATCH("fnmatch", pat, len))
+ cmp = CMP_FNMATCH;
+ else if (STRMATCH("regex", pat, len))
+ cmp = CMP_REGEX;
+ else
+ return 1;
+
+ pat += len;
+ if (*pat) {
+ while (*++pat) {
+ switch (*pat) {
+ case 'i':
+ flags |= RF_ICASE;
+ break;
+
+ case 'b':
+ flags |= RF_BASIC;
+ break;
+
+ default:
+ logmsg(LOG_NOTICE,
+ _("unrecognized comparison flag: %c"),
+ *pat);
+ }
+ }
+ }
+
+ switch (cmp) {
+ case CMP_EXACT:
+ *cmpfn = (flags & RF_ICASE) ? cmp_exact_ci : cmp_exact;
+ break;
+
+ case CMP_FNMATCH:
+ *cmpfn = cmp_fnmatch;
+ *rf = FNM_NOESCAPE | FNM_PERIOD |
+ ((flags & RF_ICASE) ? FNM_CASEFOLD : 0);
+ break;
+
+ case CMP_REGEX:
+ *cmpfn = cmp_regex;
+ *rf = ((flags & RF_BASIC) ? 0 : REG_EXTENDED) | REG_NOSUB;
+ if (flags & RF_ICASE)
+ *rf |= REG_ICASE;
+ break;
}
- }
-
- switch (cmp)
- {
- case CMP_EXACT:
- *cmpfn = (flags & RF_ICASE) ? cmp_exact_ci : cmp_exact;
- break;
-
- case CMP_FNMATCH:
- *cmpfn = cmp_fnmatch;
- *rf = FNM_NOESCAPE | FNM_PERIOD |
- ((flags & RF_ICASE) ? FNM_CASEFOLD : 0);
- break;
-
- case CMP_REGEX:
- *cmpfn = cmp_regex;
- *rf = ((flags & RF_BASIC) ? 0 : REG_EXTENDED) | REG_NOSUB;
- if (flags & RF_ICASE)
- *rf |= REG_ICASE;
- break;
- }
- return 0;
+ return 0;
}
-struct builtin_data_storage
-{
- struct txtacc *acc;
- char **wp;
+struct builtin_data_storage {
+ struct txtacc *acc;
+ char **wp;
};
static int default_ncol[] = {
- 4, /* project-uploader: name, realname, email, pubkey */
- 2, /* project-owner: email, realname */
+ 4, /* project-uploader: name, realname, email, pubkey */
+ 2, /* project-owner: email, realname */
};
int
-builtin_lookup (struct dictionary *dict, void *handle, const char *req)
+builtin_lookup(struct dictionary *dict, void *handle, const char *req)
{
- int i;
- int rc;
- size_t count = 0;
- struct txtacc *acc;
- int flags = 0;
- strcmp_fn cmpfn = cmp_exact;
- struct builtin_data_storage *bds;
- int ncol = default_ncol[dict->id];
-
- if (dict->parmc == 0)
- {
- dict->nrow = dict->ncol = 0;
- return 0;
- }
+ int i;
+ int rc;
+ size_t count = 0;
+ struct txtacc *acc;
+ int flags = 0;
+ strcmp_fn cmpfn = cmp_exact;
+ struct builtin_data_storage *bds;
+ int ncol = default_ncol[dict->id];
+
+ if (dict->parmc == 0) {
+ dict->nrow = dict->ncol = 0;
+ return 0;
+ }
- acc = txtacc_create ();
+ acc = txtacc_create();
- for (i = 0; i < dict->parmc; i++)
- {
- char *pat = dict->parmv[i];
+ for (i = 0; i < dict->parmc; i++) {
+ char *pat = dict->parmv[i];
- if (pat[0] == '/')
- {
- pat++;
- if (*pat != '/' && parse_cmp_type (pat, &cmpfn, &flags) == 0)
- continue;
- }
+ if (pat[0] == '/') {
+ pat++;
+ if (*pat != '/'
+ && parse_cmp_type(pat, &cmpfn, &flags) == 0)
+ continue;
+ }
+
+ if (i + ncol >= dict->parmc)
+ break;
+
+ if (cmpfn(pat, req, flags)) {
+ size_t j;
+ for (j = 1; j <= ncol; j++) {
+ char *val = dict->parmv[i + j];
+ txtacc_grow(acc, val, strlen(val) + 1);
+ }
+ count++;
+ }
- if (i + ncol >= dict->parmc)
- break;
-
- if (cmpfn (pat, req, flags))
- {
- size_t j;
- for (j = 1; j <= ncol; j++)
- {
- char *val = dict->parmv[i + j];
- txtacc_grow (acc, val, strlen (val) + 1);
- }
- count++;
+ i += ncol;
}
- i += ncol;
- }
-
- dict->nrow = count;
- dict->ncol = ncol;
-
- if (count == 0)
- {
- txtacc_free (acc);
- bds = NULL;
- rc = 1;
- }
- else
- {
- size_t i;
- char *p;
-
- bds = grecs_malloc (sizeof (*bds));
- count *= ncol;
- bds->wp = grecs_calloc (count, sizeof (bds->wp[0]));
- bds->acc = acc;
- p = txtacc_finish (acc, 0);
-
- for (i = 0; i < count; i++)
- {
- bds->wp[i] = p;
- p += strlen (p) + 1;
+ dict->nrow = count;
+ dict->ncol = ncol;
+
+ if (count == 0) {
+ txtacc_free(acc);
+ bds = NULL;
+ rc = 1;
+ } else {
+ size_t i;
+ char *p;
+
+ bds = grecs_malloc(sizeof(*bds));
+ count *= ncol;
+ bds->wp = grecs_calloc(count, sizeof(bds->wp[0]));
+ bds->acc = acc;
+ p = txtacc_finish(acc, 0);
+
+ for (i = 0; i < count; i++) {
+ bds->wp[i] = p;
+ p += strlen(p) + 1;
+ }
+ rc = 0;
}
- rc = 0;
- }
- dict->storage = bds;
+ dict->storage = bds;
- return rc;
+ return rc;
}
int
-builtin_free_result (struct dictionary *dict, void *handle)
+builtin_free_result(struct dictionary *dict, void *handle)
{
- if (dict->storage)
- {
- struct builtin_data_storage *bds = dict->storage;
- txtacc_free (bds->acc);
- free (bds->wp);
- free (bds);
- dict->storage = NULL;
- }
- return 0;
+ if (dict->storage) {
+ struct builtin_data_storage *bds = dict->storage;
+ txtacc_free(bds->acc);
+ free(bds->wp);
+ free(bds);
+ dict->storage = NULL;
+ }
+ return 0;
}
int
-builtin_get (struct dictionary *dict, void *handle,
- unsigned nrow, unsigned ncol)
+builtin_get(struct dictionary *dict, void *handle, unsigned nrow,
+ unsigned ncol)
{
- struct builtin_data_storage *bds = dict->storage;
- char *str = bds->wp[nrow * dict->ncol + ncol];
- dictionary_copy_result (dict, str, strlen (str));
- return 0;
+ struct builtin_data_storage *bds = dict->storage;
+ char *str = bds->wp[nrow * dict->ncol + ncol];
+ dictionary_copy_result(dict, str, strlen(str));
+ return 0;
}
-
diff --git a/src/builtin.h b/src/builtin.h
index 7e5245d..a5bcfbc 100644
--- a/src/builtin.h
+++ b/src/builtin.h
@@ -1,5 +1,5 @@
/* wydawca - automatic release submission daemon
- Copyright (C) 2009-2011 Sergey Poznyakoff
+ Copyright (C) 2009-2013 Sergey Poznyakoff
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
@@ -14,9 +14,9 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>. */
-int builtin_init (struct dictionary *);
-int builtin_done (struct dictionary *);
-void *builtin_open (struct dictionary *);
-int builtin_get (struct dictionary *, void *, unsigned, unsigned);
-int builtin_lookup (struct dictionary *, void *, const char *);
-int builtin_free_result (struct dictionary *, void *);
+int builtin_init(struct dictionary *);
+int builtin_done(struct dictionary *);
+void *builtin_open(struct dictionary *);
+int builtin_get(struct dictionary *, void *, unsigned, unsigned);
+int builtin_lookup(struct dictionary *, void *, const char *);
+int builtin_free_result(struct dictionary *, void *);
diff --git a/src/cmdline.opt b/src/cmdline.opt
index c9554b8..6f2fbf6 100644
--- a/src/cmdline.opt
+++ b/src/cmdline.opt
@@ -1,5 +1,5 @@
/* wydawca - automatic release submission daemon -*- c -*-
- Copyright (C) 2007, 2009-2012 Sergey Poznyakoff
+ Copyright (C) 2007, 2009-2013 Sergey Poznyakoff
Wydawca is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -22,29 +22,30 @@ static struct grecs_list *tag_list;
static int
string_cmp (const void *elt1, const void *elt2)
{
- return strcmp ((const char *)elt1, (const char *)elt2);
+ return strcmp ((const char *)elt1, (const char *)elt2);
}
int
selected_spools ()
{
- return (source_list != NULL || tag_list != NULL);
+ return (source_list != NULL || tag_list != NULL);
}
int
enabled_spool_p (const struct spool *spool)
{
- if (source_list || tag_list)
- return (source_list && grecs_list_locate (source_list, spool->source_dir))
- || (tag_list && grecs_list_locate (tag_list, spool->tag));
- return 1;
+ if (source_list || tag_list)
+ return (source_list &&
+ grecs_list_locate (source_list, spool->source_dir)) ||
+ (tag_list && grecs_list_locate (tag_list, spool->tag));
+ return 1;
}
OPTIONS_BEGIN("wydawca",
[<wydawca synchronizes files from a set of upload directories with the corresponding distribution sites>],
[<UID [UID...]>],
[<gnu>],
- [<copyright_year=2007-2012>],
+ [<copyright_year=2007-2013>],
[<copyright_holder=Sergey Poznyakoff>])
GROUP(Selecting program mode)
@@ -105,23 +106,21 @@ END
OPTION(spool,S,TAG,
[<process only spool with the given tag (may be used multiple times)>])
BEGIN
- if (!tag_list)
- {
- tag_list = grecs_list_create ();
- tag_list->cmp = string_cmp;
- }
- grecs_list_append (tag_list, optarg);
+ if (!tag_list) {
+ tag_list = grecs_list_create();
+ tag_list->cmp = string_cmp;
+ }
+ grecs_list_append(tag_list, optarg);
END
OPTION(source,s,SOURCE-DIR,
[<process only spool with the given source (may be used multiple times)>])
BEGIN
- if (!source_list)
- {
- source_list = grecs_list_create ();
- source_list->cmp = string_cmp;
- }
- grecs_list_append (source_list, optarg);
+ if (!source_list) {
+ source_list = grecs_list_create();
+ source_list->cmp = string_cmp;
+ }
+ grecs_list_append(source_list, optarg);
END
GROUP(Logging)
@@ -143,7 +142,7 @@ GROUP(Preprocessor control)
OPTION(include-directory,I,DIR,
[<add include directory>])
BEGIN
- grecs_preproc_add_include_dir (optarg);
+ grecs_preproc_add_include_dir(optarg);
END
OPTION(define,D,SYMBOL[=VALUE],
@@ -152,15 +151,14 @@ BEGIN
char *p;
if (!pp_cmd_acc)
- pp_cmd_acc = txtacc_create ();
- txtacc_grow (pp_cmd_acc, " \"-D", 4);
- for (p = optarg; *p; p++)
- {
- if (*p == '\\' || *p == '"')
- txtacc_1grow (pp_cmd_acc, '\\');
- txtacc_1grow (pp_cmd_acc, *p);
- }
- txtacc_1grow (pp_cmd_acc, '"');
+ pp_cmd_acc = txtacc_create ();
+ txtacc_grow(pp_cmd_acc, " \"-D", 4);
+ for (p = optarg; *p; p++) {
+ if (*p == '\\' || *p == '"')
+ txtacc_1grow(pp_cmd_acc, '\\');
+ txtacc_1grow(pp_cmd_acc, *p);
+ }
+ txtacc_1grow(pp_cmd_acc, '"');
END
OPTION(preprocessor,,COMMAND,
@@ -186,21 +184,21 @@ END
OPTION(dump-grammar-trace,,,
[<dump configuration grammar traces>])
BEGIN
- grecs_gram_trace (1);
+ grecs_gram_trace(1);
END
OPTION(dump-lex-trace,,,
[<dump lexical analyzer traces>])
BEGIN
- grecs_lex_trace (1);
+ grecs_lex_trace(1);
END
GROUP([<Additional help>])
OPTION(config-help,,,
[<show configuration file summary>])
BEGIN
- config_help ();
- exit (0);
+ config_help();
+ exit(0);
END
OPTIONS_END
@@ -208,18 +206,17 @@ OPTIONS_END
void
parse_options(int argc, char *argv[])
{
- GETOPT(argc, argv)
- if (pp_cmd_acc && grecs_preprocessor)
- {
- char *cmd;
- size_t len = strlen (grecs_preprocessor);
- txtacc_1grow (pp_cmd_acc, 0);
- txtacc_grow (pp_cmd_acc, grecs_preprocessor, len + 1);
- cmd = txtacc_finish (pp_cmd_acc, 1);
- txtacc_free (pp_cmd_acc);
- memmove (cmd + len + 1, cmd, strlen (cmd) + 1);
- memcpy (cmd, grecs_preprocessor, len);
- cmd[len] = ' ';
- grecs_preprocessor = cmd;
- }
+ GETOPT(argc, argv);
+ if (pp_cmd_acc && grecs_preprocessor) {
+ char *cmd;
+ size_t len = strlen(grecs_preprocessor);
+ txtacc_1grow(pp_cmd_acc, 0);
+ txtacc_grow(pp_cmd_acc, grecs_preprocessor, len + 1);
+ cmd = txtacc_finish(pp_cmd_acc, 1);
+ txtacc_free(pp_cmd_acc);
+ memmove(cmd + len + 1, cmd, strlen(cmd) + 1);
+ memcpy(cmd, grecs_preprocessor, len);
+ cmd[len] = ' ';
+ grecs_preprocessor = cmd;
+ }
}
diff --git a/src/config.c b/src/config.c
index 509b0d5..7cc667a 100644
--- a/src/config.c
+++ b/src/config.c
@@ -17,48 +17,42 @@
#include "wydawca.h"
#include "sql.h"
#include <mail.h>
-
-struct keyword
-{
- char *name;
- int tok;
+struct keyword {
+ char *name;
+ int tok;
};
static int
-keyword_to_tok (const char *str, struct keyword *kw, int *pres)
+keyword_to_tok(const char *str, struct keyword *kw, int *pres)
{
- for (; kw->name; kw++)
- if (strcmp (kw->name, str) == 0)
- {
- *pres = kw->tok;
- return 0;
- }
- return 1;
+ for (; kw->name; kw++)
+ if (strcmp(kw->name, str) == 0) {
+ *pres = kw->tok;
+ return 0;
+ }
+ return 1;
}
static int
-tok_to_keyword (int tok, struct keyword *kw, const char **pres)
+tok_to_keyword(int tok, struct keyword *kw, const char **pres)
{
- for (; kw->name; kw++)
- if (kw->tok == tok)
- {
- *pres = kw->name;
- return 0;
- }
- return 1;
+ for (; kw->name; kw++)
+ if (kw->tok == tok) {
+ *pres = kw->name;
+ return 0;
+ }
+ return 1;
}
-
static struct archive_descr default_archive_descr = {