maildirmisc.h
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:4k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. #ifndef maildirmisc_h
  2. #define maildirmisc_h
  3. /*
  4. ** Copyright 2000 Double Precision, Inc.
  5. ** See COPYING for distribution information.
  6. */
  7. #if HAVE_CONFIG_H
  8. #include "config.h"
  9. #endif
  10. #ifdef  __cplusplus
  11. extern "C" {
  12. #endif
  13. static const char maildirmisc_h_rcsid[]="$Id: maildirmisc.h,v 1.6 2000/02/25 00:24:45 mrsam Exp $";
  14. /*
  15. **
  16. ** Miscellaneous maildir-related code
  17. **
  18. */
  19. /* Some special folders */
  20. #define INBOX "INBOX"
  21. #define DRAFTS "Drafts"
  22. #define SENT "Sent"
  23. #define TRASH "Trash"
  24. #define SHAREDSUBDIR "shared-folders"
  25. char *maildir_folderdir(const char *, /* maildir */
  26. const char *); /* folder name */
  27. /* Returns the directory corresponding to foldername (foldername is
  28. ** checked to make sure that it's a valid name, else we set errno
  29. ** to EINVAL, and return (0).
  30. */
  31. char *maildir_filename(const char *, /* maildir */
  32. const char *, /* folder */
  33. const char *); /* filename */
  34. /*
  35. ** Builds the filename to this message, suitable for opening.
  36. ** If the file doesn't appear to be there, search the maildir to
  37. ** see if someone changed the flags, and return the current filename.
  38. */
  39. int maildir_safeopen(const char *, /* filename */
  40. int, /* mode */
  41. int); /* perm */
  42. /*
  43. ** Same arguments as open().  When we're accessing a shared maildir,
  44. ** prevent someone from playing cute and dumping a bunch of symlinks
  45. ** in there.  This function will open the indicate file only if the
  46. ** last component is not a symlink.
  47. ** This is implemented by opening the file with O_NONBLOCK (to prevent
  48. ** a DOS attack of someone pointing the symlink to a pipe, causing
  49. ** the open to hang), clearing O_NONBLOCK, then stat-int the file
  50. ** descriptor, lstating the filename, and making sure that dev/ino
  51. ** match.
  52. */
  53. int maildir_semisafeopen(const char *, /* filename */
  54. int, /* mode */
  55. int); /* perm */
  56. /*
  57. ** Same thing, except that we allow ONE level of soft link indirection,
  58. ** because we're reading from our own maildir, which points to the
  59. ** message in the sharable maildir.
  60. */
  61. void maildir_purgetmp(const char *); /* maildir */
  62. /* purges old stuff out of tmp */
  63. void maildir_purge(const char *, /* directory */
  64. unsigned); /* time_t to purge */
  65. void maildir_getnew(const char *, /* maildir */
  66. const char *); /* folder */
  67. /* move messages from new to cur */
  68. int maildir_deletefolder(const char *, /* maildir */
  69. const char *); /* folder */
  70. /* deletes a folder */
  71. int maildir_mddelete(const char *); /* delete a maildir folder by path */
  72. void maildir_list_sharable(const char *, /* maildir */
  73. void (*)(const char *, void *), /* callback function */
  74. void *); /* 2nd arg to callback func */
  75. /* list sharable folders */
  76. int maildir_shared_subscribe(const char *, /* maildir */
  77. const char *); /* folder */
  78. /* subscribe to a shared folder */
  79. void maildir_list_shared(const char *, /* maildir */
  80. void (*)(const char *, void *), /* callback function */
  81. void *); /* 2nd arg to the callback func */
  82. /* list subscribed folders */
  83. int maildir_shared_unsubscribe(const char *, /* maildir */
  84. const char *); /* folder */
  85. /* unsubscribe from a shared folder */
  86. char *maildir_shareddir(const char *, /* maildir */
  87. const char *); /* folder */
  88. /*
  89. ** Validate and return a path to a shared folder.  folderdir must be
  90. ** a name of a valid shared folder.
  91. */
  92. void maildir_shared_sync(const char *); /* maildir */
  93. /* "sync" the shared folder */
  94. int maildir_sharedisro(const char *); /* maildir */
  95. /* maildir is a shared read-only folder */
  96. int maildir_unlinksharedmsg(const char *); /* filename */
  97. /* Remove a message from a shared folder */
  98. /* Internal function that reads a symlink */
  99. char *maildir_getlink(const char *);
  100. #ifdef  __cplusplus
  101. }
  102. #endif
  103. #endif