]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1646. [bug] win32: logging file versions didn't work with
authorMark Andrews <marka@isc.org>
Fri, 4 Jun 2004 02:19:13 +0000 (02:19 +0000)
committerMark Andrews <marka@isc.org>
Fri, 4 Jun 2004 02:19:13 +0000 (02:19 +0000)
                        non-UNC filenames.  [RT#11486]

CHANGES
lib/isc/log.c

diff --git a/CHANGES b/CHANGES
index eecb68f9fed83dba456246f4f120e06a57ceb3f3..72421c017c439a132d31aa43016d13e0a2250a90 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+1646.  [bug]           win32: logging file versions didn't work with
+                       non-UNC filenames.  [RT#11486]
+
 1643.  [bug]           dns_db_closeversion() could leak memory / node
                        references. [RT #11163]
 
index ee48b00ac8163b4fb974174bd3ae7937d71b54c9..9235c6fed7d2e19ef08ea9d735fe0d5918e341c6 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: log.c,v 1.70.2.12 2004/04/10 04:30:05 marka Exp $ */
+/* $Id: log.c,v 1.70.2.13 2004/06/04 02:19:13 marka Exp $ */
 
 /* Principal Authors: DCL */
 
@@ -1139,6 +1139,10 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) {
        unsigned int basenamelen;
        isc_dir_t dir;
        isc_result_t result;
+       char sep = '/';
+#ifdef _WIN32
+       char *basename2;
+#endif
 
        REQUIRE(channel->type == ISC_LOG_TOFILE);
 
@@ -1146,7 +1150,15 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) {
         * It is safe to DE_CONST the file.name because it was copied
         * with isc_mem_strdup in isc_log_createchannel.
         */
-       basename = strrchr(FILE_NAME(channel), '/');
+       basename = strrchr(FILE_NAME(channel), sep);
+#ifdef _WIN32
+       basename2 = strrchr(FILE_NAME(channel), '\\');
+       if ((basename != NULL && basename2 != NULL && basename2 > basename) ||
+           (basename == NULL && basename2 != NULL)) {
+               basename = basename2;
+               sep = '\\';
+       }
+#endif
        if (basename != NULL) {
                *basename++ = '\0';
                dirname = FILE_NAME(channel);
@@ -1163,7 +1175,7 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) {
         * Replace the file separator if it was taken out.
         */
        if (basename != FILE_NAME(channel))
-               *(basename - 1) = '/';
+               *(basename - 1) = sep;
 
        /*
         * Return if the directory open failed.