summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-07-01 23:57:18 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-07-01 23:57:18 +0300
commit45533be53dacd60ee8fa0c648e60dcc76bc83e1f (patch)
tree9a000fbdbcd718fb3a42d362507e8dd397dcd3ec
parent9671c7d62638d1ab02261717863a7e9864b67cbd (diff)
downloadmailutils-45533be53dacd60ee8fa0c648e60dcc76bc83e1f.tar.gz
mailutils-45533be53dacd60ee8fa0c648e60dcc76bc83e1f.tar.bz2
Minor fixes
-rw-r--r--mh/mh_fmtgram.y8
-rw-r--r--mh/mh_format.c53
-rw-r--r--mh/tests/fmtfunc.at12
3 files changed, 23 insertions, 50 deletions
diff --git a/mh/mh_fmtgram.y b/mh/mh_fmtgram.y
index 67560d3e8..328a7a66b 100644
--- a/mh/mh_fmtgram.y
+++ b/mh/mh_fmtgram.y
@@ -678,2 +678,10 @@ token_function (void)
}
+ if (!yylval.builtin->fun
+ && !(yylval.builtin->flags & (MHA_SPECIAL|MHA_VOID)))
+ {
+ mu_error ("INTERNAL ERROR at %s:%d: \"%s\" has no associated function"
+ " and is not marked as MHA_SPECIAL",
+ __FILE__, __LINE__, yylval.builtin->name);
+ abort ();
+ }
diff --git a/mh/mh_format.c b/mh/mh_format.c
index 16906308b..48ac3a369 100644
--- a/mh/mh_format.c
+++ b/mh/mh_format.c
@@ -850,14 +850,2 @@ builtin_modulo (struct mh_fvm *mach)
static void
-builtin_num (struct mh_fvm *mach)
-{
- mach->num[R_REG] = mach->num[R_ARG];
-}
-
-static void
-builtin_lit (struct mh_fvm *mach)
-{
- mh_string_copy (mach, R_REG, R_ARG);
-}
-
-static void
builtin_getenv (struct mh_fvm *mach)
@@ -924,33 +912,2 @@ builtin_trim (struct mh_fvm *mach)
-/* putstr expr print str*/
-static void
-builtin_putstr (struct mh_fvm *mach)
-{
- print_string (mach, 0, mh_string_value (&mach->str[R_ARG]));
-}
-
-/* putstrf expr print str in a fixed width*/
-static void
-builtin_putstrf (struct mh_fvm *mach)
-{
- mh_string_copy (mach, R_REG, R_ARG);
-}
-
-/* putnum expr print num*/
-static void
-builtin_putnum (struct mh_fvm *mach)
-{
- char *p;
- mu_asprintf (&p, "%ld", mach->num[R_ARG]);
- print_string (mach, 0, p);
- free (p);
-}
-
-/* putnumf expr print num in a fixed width*/
-static void
-builtin_putnumf (struct mh_fvm *mach)
-{
- format_num (mach, mach->num[R_ARG]);
-}
-
static int
@@ -1854,7 +1811,7 @@ mh_builtin_t builtin_tab[] = {
{ "compval", builtin_compval, mhtype_num, mhtype_str },
- { "trim", builtin_trim, mhtype_none, mhtype_str, MHA_OPTARG },
- { "putstr", builtin_putstr, mhtype_none, mhtype_str, MHA_OPTARG },
- { "putstrf", NULL, mhtype_str, mhtype_str, MHA_SPECIAL|MHA_OPTARG },
- { "putnum", builtin_putnum, mhtype_none, mhtype_num, MHA_OPTARG },
- { "putnumf", NULL, mhtype_num, mhtype_num, MHA_SPECIAL|MHA_OPTARG },
+ { "trim", builtin_trim, mhtype_none, mhtype_str, MHA_OPTARG },
+ { "putstr", NULL, mhtype_str, mhtype_str, MHA_SPECIAL|MHA_OPTARG|MHA_OPTARG|MHA_IGNOREFMT },
+ { "putstrf", NULL, mhtype_str, mhtype_str, MHA_SPECIAL|MHA_OPTARG },
+ { "putnum", NULL, mhtype_num, mhtype_num, MHA_SPECIAL|MHA_OPTARG|MHA_IGNOREFMT },
+ { "putnumf", NULL, mhtype_num, mhtype_num, MHA_SPECIAL|MHA_OPTARG },
{ "sec", builtin_sec, mhtype_num, mhtype_str },
diff --git a/mh/tests/fmtfunc.at b/mh/tests/fmtfunc.at
index 5191e9e1f..113b58885 100644
--- a/mh/tests/fmtfunc.at
+++ b/mh/tests/fmtfunc.at
@@ -362,3 +362,3 @@ FMTFUNC([putnum],
%(putnum{X-Number})
-%(putstr(msg))
+%(putnum(msg))
],
@@ -375,4 +375,12 @@ body
-# FIXME: putnumf
+FMTFUNC([putnumf],
+[%(void(num 10))%03(putnumf)
+%(void(num 65535))%03(putnumf)
+],
+[
+],
+[010
+?35
+])
# FIXME: putlit

Return to:

Send suggestions and report system problems to the System administrator.