static void test_get_parent_directory_copy(void **state) { char *out; #ifndef NT /* unix, will fail on windows because of IsFileSep */ out = GetParentDirectoryCopy("/some/path/here"); assert_string_equal(out, "/some/path"); free(out); out = GetParentDirectoryCopy("/some/path/here/dir/"); assert_string_equal(out, "/some/path/here/dir"); free(out); out = GetParentDirectoryCopy("/some/path/here/dir/."); assert_string_equal(out, "/some/path/here/dir"); free(out); out = GetParentDirectoryCopy("/some"); assert_string_equal(out, "/"); free(out); #else /* NT */ /* windows, will fail on unix because of IsFileSep */ out = GetParentDirectoryCopy("c:\\some\\path with space\\here and now"); assert_string_equal(out, "c:\\some\\path with space"); free(out); out = GetParentDirectoryCopy("c:\\some"); assert_string_equal(out, "c:\\"); free(out); out = GetParentDirectoryCopy("\\\\some\\path"); assert_string_equal(out, "\\\\some"); free(out); out = GetParentDirectoryCopy("\\\\some"); assert_string_equal(out, "\\\\"); free(out); #endif /* __MINGW32__ */ }
int MakeParentDirectory2(char *parentandchild, int force, bool enforce_promise) { if(enforce_promise) { return MakeParentDirectory(parentandchild, force); } char *parent_dir = GetParentDirectoryCopy(parentandchild); if (parent_dir) { bool parent_exists = IsDir(parent_dir); free(parent_dir); return parent_exists; } else { return false; } }