path.c: Added path_isparent function.
This commit is contained in:
parent
171c764691
commit
9e9321dc65
3 changed files with 26 additions and 0 deletions
14
src/path.c
14
src/path.c
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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, ...);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue