From: Mark Andrews Date: Fri, 4 Jun 2004 02:19:13 +0000 (+0000) Subject: 1646. [bug] win32: logging file versions didn't work with X-Git-Tag: v9.2.3rc4^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a2a76103d427582008125749aff2540c61f9fb5;p=thirdparty%2Fbind9.git 1646. [bug] win32: logging file versions didn't work with non-UNC filenames. [RT#11486] --- diff --git a/CHANGES b/CHANGES index eecb68f9fed..72421c017c4 100644 --- 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] diff --git a/lib/isc/log.c b/lib/isc/log.c index ee48b00ac81..9235c6fed7d 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -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.