/* Prototypes for functions defined in
alias.c
 */

char ** alias(int * pargc,
              char ** argv);

node * v_search(char * user);

node * h_search(node * head,
                char * str);

void load_alias(node * head,
                char * filename);

int recipients(node * h,
               char * p);

void strip_comments(char * p);

node * add_vert(node * head,
                char * str);

void add_horz(node * head,
              char * str);

node * pop(node * head);

/* Prototypes for functions defined in
deliver.c
 */

int deliver(int argc,
            char ** hostv,
            char ** userv,
            enum eform * formv,
            int * costv);

int return_notallowedmail(char * from);

int return_mail(char * from,
                char * fcommand);

void return_receiptmail(char ** from,int ,int);

/* Prototypes for functions defined in
getopt.c
 */

int getopt(int argc,
           char ** argv,
           char * opts);

/* Prototypes for functions defined in
getpath.c
 */

int getpath(char * key,
            char * path,
            int * cost);

/* Prototypes for functions defined in
headers.c
 */

enum eform parse(char * address,
                 char * domain,
                 char * user);

int build(char * domain,
          char * user,
          enum eform form,
          char * result);

int ssplit(register char * buf,
           int c,
           char ** ptr);

int islocal(char * addr,
            char * domain,
            char * user);

void spool(int argc,
           char ** argv);

void rline(char * from,
           char * retbuf);

void scanheaders(char * buf);

void compheaders(void);

int isheader(char * s);

int haveheaders(char * s);

int def_headers(int argc,
                char ** argv,
                char * from);

int def_date(void);

int def_mid(void);

int def_subject(void);

int def_from(char * from);

int def_to(int argc,
           char ** argv);

/* Prototypes for functions defined in
main.c
 */

int main(int argc,
         char ** argv);

/* Prototypes for functions defined in
map.c
 */

int map(int argc,
        char ** argv,
        char ** hostv,
        char ** userv,
        enum eform * formv,
        int * costv);

/* Prototypes for functions defined in
misc.c
 */

void log(char * command,
         char * from,
         long size);
void maillog(char *to_user,
             char *to_host,
				 char *from,
             long size,
             char okay);

FILE * record(char * command,
              char * from,
              long size);

int setdates(void);

char * arpadate(register char * ud);

char * postmaster(char * user);

int isuucp(char * str);

char * sform(enum eform form);

int getmynames(void);

long get_time(char *);

/* Prototypes for functions defined in
pw.c
 */

char * pwfnam(char * user);

char * pwuid(int uid);

char * tilde(char * user);

char * fullname(char * gecos);

pwlist * pwparse(void);

char *res_fname(char *);

/* Prototypes for functions defined in
resolve.c
 */

enum eform resolve(char * address,
                   char * domain,
                   char * user,
                   int * cost);

int route(char * domain,
          char * user,
          int look_smart,
          char * result,
          int * cost);

/* Prototypes for functions defined in
sysdep.c
 */

char * kill_bracket(char * );

struct passwd * getpwent(void);

struct passwd * getpwnam(char const * name);

int checkuid(char *name);

void set_programtype(void);

int getuid(void);

int getgid(void);

long getpid(void);

char * getloginname(void);

char * getrealname(char * );

void gethostname(char * , size_t );

void getdomainname(char * , size_t );

void getsmarthost(char * , size_t );

char * get_config(char * , char *,short );

void sleep(unsigned long );

void mktemp(char * );

void execvp(char * , char ** );

int my_system(char * , char * );

void print_error(enum eclass,char const * , ...);

char *mkfilename(const char *,const char *);

char *grep_toline(FILE *file,char *);

char *seqtoname (long seqNo,long count);

int getsequence (int bump);

/* Prototypes for functions defined in
bsmtp.c
 */

int write_bsmtp_prologue(FILE * , char * );

int write_bsmtp_epilogue(FILE * );

FILE * uncompress_stream(FILE * , char * );

int uncompress_file(char * , char * );

int convert_smtp(FILE * );

int check_site(char site[],enum edebug debug);

void hide_dot(char *,size_t);

int unbatch_smtp(char *,char);

int batch_smtp(char *,char *);
