*
* - Add the code in fmt_scan.c to handle your new function.
*
+ * - Add code to fmtdump.c to display your new function.
+ *
* - Document the new function in the mh-format(5) man page.
*
*/
#include <h/tws.h>
#include <h/fmt_scan.h>
#include <h/fmt_compile.h>
+#include <h/mts.h>
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#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
{ "putnum", TF_EXPR, FT_NUM, 0, 0 },
{ "putnumf", TF_EXPR, FT_NUMF, 0, 0 },
{ "putaddr", TF_STR, FT_PUTADDR, 0, 0 },
- { "putlit", TF_STR, FT_STRLIT, 0, 0 },
+ { "putlit", TF_EXPR, FT_STRLIT, 0, 0 },
+ { "zputlit", TF_EXPR, FT_STRLITZ, 0, 0 },
{ "void", TF_NOP, 0, 0, 0 },
{ "comp", TF_COMP, FT_LS_COMP, 0, TFL_PUTS },
{ "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 },
#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 *);
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;