common.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "sys.h"
  2. /* format of REMOTE FROM lines */
  3. extern char *REMFROMRE;
  4. extern int REMSENDERMATCH;
  5. extern int REMDATEMATCH;
  6. extern int REMSYSMATCH;
  7. /* format of mailbox FROM lines */
  8. #define IS_HEADER(p) ((p)[0]=='F'&&(p)[1]=='r'&&(p)[2]=='o'&&(p)[3]=='m'&&(p)[4]==' ')
  9. #define IS_TRAILER(p) ((p)[0]=='m'&&(p)[1]=='o'&&(p)[2]=='r'&&(p)[3]=='F'&&(p)[4]=='\n')
  10. extern char *FROMRE;
  11. extern int SENDERMATCH;
  12. extern int DATEMATCH;
  13. enum
  14. {
  15. Elemlen= 28,
  16. Errlen= 128,
  17. Pathlen= 256,
  18. };
  19. /*
  20. * routines in mail.c
  21. */
  22. extern int print_header(Biobuf*, char*, char*);
  23. extern int print_remote_header(Biobuf*, char*, char*, char*);
  24. extern int parse_header(char*, String*, String*);
  25. /*
  26. * routines in aux.c
  27. */
  28. extern String *abspath(char*, char*, String*);
  29. extern String *mboxpath(char*, char*, String*, int);
  30. extern char *basename(char*);
  31. extern int delivery_status(String*);
  32. extern void append_match(Resub*, String*, int);
  33. extern int shellchars(char*);
  34. extern String* escapespecial(String*);
  35. extern String* unescapespecial(String*);
  36. extern int returnable(char*);
  37. /* in copymessage */
  38. extern int appendfiletombox(int, int);
  39. extern int appendfiletofile(int, int);
  40. /* mailbox types */
  41. #define MF_NORMAL 0
  42. #define MF_PIPE 1
  43. #define MF_FORWARD 2
  44. #define MF_NOMBOX 3
  45. #define MF_NOTMBOX 4
  46. /* a pipe between parent and child*/
  47. typedef struct {
  48. Biobuf bb;
  49. Biobuf *fp; /* parent process end*/
  50. int fd; /* child process end*/
  51. } stream;
  52. /* a child process*/
  53. typedef struct process{
  54. stream *std[3]; /* standard fd's*/
  55. int pid; /* process identifier*/
  56. int status; /* exit status*/
  57. } process;
  58. extern stream *instream(void);
  59. extern stream *outstream(void);
  60. extern void stream_free(stream*);
  61. extern process *noshell_proc_start(char**, stream*, stream*, stream*, int, char*);
  62. extern process *proc_start(char*, stream*, stream*, stream*, int, char*);
  63. extern int proc_wait(process*);
  64. extern int proc_free(process*);
  65. extern int proc_kill(process*);
  66. /* tell compiler we're using a value so it won't complain */
  67. #define USE(x) if(x)