diff options
Diffstat (limited to 'libjava/java/io/natFilePosix.cc')
-rw-r--r-- | libjava/java/io/natFilePosix.cc | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/libjava/java/io/natFilePosix.cc b/libjava/java/io/natFilePosix.cc index f9fe78ef203..d6b106eaefe 100644 --- a/libjava/java/io/natFilePosix.cc +++ b/libjava/java/io/natFilePosix.cc @@ -1,6 +1,6 @@ // natFile.cc - Native part of File class for POSIX. -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation This file is part of libgcj. @@ -26,6 +26,10 @@ details. */ #include <string.h> #include <utime.h> +#ifndef MAXPATHLEN +# define MAXPATHLEN 1024 +#endif + #include <gcj/cni.h> #include <jvm.h> #include <java/io/File.h> @@ -36,6 +40,10 @@ details. */ #include <java/io/FileFilter.h> #include <java/lang/System.h> +#ifdef _SCO_DS +# undef HAVE_READDIR_R +#endif + jboolean java::io::File::_access (jint query) { @@ -60,14 +68,14 @@ java::io::File::_access (jint query) jboolean java::io::File::_stat (jint query) { + if (query == ISHIDDEN) + return getName()->charAt(0) == '.'; + +#ifdef HAVE_STAT char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1); jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); buf[total] = '\0'; - if (query == ISHIDDEN) - return (getName()->charAt(0) == '.'); - -#ifdef HAVE_STAT struct stat sb; if (::stat (buf, &sb)) return false; @@ -131,7 +139,7 @@ java::io::File::getCanonicalPath (void) jboolean java::io::File::isAbsolute (void) { - return path->charAt(0) == '/'; + return path->length() > 0 && path->charAt(0) == '/'; } jobjectArray |