From ba35e9924e95c45f8ae536f453b9064740e49841 Mon Sep 17 00:00:00 2001 From: Andreas Gustafsson Date: Mon, 16 Jul 2001 18:33:02 +0000 Subject: [PATCH] added isc_file_ischdiridempotent() --- lib/isc/include/isc/file.h | 9 ++++++++- lib/isc/unix/file.c | 12 +++++++++++- lib/isc/win32/file.c | 17 ++++++++++++++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/isc/include/isc/file.h b/lib/isc/include/isc/file.h index 3870ca238f..649fef4574 100644 --- a/lib/isc/include/isc/file.h +++ b/lib/isc/include/isc/file.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: file.h,v 1.23 2001/07/16 17:22:16 gson Exp $ */ +/* $Id: file.h,v 1.24 2001/07/16 18:33:00 gson Exp $ */ #ifndef ISC_FILE_H #define ISC_FILE_H 1 @@ -185,6 +185,13 @@ isc_file_iscurrentdir(const char *filename); * Return ISC_TRUE iff the given file name is the current directory ("."). */ +isc_boolean_t +isc_file_ischdiridempotent(const char *filename); +/* + * Return ISC_TRUE if calling chdir(filename) multiple times will give + * the same result as calling it once. + */ + const char * isc_file_basename(const char *filename); /* diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c index e599986e10..da00282812 100644 --- a/lib/isc/unix/file.c +++ b/lib/isc/unix/file.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: file.c,v 1.37 2001/07/16 17:26:44 gson Exp $ */ +/* $Id: file.c,v 1.38 2001/07/16 18:33:01 gson Exp $ */ #include @@ -261,6 +261,16 @@ isc_file_iscurrentdir(const char *filename) { return (ISC_TF(filename[0] == '.' && filename[1] == '\0')); } +isc_boolean_t +isc_file_ischdiridempotent(const char *filename) { + REQUIRE(filename != NULL); + if (isc_file_isabsolute(filename)) + return (ISC_TRUE); + if (isc_file_iscurrentdir(filename)) + return (ISC_TRUE); + return (ISC_FALSE); +} + const char * isc_file_basename(const char *filename) { char *s; diff --git a/lib/isc/win32/file.c b/lib/isc/win32/file.c index d1ef5d9a8f..d6335e297f 100644 --- a/lib/isc/win32/file.c +++ b/lib/isc/win32/file.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: file.c,v 1.18 2001/07/16 17:22:17 gson Exp $ */ +/* $Id: file.c,v 1.19 2001/07/16 18:33:02 gson Exp $ */ #include @@ -402,6 +402,21 @@ isc_file_iscurrentdir(const char *filename) { return (ISC_TF(filename[0] == '.' && filename[1] == '\0')); } +isc_boolean_t +isc_file_ischdiridempotent(const char *filename) { + REQUIRE(filename != NULL); + + if (isc_file_isabsolute(filename)) + return (ISC_TRUE); + if (filename[0] == '\\') + return (ISC_TRUE); + if (filename[0] == '/') + return (ISC_TRUE); + if (isc_file_iscurrentdir(filename)) + return (ISC_TRUE); + return (ISC_FALSE); +} + const char * isc_file_basename(const char *filename) { char *s;