X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=h%2Ffmt_scan.h;h=eec967edccfc5978a6a8a32da5e7f2c055eee454;hp=9872e09c15d459977eeacfb1a5ffc57163efdfd4;hb=18591f8e001ecedbee48a51c1d1f08ebaa1c15c8;hpb=5dd6771b28c257af405d7248639ed0e3bcdce38b diff --git a/h/fmt_scan.h b/h/fmt_scan.h index 9872e09..eec967e 100644 --- a/h/fmt_scan.h +++ b/h/fmt_scan.h @@ -1,84 +1,83 @@ - /* - * fmt_scan.h -- definitions for fmt_scan() - */ +** fmt_scan.h -- definitions for fmt_scan() +*/ /* - * This structure describes an "interesting" component. It holds - * the name & text from the component (if found) and one piece of - * auxilary info. The structure for a particular component is located - * by (open) hashing the name and using it as an index into the ptr array - * "wantcomp". All format entries that reference a particular component - * point to its comp struct (so we only have to do component specific - * processing once. e.g., parse an address.). - */ +** This structure describes an "interesting" component. It holds +** the name & text from the component (if found) and one piece of +** auxiliary info. The structure for a particular component is located +** by (open) hashing the name and using it as an index into the ptr array +** "wantcomp". All format entries that reference a particular component +** point to its comp struct (so we only have to do component specific +** processing once. e.g., parse an address.). +*/ struct comp { - char *c_name; /* component name (in lower case) */ - char *c_text; /* component text (if found) */ - struct comp *c_next; /* hash chain linkage */ - short c_flags; /* misc. flags (from fmt_scan) */ - short c_type; /* type info (from fmt_compile) */ - union { - struct tws *c_u_tws; - struct mailname *c_u_mn; - } c_un; + char *c_name; /* component name (in lower case) */ + char *c_text; /* component text (if found) */ + struct comp *c_next; /* hash chain linkage */ + short c_flags; /* misc. flags (from fmt_scan) */ + short c_type; /* type info (from fmt_compile) */ + union { + struct tws *c_u_tws; + struct mailname *c_u_mn; + } c_un; }; #define c_tws c_un.c_u_tws #define c_mn c_un.c_u_mn /* - * c_type bits - */ -#define CT_ADDR (1<<0) /* referenced as address */ -#define CT_DATE (1<<1) /* referenced as date */ +** c_type bits +*/ +#define CT_ADDR (1<<0) /* referenced as address */ +#define CT_DATE (1<<1) /* referenced as date */ /* - * c_flags bits - */ -#define CF_TRUE (1<<0) /* usually means component is present */ -#define CF_PARSED (1<<1) /* address/date has been parsed */ -#define CF_DATEFAB (1<<2) /* datefield fabricated */ +** c_flags bits +*/ +#define CF_TRUE (1<<0) /* usually means component is present */ +#define CF_PARSED (1<<1) /* address/date has been parsed */ +#define CF_DATEFAB (1<<2) /* datefield fabricated */ extern int fmt_norm; /* - * Hash table for deciding if a component is "interesting". - */ +** Hash table for deciding if a component is "interesting". +*/ extern struct comp *wantcomp[128]; -/* - * Hash function for component name. The function should be - * case independent and probably shouldn't involve a routine - * call. This function is pretty good but will not work on - * single character component names. - */ -#define CHASH(nm) (((((nm)[0]) - ((nm)[1])) & 0x1f) + (((nm)[2]) & 0x5f)) +/* +** Hash function for component name. The function should be +** case independent and probably shouldn't involve a routine +** call. This function is pretty good but will not work on +** single character component names. +*/ +#define CHASH(nm) (((((nm)[0]) - ((nm)[1])) & 0x1f) + (((nm)[2]) & 0x5f)) /* - * Find a component in the hash table. - */ +** Find a component in the hash table. +*/ #define FINDCOMP(comp,name) \ for (comp = wantcomp[CHASH(name)]; \ - comp && strcmp(comp->c_name,name); \ - comp = comp->c_next) ; + comp && strcmp(comp->c_name,name)!=0; \ + comp = comp->c_next) ; /* - * This structure defines one formatting instruction. - */ +** This structure defines one formatting instruction. +*/ struct format { - unsigned char f_type; - char f_fill; - short f_width; /* output field width */ - union { - struct comp *f_u_comp; /* associated component */ - char *f_u_text; /* literal text */ - char f_u_char; /* literal character */ - int f_u_value; /* literal value */ - } f_un; + unsigned char f_type; + char f_fill; + short f_width; /* output field width */ + union { + struct comp *f_u_comp; /* associated component */ + char *f_u_text; /* literal text */ + char f_u_char; /* literal character */ + int f_u_value; /* literal value */ + } f_un; }; -#define f_skip f_width /* instr to skip (false "if") */ +#define f_skip f_width /* instr to skip (false "if") */ #define f_comp f_un.f_u_comp #define f_text f_un.f_u_text @@ -86,8 +85,8 @@ struct format { #define f_value f_un.f_u_value /* - * prototypes - */ -struct format *fmt_scan (struct format *, char *, int, int *); -char *new_fs (char *, char *, char *); -int fmt_compile (char *, struct format **); +** prototypes +*/ +struct format *fmt_scan(struct format *, char *, int, int *); +int fmt_compile(char *, struct format **); +char *formataddr(char *, char *);