You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@apache.org on 2004/09/04 13:36:15 UTC
cvs commit: httpd-2.0/support rotatelogs.c
trawick 2004/09/04 04:36:14
Modified: . Tag: APACHE_2_0_BRANCH CHANGES STATUS
support Tag: APACHE_2_0_BRANCH rotatelogs.c
Log:
merge from 2.1-dev:
Add -l option to rotatelogs to let it use local time rather than
UTC.
PR: 24417
Submitted by: Ken Coar, Uli Zappe <uli ritual.org>
Reviewed by: trawick, nd, stoddard
Revision Changes Path
No revision
No revision
1.988.2.348 +3 -0 httpd-2.0/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/httpd-2.0/CHANGES,v
retrieving revision 1.988.2.347
retrieving revision 1.988.2.348
diff -u -r1.988.2.347 -r1.988.2.348
--- CHANGES 2 Sep 2004 11:18:44 -0000 1.988.2.347
+++ CHANGES 4 Sep 2004 11:36:13 -0000 1.988.2.348
@@ -1,5 +1,8 @@
Changes with Apache 2.0.51
+ *) Add -l option to rotatelogs to let it use local time rather than
+ UTC. PR 24417. [Ken Coar, Uli Zappe <uli ritual.org>]
+
*) mod_log_config: Fix a bug which prevented request completion time
from being logged for I_INSIST_ON_EXTRA_CYCLES_FOR_CLF_COMPLIANCE
processing. PR 29696. [Alois Treindl <alois astro.ch>]
1.751.2.1043 +1 -6 httpd-2.0/STATUS
Index: STATUS
===================================================================
RCS file: /home/cvs/httpd-2.0/STATUS,v
retrieving revision 1.751.2.1042
retrieving revision 1.751.2.1043
diff -u -r1.751.2.1042 -r1.751.2.1043
--- STATUS 3 Sep 2004 20:57:53 -0000 1.751.2.1042
+++ STATUS 4 Sep 2004 11:36:13 -0000 1.751.2.1043
@@ -104,11 +104,6 @@
native chars here and it will be converted later? (I'm not sure)
(2) I'd put out (null) only if val is NULL, not if it's empty.
- *) Add -l option to rotatelogs to let it use local time rather than
- UTC. PR 24417. [Ken Coar, Uli Zappe <uli ritual.org>]
- support/rotatelogs.c: r1.33, r1.34, r1.35
- +1: trawick, nd, stoddard
-
*) Fix the handling of URIs containing %2F when AllowEncodedSlashes
is enabled. Previously, such urls would still be rejected with
404.
No revision
No revision
1.27.2.5 +43 -11 httpd-2.0/support/rotatelogs.c
Index: rotatelogs.c
===================================================================
RCS file: /home/cvs/httpd-2.0/support/rotatelogs.c,v
retrieving revision 1.27.2.4
retrieving revision 1.27.2.5
diff -u -r1.27.2.4 -r1.27.2.5
--- rotatelogs.c 9 Feb 2004 20:59:49 -0000 1.27.2.4
+++ rotatelogs.c 4 Sep 2004 11:36:14 -0000 1.27.2.5
@@ -23,6 +23,13 @@
* Ported to APR by Mladen Turk <mt...@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!
+ *
*/
@@ -60,19 +67,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 +115,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 +128,10 @@
}
}
else {
- if (argc >= 4) {
- utc_offset = atoi(argv[3]) * 60;
+ 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,9 +146,20 @@
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) {
+ /*
+ * Check for our UTC offset every time through the loop, since
+ * it might change if there's a switch between standard and
+ * daylight savings time.
+ */
+ if (use_localtime) {
+ apr_time_exp_t lt;
+ apr_time_exp_lt(<, apr_time_now());
+ utc_offset = lt.tm_gmtoff;
+ }
now = (int)(apr_time_now() / APR_USEC_PER_SEC) + utc_offset;
if (nLogFD != NULL && now >= tLogEnd) {
nLogFDprev = nLogFD;
@@ -158,10 +188,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);