path finding
This commit is contained in:
parent
33fa5fa3c0
commit
4ac6d11dca
18
os/files.c
18
os/files.c
@ -471,22 +471,32 @@ static Int exists_directory(USES_REGS1) {
|
|||||||
static Int is_absolute_file_name(USES_REGS1) { /* file_base_name(Stream,N) */
|
static Int is_absolute_file_name(USES_REGS1) { /* file_base_name(Stream,N) */
|
||||||
Term t = Deref(ARG1);
|
Term t = Deref(ARG1);
|
||||||
Atom at;
|
Atom at;
|
||||||
|
bool rc;
|
||||||
|
|
||||||
if (IsVarTerm(t)) {
|
if (IsVarTerm(t)) {
|
||||||
Yap_Error(INSTANTIATION_ERROR, t, "file_base_name/2");
|
Yap_Error(INSTANTIATION_ERROR, t, "file_base_name/2");
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
const char *buf = Yap_TextTermToText(t, NULL, 0, LOCAL_encoding);
|
const char *buf = Yap_TextTermToText(t, NULL, 0, LOCAL_encoding);
|
||||||
if (buf) {
|
if (buf) {
|
||||||
return Yap_IsAbsolutePath(buf);
|
rc = Yap_IsAbsolutePath(buf);
|
||||||
} else {
|
} else {
|
||||||
at = AtomOfTerm(t);
|
at = AtomOfTerm(t);
|
||||||
if (IsWideAtom(at)) {
|
if (IsWideAtom(at)) {
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
return PathIsRelativeW(RepAtom(at)->WStrOfAE);
|
rc = PathIsRelativeW(RepAtom(at)->WStrOfAE);
|
||||||
#else
|
#else
|
||||||
return RepAtom(at)->WStrOfAE[0] == '/';
|
rc = RepAtom(at)->WStrOfAE[0] == '/';
|
||||||
#endif
|
#endif
|
||||||
|
} else {
|
||||||
|
#if _WIN32
|
||||||
|
rc = PathIsRelative(RepAtom(at)->StrOfAE);
|
||||||
|
#else
|
||||||
|
rc = RepAtom(at)->StrOfAE[0] == '/';
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
freeBuffer( buf );
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user