aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/natFile.cc
diff options
context:
space:
mode:
authorAdam Megacz <adam@xwt.org>2002-02-12 05:52:33 +0000
committerAdam Megacz <megacz@gcc.gnu.org>2002-02-12 05:52:33 +0000
commit8a434a3691b66ee64081321e6471c0510ea932a6 (patch)
tree95eddcf04d643d2d8339b6ca15ee8fd0615a831a /libjava/java/io/natFile.cc
parentc0e4074dddcadc47718aa015e12efceab5a6a5b8 (diff)
downloadgcc-8a434a3691b66ee64081321e6471c0510ea932a6.zip
gcc-8a434a3691b66ee64081321e6471c0510ea932a6.tar.gz
gcc-8a434a3691b66ee64081321e6471c0510ea932a6.tar.bz2
natFilePosix.cc: Copied this from natFile.cc.
2002-02-12 Adam Megacz <adam@xwt.org> * java/io/natFilePosix.cc: Copied this from natFile.cc. * java/io/natFile.cc: Removed from repository. * configure.in: Added AC_LINK_FILES for natFile${PLATFORM}. From-SVN: r49700
Diffstat (limited to 'libjava/java/io/natFile.cc')
-rw-r--r--libjava/java/io/natFile.cc314
1 files changed, 0 insertions, 314 deletions
diff --git a/libjava/java/io/natFile.cc b/libjava/java/io/natFile.cc
deleted file mode 100644
index cd04571..0000000
--- a/libjava/java/io/natFile.cc
+++ /dev/null
@@ -1,314 +0,0 @@
-// natFile.cc - Native part of File class for POSIX.
-
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdlib.h>
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#include <string.h>
-#include <utime.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-#include <java/io/File.h>
-#include <java/io/IOException.h>
-#include <java/util/ArrayList.h>
-#include <java/lang/String.h>
-#include <java/io/FilenameFilter.h>
-#include <java/io/FileFilter.h>
-#include <java/lang/System.h>
-
-jboolean
-java::io::File::_access (jint query)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
- JvAssert (query == READ || query == WRITE || query == EXISTS);
-#ifdef HAVE_ACCESS
- int mode;
- if (query == READ)
- mode = R_OK;
- else if (query == WRITE)
- mode = W_OK;
- else
- mode = F_OK;
- return ::access (buf, mode) == 0;
-#else
- return false;
-#endif
-}
-
-jboolean
-java::io::File::_stat (jint query)
-{
- 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;
-
- JvAssert (query == DIRECTORY || query == ISFILE);
- jboolean r = S_ISDIR (sb.st_mode);
- return query == DIRECTORY ? r : ! r;
-#else
- return false;
-#endif
-}
-
-jlong
-java::io::File::attr (jint query)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
-#ifdef HAVE_STAT
- struct stat sb;
- // FIXME: not sure about return value here.
- if (::stat (buf, &sb))
- return 0;
-
- JvAssert (query == MODIFIED || query == LENGTH);
- return query == MODIFIED ? (jlong)sb.st_mtime * 1000 : sb.st_size;
-#else
- // There's no good choice here.
- return 23;
-#endif
-}
-
-jstring
-java::io::File::getCanonicalPath (void)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- char buf2[MAXPATHLEN];
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
-#ifdef HAVE_REALPATH
- if (realpath (buf, buf2) == NULL)
- throw new IOException (JvNewStringLatin1 (strerror (errno)));
-
- // FIXME: what encoding to assume for file names? This affects many
- // calls.
- return JvNewStringUTF (buf2);
-#else
- return JvNewStringUTF (buf);
-#endif
-}
-
-jboolean
-java::io::File::isAbsolute (void)
-{
- return path->charAt(0) == '/';
-}
-
-jobjectArray
-java::io::File::performList (java::io::FilenameFilter *filter,
- java::io::FileFilter *fileFilter,
- java::lang::Class *result_type)
-{
- /* Some systems have dirent.h, but no directory reading functions like
- opendir. */
-#if defined(HAVE_DIRENT_H) && defined(HAVE_OPENDIR)
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
- DIR *dir = opendir (buf);
- if (! dir)
- return NULL;
-
- java::util::ArrayList *list = new java::util::ArrayList ();
- struct dirent *d;
-#ifdef HAVE_READDIR_R
- int name_max = pathconf (buf, _PC_NAME_MAX);
- char dbuf[sizeof (struct dirent) + name_max + 1];
- while (readdir_r (dir, (struct dirent *) dbuf, &d) == 0 && d != NULL)
-#else /* HAVE_READDIR_R */
- while ((d = readdir (dir)) != NULL)
-#endif /* HAVE_READDIR_R */
- {
- // Omit "." and "..".
- if (d->d_name[0] == '.'
- && (d->d_name[1] == '\0'
- || (d->d_name[1] == '.' && d->d_name[2] == '\0')))
- continue;
-
- jstring name = JvNewStringUTF (d->d_name);
- if (filter && ! filter->accept(this, name))
- continue;
-
- if (result_type == &java::io::File::class$)
- {
- java::io::File *file = new java::io::File (this, name);
- if (fileFilter && ! fileFilter->accept(file))
- continue;
-
- list->add(file);
- }
- else
- list->add(name);
- }
-
- closedir (dir);
-
- jobjectArray ret = JvNewObjectArray (list->size(), result_type, NULL);
- list->toArray(ret);
- return ret;
-#else /* HAVE_DIRENT_H && HAVE_OPENDIR */
- return NULL;
-#endif /* HAVE_DIRENT_H && HAVE_OPENDIR */
-}
-
-jboolean
-java::io::File::performMkdir (void)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
-#ifdef HAVE_MKDIR
- return ::mkdir (buf, 0755) == 0;
-#else
- return false;
-#endif
-}
-
-jboolean
-java::io::File::performSetReadOnly (void)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
-#if defined (HAVE_STAT) && defined (HAVE_CHMOD)
- struct stat sb;
- if (::stat (buf, &sb))
- return false;
-
- if (::chmod(buf, sb.st_mode & 0555))
- return false;
- return true;
-#else
- return false;
-#endif
-}
-
-JArray< ::java::io::File *>*
-java::io::File::performListRoots ()
-{
- ::java::io::File *f = new ::java::io::File (JvNewStringLatin1 ("/"));
- JArray<java::io::File *> *unixroot
- = reinterpret_cast <JArray<java::io::File *>*>
- (JvNewObjectArray (1, &java::io::File::class$, f));
- elements (unixroot) [0] = f;
- return unixroot;
-}
-
-jboolean
-java::io::File::performRenameTo (File *dest)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
- char *buf2
- = (char *) __builtin_alloca (JvGetStringUTFLength (dest->path) + 1);
- total = JvGetStringUTFRegion (dest->path, 0, dest->path->length(), buf2);
- buf2[total] = '\0';
-
-#ifdef HAVE_RENAME
- return ::rename (buf, buf2) == 0;
-#else
- return false;
-#endif
-}
-
-jboolean
-java::io::File::performSetLastModified (jlong time)
-{
-#ifdef HAVE_UTIME
- utimbuf tb;
-
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
- tb.actime = time / 1000;
- tb.modtime = time / 1000;
- return ::utime (buf, &tb);
-#else
- return false;
-#endif
-}
-
-jboolean
-java::io::File::performCreate (void)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
- int fd = ::open (buf, O_CREAT | O_EXCL, 0644);
-
- if (fd < 0)
- {
- if (errno == EEXIST)
- return false;
- throw new IOException (JvNewStringLatin1 (strerror (errno)));
- }
- else
- {
- ::close (fd);
- return true;
- }
-}
-
-jboolean
-java::io::File::performDelete (void)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (path) + 1);
- jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
- buf[total] = '\0';
-
-#ifdef HAVE_UNLINK
-#ifdef HAVE_RMDIR
- if (! ::rmdir (buf))
- return true;
- if (errno == ENOTDIR)
-#endif // HAVE_RMDIR
- return ::unlink (buf) == 0;
-#endif // HAVE_UNLINK
- return false;
-}
-
-void
-java::io::File::init_native ()
-{
- maxPathLen = MAXPATHLEN;
- caseSensitive = true;
-}