boolean x_inq_xfs(const char *path, boolean *casesens) { long c, t, csens; char p[256]; strcpy(p, path); if (*(p + strlen(p) - 1) != '\\') strcat(p, "\\"); c = Dpathconf(p, DP_CASE); t = Dpathconf(p, DP_TRUNC); csens = !(c == DP_NOSENSITIVE && t == DP_DOSTRUNC); if (casesens) *casesens = csens; return (c >= 0 && csens); }
long __pathconf (const char *_path, int var) { long r; char pathbuf[PATH_MAX]; char* path = (char*) _path; if (!__libc_unix_names) { path = pathbuf; _unx2dos (_path, path, sizeof (pathbuf)); } if ((r = Dpathconf(path, var)) != -ENOSYS) { if (var == _PC_NO_TRUNC) return r ? -1 : 0; return r; } switch(var) { case _PC_LAST: return 4; case _PC_IOPEN_MAX: return 45; /* -ish, maybe... */ case _PC_LINK_MAX: return 1; case _PC_PATH_MAX: return 128; /* I'm sure I read that this is 64 in TOS 1.0 */ case _PC_NAME_MAX: return 12; case _PC_NO_TRUNC: return -1; /* file names are automatically truncated */ case _MINT_PC_NAME_CASE: return 1; /* case-insensitive, changing to upper case (or lower case) MJK */ default: /* note that _PC_PIPE_BUF is invalid */ /* The only way to determine whether -1 signifies an error or is "no limit", is to set errno to 0, and check for a possible error after the call again. */ __set_errno (EINVAL); return -1; } }