logrotate.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifndef H_LOGROTATE
  2. #define H_LOGROTATE
  3. #include <sys/types.h>
  4. #include "queue.h"
  5. #include <glob.h>
  6. /* needed for basename() on OS X */
  7. #if HAVE_LIBGEN_H
  8. # include <libgen.h>
  9. #endif
  10. #define LOG_FLAG_COMPRESS (1 << 0)
  11. #define LOG_FLAG_CREATE (1 << 1)
  12. #define LOG_FLAG_IFEMPTY (1 << 2)
  13. #define LOG_FLAG_DELAYCOMPRESS (1 << 3)
  14. #define LOG_FLAG_COPYTRUNCATE (1 << 4)
  15. #define LOG_FLAG_MISSINGOK (1 << 5)
  16. #define LOG_FLAG_MAILFIRST (1 << 6)
  17. #define LOG_FLAG_SHAREDSCRIPTS (1 << 7)
  18. #define LOG_FLAG_COPY (1 << 8)
  19. #define LOG_FLAG_DATEEXT (1 << 9)
  20. #define LOG_FLAG_SHRED (1 << 10)
  21. #define LOG_FLAG_SU (1 << 11)
  22. #define LOG_FLAG_DATEYESTERDAY (1 << 12)
  23. #define LOG_FLAG_OLDDIRCREATE (1 << 13)
  24. #define LOG_FLAG_TMPFILENAME (1 << 14)
  25. #define LOG_FLAG_DATEHOURAGO (1 << 15)
  26. #define NO_MODE ((mode_t) -1)
  27. #define NO_UID ((uid_t) -1)
  28. #define NO_GID ((gid_t) -1)
  29. #define NO_FORCE_ROTATE 0
  30. #define FORCE_ROTATE 1
  31. #ifdef HAVE_LIBSELINUX
  32. #define WITH_SELINUX 1
  33. #endif
  34. #ifdef HAVE_LIBACL
  35. #define WITH_ACL 1
  36. #endif
  37. enum criterium {
  38. ROT_HOURLY,
  39. ROT_DAYS,
  40. ROT_WEEKLY,
  41. ROT_MONTHLY,
  42. ROT_YEARLY,
  43. ROT_SIZE
  44. };
  45. struct logInfo {
  46. char *pattern;
  47. char **files;
  48. int numFiles;
  49. char *oldDir;
  50. enum criterium criterium;
  51. int weekday; /* used by ROT_WEEKLY only */
  52. off_t threshold;
  53. off_t maxsize;
  54. off_t minsize;
  55. int rotateCount;
  56. int rotateMinAge;
  57. int rotateAge;
  58. int logStart;
  59. char *pre, *post, *first, *last, *preremove;
  60. char *logAddress;
  61. char *extension;
  62. char *addextension;
  63. char *compress_prog;
  64. char *uncompress_prog;
  65. char *compress_ext;
  66. char *dateformat; /* specify format for strftime (for dateext) */
  67. int flags;
  68. int shred_cycles; /* if !=0, pass -n shred_cycles to GNU shred */
  69. mode_t createMode; /* if any/all of these are -1, we use the */
  70. uid_t createUid; /* attributes from the log file just rotated */
  71. gid_t createGid;
  72. uid_t suUid; /* switch user to this uid and group to this gid */
  73. gid_t suGid;
  74. mode_t olddirMode;
  75. uid_t olddirUid;
  76. uid_t olddirGid;
  77. /* these are at the end so they end up nil */
  78. const char **compress_options_list;
  79. int compress_options_count;
  80. TAILQ_ENTRY(logInfo) list;
  81. };
  82. TAILQ_HEAD(logInfoHead, logInfo) logs;
  83. extern int numLogs;
  84. extern int debug;
  85. int switch_user(uid_t user, gid_t group);
  86. int switch_user_back(void);
  87. int readAllConfigPaths(const char **paths);
  88. #if !defined(asprintf) && !defined(_FORTIFY_SOURCE)
  89. int asprintf(char **string_ptr, const char *format, ...);
  90. #endif
  91. #endif
  92. /* vim: set et sw=4 ts=4: */