enum /* face strings */ { Suser, Sdomain, Sshow, Sdigest, Nstring }; enum { Facesize = 48, }; typedef struct Face Face; typedef struct Facefile Facefile; struct Face { Image *bit; /* unless there's an error, this is file->image */ Image *mask; /* unless there's an error, this is file->mask */ char *str[Nstring]; int recent; ulong time; Tm tm; int unknown; Facefile *file; }; /* * Loading the files is slow enough on a dial-up line to be worth this trouble */ struct Facefile { Image *image; Image *mask; ulong mtime; ulong rdtime; int ref; char *file; Facefile *next; }; extern char date[]; extern char *maildir; extern char **maildirs; extern int nmaildirs; Face* nextface(void); void findbit(Face*); void freeface(Face*); void initplumb(void); void killall(char*); void showmail(Face*); void delete(char*, char*); void freefacefile(Facefile*); Face* dirface(char*, char*); void resized(void); int alreadyseen(char*); ulong dirlen(char*); void *emalloc(ulong); void *erealloc(void*, ulong); char *estrdup(char*); char *findfile(Face*, char*, char*); void addmaildir(char*);