X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Ffmt_compile.c;h=ee495f1463e87db72b981d17fa9defe554bfcd51;hb=eabbcb91ae4e824930e9d9c9a206e40f0bdaf61f;hp=f643421a0f599a37d5041341fc58c858b6e5ce4b;hpb=c3ed95b3c5530b84a73dbdd531cb9aca9ba8dea0;p=mmh diff --git a/sbr/fmt_compile.c b/sbr/fmt_compile.c index f643421..ee495f1 100644 --- a/sbr/fmt_compile.c +++ b/sbr/fmt_compile.c @@ -44,6 +44,7 @@ #include #include #include +#include #ifdef HAVE_SYS_TIME_H # include @@ -75,6 +76,9 @@ extern struct mailname fmt_mnull; #define TF_NOW 6 /* special - get current unix time */ #define TF_EXPR_SV 7 /* like expr but save current str reg */ #define TF_NOP 8 /* like expr but no result */ +#define TF_MYNAME 9 /* special - get current name of user */ +#define TF_MYHOST 10 /* special - get "local" hostname */ +#define TF_LMBOX 11 /* special - get full local mailbox */ /* ftable->flags */ /* NB that TFL_PUTS is also used to decide whether the test @@ -153,6 +157,9 @@ static struct ftable functable[] = { { "dat", TF_NUM, FT_LV_DAT, 0, TFL_PUTN }, { "strlen", TF_NONE, FT_LV_STRLEN, 0, TFL_PUTN }, { "me", TF_MYBOX, FT_LS_LIT, 0, TFL_PUTS }, + { "myname", TF_MYNAME, FT_LS_LIT, 0, TFL_PUTS }, + { "myhost", TF_MYHOST, FT_LS_LIT, 0, TFL_PUTS }, + { "localmbox", TF_LMBOX, FT_LS_LIT, 0, TFL_PUTS }, { "plus", TF_NUM, FT_LV_PLUS_L, 0, TFL_PUTN }, { "minus", TF_NUM, FT_LV_MINUS_L, 0, TFL_PUTN }, { "divide", TF_NUM, FT_LV_DIVIDE_L, 0, TFL_PUTN }, @@ -239,17 +246,12 @@ static struct ftable functable[] = { #define PUTLIT(str) do { NEW(FT_LIT,0,0); fp->f_text = (str); } while (0) #define PUTC(c) do { NEW(FT_CHAR,0,0); fp->f_char = (c); } while (0) -static char *format_string; +char *format_string; static unsigned char *usr_fstring; /* for CERROR */ #define CERROR(str) compile_error (str, cp) /* - * external prototypes - */ -extern char *getusername(void); - -/* * static prototypes */ static struct ftable *lookup(char *); @@ -316,7 +318,7 @@ int fmt_compile(char *fstring, struct format **fmt) { register char *cp; - int i; + size_t i; if (format_string) free (format_string); @@ -593,6 +595,18 @@ do_func(char *sp) LS(t->f_type, getusername()); break; + case TF_MYNAME: + LS(t->f_type, getfullname()); + break; + + case TF_MYHOST: + LS(t->f_type, LocalName(0)); + break; + + case TF_LMBOX: + LS(t->f_type, getlocalmbox()); + break; + case TF_NOW: LV(t->f_type, time((time_t *) 0)); break;