4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id: rotate.c,v 1.11 2010/07/16 11:04:10 james Exp $";
13 * Revision 1.11 2010/07/16 11:04:10 james
14 * ignore tedious return values
16 * Revision 1.10 2008/03/07 13:16:02 james
17 * *** empty log message ***
19 * Revision 1.9 2008/03/07 12:37:04 james
20 * *** empty log message ***
22 * Revision 1.8 2008/03/06 01:41:48 james
23 * *** empty log message ***
25 * Revision 1.7 2008/03/03 18:16:16 james
26 * *** empty log message ***
28 * Revision 1.6 2008/03/03 06:30:15 staffcvs
29 * *** empty log message ***
31 * Revision 1.5 2008/03/03 06:26:05 staffcvs
32 * *** empty log message ***
34 * Revision 1.4 2008/03/03 06:22:51 james
35 * *** empty log message ***
37 * Revision 1.3 2008/03/03 06:20:14 james
38 * *** empty log message ***
40 * Revision 1.2 2008/03/03 06:04:42 james
41 * *** empty log message ***
43 * Revision 1.1 2008/03/03 06:04:18 james
44 * *** empty log message ***
51 #define ROTATE_IF_OVER (4*1024*1024)
52 #define NUM_FILES_TO_KEEP 10
56 rotate_gzip (char *file)
68 result = daemon (1, 0);
69 execlp ("gzip", "gzip", file, (char *) 0);
81 i = strlen (file) + 32;
85 for (i = NUM_FILES_TO_KEEP; i > 0; --i) {
86 sprintf (buf1, "%s.%d", file, i - 1);
87 sprintf (buf2, "%s.%d", file, i);
90 sprintf (buf1, "%s.%d.gz", file, i - 1);
91 sprintf (buf2, "%s.%d.gz", file, i);
95 sprintf (buf1, "%s.%d", file, 0);
98 sprintf (buf1, "%s.%d", file, GZIP_AFTER);
100 if (!access (buf1, R_OK))
110 rotate_check (char *file)
115 if (stat (file, &st))
117 if (st.st_size <= ROTATE_IF_OVER)