aboutsummaryrefslogtreecommitdiff
path: root/src/meta.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2013-03-12 15:03:59 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2013-03-12 15:22:13 +0200
commit1ba8cf95a5f536d4aa6293f9848271a7285bc092 (patch)
treedede8a4bccb1daad8b67530d87845e7fe05749e6 /src/meta.c
parent293108d7806aa3c0c5e706237b3788b261779e66 (diff)
downloadwydawca-1ba8cf95a5f536d4aa6293f9848271a7285bc092.tar.gz
wydawca-1ba8cf95a5f536d4aa6293f9848271a7285bc092.tar.bz2
Namespace normalization (2). Provide installable headers.
* Makefile.am (SUBDIRS): Add include. * configure.ac: Build include/*/Makefile Set-up grecs as a shared convenience library. Install its headers. * include/Makefile.am: New file. * include/wydawca/Makefile.am: New file. * include/wydawca/cfg.h: New file. * include/wydawca/wydawca.h: New file. * modules/mailutils/Makefile.am (AM_CPPFLAGS): Add include/ * src/Makefile.am (LDADD): Use @GRECS_LDADD@ (AM_CPPFLAGS): Add include/. * tests/Makefile.am: Likewise. * src/wydawca.h: Include wydawca/wydawca.h. (__cat2__, __cat3__): Move to installable header and rename. (struct wy_user): Move to installable header. (struct file_triplet): Rename to wy_triplet. All uses changed. (enum notification_event): Rename to wy_event and move to installable header. (struct metadef): Rename to wy_metadef and move to installable header. (dry_run_mode): Rename to wy_dry_run and move to installable header. (wydawca_gpg_homedir): Rename to wy_gpg_homedir and move to installable header. (wy_version, wy_debug_level, wy_log_to_stderr) (wy_log_facility, wy_syslog_tag) (wy_log,wy_dbg): Move to installable header. * modules/mailutils/mod_mailutils.c: Update. * src/cmdline.opt * src/config.c * src/directive.c * src/diskio.c * src/event.c * src/gpg.c * src/job.c * src/meta.c * src/module.c * src/null.c * src/timer.c * src/triplet.c * src/verify.c * src/vtab.c * src/watcher.c * src/wydawca.c
Diffstat (limited to 'src/meta.c')
-rw-r--r--src/meta.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/src/meta.c b/src/meta.c
index eac2d68..338d624 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -18,7 +18,7 @@
#include "sql.h"
static const char *
-meta_expand(struct metadef *def, void *data)
+meta_expand(struct wy_metadef *def, void *data)
{
if (!def->value) {
if (def->expand)
@@ -29,7 +29,7 @@ meta_expand(struct metadef *def, void *data)
}
static const char *
-find_expansion_char(int c, struct metadef *def, void *data)
+find_expansion_char(int c, struct wy_metadef *def, void *data)
{
for (; def->kw; def++)
if (def->kw[1] == 0 && def->kw[0] == c)
@@ -38,7 +38,7 @@ find_expansion_char(int c, struct metadef *def, void *data)
}
static const char *
-find_expansion_word(const char *kw, size_t len, struct metadef *def,
+find_expansion_word(const char *kw, size_t len, struct wy_metadef *def,
void *data)
{
for (; def->kw; def++)
@@ -48,7 +48,7 @@ find_expansion_word(const char *kw, size_t len, struct metadef *def,
}
char *
-meta_expand_string(const char *string, struct metadef *def, void *data,
+meta_expand_string(const char *string, struct wy_metadef *def, void *data,
struct dictionary *dict, void *handle)
{
const char *p, *s;
@@ -135,7 +135,7 @@ meta_expand_string(const char *string, struct metadef *def, void *data,
}
void
-meta_free(struct metadef *def)
+meta_free(struct wy_metadef *def)
{
for (; def->kw; def++) {
if (def->storage) {
@@ -145,10 +145,10 @@ meta_free(struct metadef *def)
}
}
-struct metadef *
-metadef_join(struct metadef *a, struct metadef *b)
+struct wy_metadef *
+metadef_join(struct wy_metadef *a, struct wy_metadef *b)
{
- struct metadef *np;
+ struct wy_metadef *np;
size_t i, j;
for (i = 0; a[i].kw; i++);
@@ -163,3 +163,26 @@ metadef_join(struct metadef *a, struct metadef *b)
np[i + j].kw = NULL;
return np;
}
+
+char *
+wy_expand_stats(const char *tmpl)
+{
+ struct wy_metadef *exp;
+ time_t t;
+ size_t tc;
+ char *text;
+
+ tc = timer_get_count() * 3;
+ exp = make_stat_expansion(tc + 1);
+ time(&t);
+ exp[0].kw = "date";
+ exp[0].value = exp[0].storage = grecs_strdup(ctime(&t));
+ exp[0].value[strlen(exp[0].value) - 1] = 0;
+ timer_fill_meta(exp + 1, tc);
+ text = meta_expand_string(tmpl, exp, NULL, NULL, NULL);
+ meta_free(exp);
+ timer_free_meta(exp + 1, tc);
+ free(exp);
+
+ return text;
+}

Return to:

Send suggestions and report system problems to the System administrator.