You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by co...@apache.org on 2004/06/11 23:43:58 UTC
cvs commit: httpd-2.0/support rotatelogs.c
coar 2004/06/11 14:43:58
Modified: support rotatelogs.c
Log:
add "-l" option to indicate interval is based on localtime not gmt
Revision Changes Path
1.33 +39 -11 httpd-2.0/support/rotatelogs.c
Index: rotatelogs.c
===================================================================
RCS file: /home/cvs/httpd-2.0/support/rotatelogs.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -u -r1.32 -r1.33
--- rotatelogs.c 9 Feb 2004 20:40:52 -0000 1.32
+++ rotatelogs.c 11 Jun 2004 21:43:58 -0000 1.33
@@ -23,6 +23,13 @@
* Ported to APR by Mladen Turk <mturk mappingsoft.com>
*
* 23 Sep 2001
+ *
+ * -l option added 2004-06-11
+ *
+ * -l causes the use of local time rather than GMT as the base for the
+ * interval. NB: Using -l in an environment which changes the GMT offset
+ * (such as for BST or DST) can lead to unpredictable results!
+ *
*/
@@ -51,6 +58,7 @@
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
+int gmtoffset(void);
int main (int argc, const char * const argv[])
{
@@ -60,19 +68,31 @@
int nMessCount = 0;
apr_size_t nRead, nWrite;
int use_strftime = 0;
+ int use_localtime = 0;
int now = 0;
const char *szLogRoot;
apr_file_t *f_stdin, *nLogFD = NULL, *nLogFDprev = NULL;
apr_pool_t *pool;
char *ptr = NULL;
+ int argBase = 0;
+ int argFile = 1;
+ int argIntv = 2;
+ int argOffset = 3;
apr_app_initialize(&argc, &argv, NULL);
atexit(apr_terminate);
apr_pool_create(&pool, NULL);
- if (argc < 3 || argc > 4) {
+ if ((argc > 2) && (strcmp(argv[1], "-l") == 0)) {
+ argBase++;
+ argFile += argBase;
+ argIntv += argBase;
+ argOffset += argBase;
+ use_localtime = 1;
+ }
+ if (argc < (argBase + 3) || argc > (argBase + 4)) {
fprintf(stderr,
- "Usage: %s <logfile> <rotation time in seconds> "
+ "Usage: %s [-l] <logfile> <rotation time in seconds> "
"[offset minutes from UTC] or <rotation size in megabytes>\n\n",
argv[0]);
#ifdef OS2
@@ -96,12 +116,12 @@
exit(1);
}
- szLogRoot = argv[1];
+ szLogRoot = argv[argFile];
- ptr = strchr (argv[2], 'M');
+ ptr = strchr(argv[argIntv], 'M');
if (ptr) {
if (*(ptr+1) == '\0') {
- sRotation = atoi(argv[2]) * 1048576;
+ sRotation = atoi(argv[argIntv]) * 1048576;
}
if (sRotation == 0) {
fprintf(stderr, "Invalid rotation size parameter\n");
@@ -109,10 +129,15 @@
}
}
else {
- if (argc >= 4) {
- utc_offset = atoi(argv[3]) * 60;
+ if (use_localtime) {
+ apr_time_exp_t lt;
+ apr_time_exp_lt(<, apr_time_now());
+ utc_offset = lt.tm_gmtoff;
+ }
+ else if (argc >= (argBase + 4)) {
+ utc_offset = atoi(argv[argOffset]) * 60;
}
- tRotation = atoi(argv[2]);
+ tRotation = atoi(argv[argIntv]);
if (tRotation <= 0) {
fprintf(stderr, "Rotation time must be > 0\n");
exit(6);
@@ -127,8 +152,9 @@
for (;;) {
nRead = sizeof(buf);
- if (apr_file_read(f_stdin, buf, &nRead) != APR_SUCCESS)
+ if (apr_file_read(f_stdin, buf, &nRead) != APR_SUCCESS) {
exit(3);
+ }
if (tRotation) {
now = (int)(apr_time_now() / APR_USEC_PER_SEC) + utc_offset;
if (nLogFD != NULL && now >= tLogEnd) {
@@ -158,10 +184,12 @@
if (nLogFD == NULL) {
int tLogStart;
- if (tRotation)
+ if (tRotation) {
tLogStart = (now / tRotation) * tRotation;
- else
+ }
+ else {
tLogStart = (int)apr_time_sec(apr_time_now());
+ }
if (use_strftime) {
apr_time_t tNow = apr_time_from_sec(tLogStart);
Re: cvs commit: httpd-2.0/support rotatelogs.c
Posted by Jeff Trawick <tr...@attglobal.net>.
coar@apache.org wrote:
> coar 2004/06/11 14:43:58
>
> Modified: support rotatelogs.c
> Log:
> add "-l" option to indicate interval is based on localtime not gmt
Ken, please see comments about your patch at
http://issues.apache.org/bugzilla/show_bug.cgi?id=24417
Re: cvs commit: httpd-2.0/support rotatelogs.c
Posted by Jeff Trawick <tr...@attglobal.net>.
coar@apache.org wrote:
> coar 2004/06/11 14:43:58
>
> Modified: support rotatelogs.c
> Log:
> add "-l" option to indicate interval is based on localtime not gmt
a CHANGES entry would be good
also, I guess this is exactly the feature requested/implemented in PR 24417?
http://issues.apache.org/bugzilla/show_bug.cgi?id=24417