Archived
1
0
Fork 0

path.c: Added path_isparent function.

This commit is contained in:
Henrik Hautakoski 2011-02-15 16:23:54 +01:00
parent 171c764691
commit 9e9321dc65
3 changed files with 26 additions and 0 deletions

View file

@ -68,6 +68,20 @@ int is_dir(const char *path) {
return 0;
}
int path_isparent(const char *path, const char *parent) {
if (*path++ != '/' || *parent++ != '/')
return 0;
while(*path) {
if (*parent == '\0')
return *path == '/' || *(path-1) == '/';
if (*path++ != *parent++)
break;
}
return 0;
}
const char* dirname_s(const char *path, int slash) {
static strbuf_t sb = STRBUF_INIT;

View file

@ -20,6 +20,8 @@ int is_file(const char *path);
int is_dir(const char *path);
int path_isparent(const char *path, const char *parent);
const char* dirname_s(const char *path, int slash);
const char* mkpath(const char *fmt, ...);

View file

@ -117,6 +117,15 @@ void test_dirname() {
assert_string(dirname_s(data[i][0], 0), data[i][1]);
}
void test_path_isparent() {
assert(path_isparent("/dir1/dir2/", "/dir1/") != 0);
assert(path_isparent("/dir1/dir2/", "/dir1") != 0);
assert(path_isparent("/dir1/dir2/", "/dir") == 0);
assert(path_isparent("/dir1/dir2/", "/dir1/dir2/sub/") == 0);
assert(path_isparent("/dir1/dir2/", "/var/") == 0);
}
int main(int argc, char *argv[]) {
test_isabspath();
@ -126,6 +135,7 @@ int main(int argc, char *argv[]) {
test_mkpath();
test_basename();
test_dirname();
test_path_isparent();
return 0;
}