projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bug #23436: fix some minor manpage syntax errors and add a test which runs
[mmh]
/
sbr
/
fmt_compile.c
diff --git
a/sbr/fmt_compile.c
b/sbr/fmt_compile.c
index
a478acb
..
c42f1e3
100644
(file)
--- a/
sbr/fmt_compile.c
+++ b/
sbr/fmt_compile.c
@@
-53,6
+53,9
@@
extern struct mailname fmt_mnull;
#define TF_NOP 8 /* like expr but no result */
/* ftable->flags */
#define TF_NOP 8 /* like expr but no result */
/* ftable->flags */
+/* NB that TFL_PUTS is also used to decide whether the test
+ * in a "%<(function)..." should be a string or numeric one.
+ */
#define TFL_PUTS 1 /* implicit putstr if top level */
#define TFL_PUTN 2 /* implicit putnum if top level */
#define TFL_PUTS 1 /* implicit putstr if top level */
#define TFL_PUTN 2 /* implicit putnum if top level */
@@
-149,6
+152,8
@@
static struct ftable functable[] = {
{ "mymbox", TF_COMP, FT_LV_COMPFLAG, FT_MYMBOX, TFL_PUTN },
{ "addtoseq", TF_STR, FT_ADDTOSEQ, 0, 0 },
{ "mymbox", TF_COMP, FT_LV_COMPFLAG, FT_MYMBOX, TFL_PUTN },
{ "addtoseq", TF_STR, FT_ADDTOSEQ, 0, 0 },
+ { "unquote", TF_EXPR, FT_LS_UNQUOTE, 0, TFL_PUTS},
+
{ NULL, 0, 0, 0, 0 }
};
{ NULL, 0, 0, 0, 0 }
};
@@
-181,7
+186,7
@@
static struct ftable functable[] = {
#define PUTC(c) NEW(FT_CHAR,0,0); fp->f_char = (c);
static char *format_string;
#define PUTC(c) NEW(FT_CHAR,0,0); fp->f_char = (c);
static char *format_string;
-static char *usr_fstring; /* for CERROR */
+static unsigned char *usr_fstring; /* for CERROR */
#define CERROR(str) compile_error (str, cp)
#define CERROR(str) compile_error (str, cp)
@@
-608,7
+613,14
@@
do_if(char *sp)
if (ftbl->f_type >= IF_FUNCS)
fp->f_type = ftbl->extra;
else {
if (ftbl->f_type >= IF_FUNCS)
fp->f_type = ftbl->extra;
else {
- LV (FT_IF_V_NE, 0);
+ /* Put out a string test or a value test depending
+ * on what this function's return type is.
+ */
+ if (ftbl->flags & TFL_PUTS) {
+ LV (FT_IF_S, 0);
+ } else {
+ LV (FT_IF_V_NE, 0);
+ }
}
}
else {
}
}
else {