diff options
author | Adam Megacz <adam@xwt.org> | 2002-02-12 01:54:18 +0000 |
---|---|---|
committer | Adam Megacz <megacz@gcc.gnu.org> | 2002-02-12 01:54:18 +0000 |
commit | 27fa520dc722b9044c303f4ba9a88a57dabd0501 (patch) | |
tree | 8ed587c280d539be0d402915941cc1926f9b6529 /libjava/java | |
parent | 5667c33d018a6f97ce58985a46c6f4e6e545f034 (diff) | |
download | gcc-27fa520dc722b9044c303f4ba9a88a57dabd0501.zip gcc-27fa520dc722b9044c303f4ba9a88a57dabd0501.tar.gz gcc-27fa520dc722b9044c303f4ba9a88a57dabd0501.tar.bz2 |
natFileWin32.cc: Created a placeholder class with lots of FIXMEs.
2002-02-11 Adam Megacz <adam@xwt.org>
* java/io/natFileWin32.cc: Created a placeholder class with lots
of FIXMEs.
From-SVN: r49691
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/io/natFileWin32.cc | 111 |
1 files changed, 48 insertions, 63 deletions
diff --git a/libjava/java/io/natFileWin32.cc b/libjava/java/io/natFileWin32.cc index 6c612d0..2ecfbf2 100644 --- a/libjava/java/io/natFileWin32.cc +++ b/libjava/java/io/natFileWin32.cc @@ -1,6 +1,6 @@ -// natFileWin32.cc - Native part of File class for Win32. +// natFileWin32.cc - Native part of File class. -/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999 Red Hat, Inc. This file is part of libgcj. @@ -22,13 +22,17 @@ details. */ #include <java/util/Vector.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) { + jstring canon = getCanonicalPath(); + if (! canon) + return false; char buf[MAX_PATH]; - jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); + jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf); // FIXME? buf[total] = '\0'; @@ -48,13 +52,14 @@ java::io::File::_access (jint query) jboolean java::io::File::_stat (jint query) { + jstring canon = getCanonicalPath(); + if (! canon) + return false; char buf[MAX_PATH]; - jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); + jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf); // FIXME? buf[total] = '\0'; - // FIXME: Need to handle ISHIDDEN query. - JvAssert (query == DIRECTORY || query == ISFILE); DWORD attributes = GetFileAttributes (buf); @@ -70,8 +75,11 @@ java::io::File::_stat (jint query) jlong java::io::File::attr (jint query) { + jstring canon = getCanonicalPath(); + if (! canon) + return false; char buf[MAX_PATH]; - jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); + jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf); // FIXME? buf[total] = '\0'; @@ -84,7 +92,7 @@ java::io::File::attr (jint query) if (query == LENGTH) return ((long long)info.nFileSizeHigh) << 32 | (unsigned long long)info.nFileSizeLow; else { - // FIXME? This is somewhat compiler dependent (the LL constant suffix) + // FIXME? This is somewhat compiler dependant (the LL constant suffix) // The file time as return by windows is the number of 100-nanosecond intervals since January 1, 1601 return (((((long long)info.ftLastWriteTime.dwHighDateTime) << 32) | ((unsigned long long)info.ftLastWriteTime.dwLowDateTime)) - 116444736000000000LL) / 10000LL; } @@ -100,7 +108,7 @@ java::io::File::getCanonicalPath (void) LPTSTR unused; if(!GetFullPathName(buf, MAX_PATH, buf2, &unused)) - throw new IOException (JvNewStringLatin1 ("GetFullPathName failed")); + _Jv_Throw (new IOException (JvNewStringLatin1 ("GetFullPathName failed"))); // FIXME: what encoding to assume for file names? This affects many // calls. @@ -123,13 +131,19 @@ java::io::File::isAbsolute (void) && (path->charAt(2) == '/' || path->charAt(2) == '\\')); } -jstringArray +void java::io::File::init_native() { } + + +jobjectArray java::io::File::performList (java::io::FilenameFilter *filter, java::io::FileFilter *fileFilter, - java::lang::Class *result_type) + java::lang::Class *clazz) { + jstring canon = getCanonicalPath(); + if (! canon) + return NULL; char buf[MAX_PATH]; - jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); + jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf); // FIXME? strcpy(&buf[total], "\\*.*"); @@ -138,7 +152,7 @@ java::io::File::performList (java::io::FilenameFilter *filter, if (handle == INVALID_HANDLE_VALUE) return NULL; - java::util::ArrayList *list = new java::util::ArrayList (); + java::util::Vector *vec = new java::util::Vector (); do { @@ -146,20 +160,14 @@ java::io::File::performList (java::io::FilenameFilter *filter, { jstring name = JvNewStringUTF (data.cFileName); - 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; + if (filter && !filter->accept(this, name)) continue; + if (clazz == &java::io::File::class$) { + java::io::File *file = new java::io::File (this, name); + if (fileFilter && !fileFilter->accept(file)) continue; + } + vec->addElement (name); - list->add(file); - } - else - list->add(name); - } + } } while (FindNextFile (handle, &data)); @@ -168,11 +176,17 @@ java::io::File::performList (java::io::FilenameFilter *filter, FindClose (handle); - jobjectArray ret = JvNewObjectArray (vec->size(), path->getClass(), NULL); + jobjectArray ret = JvNewObjectArray (vec->size(), canon->getClass(), NULL); vec->copyInto (ret); - return reinterpret_cast<jstringArray> (ret); + if (clazz == &java::io::File::class$) { + jobject *ret_elements = elements(ret); + for(int i=0; i<ret->length; i++) + ret_elements[i] = new File((jstring)(ret_elements[i])); + } + return ret; } + jboolean java::io::File::performMkdir (void) { @@ -185,20 +199,6 @@ java::io::File::performMkdir (void) } jboolean -java::io::File::performSetReadOnly (void) -{ - // PLEASE IMPLEMENT ME - return false; -} - -JArray< ::java::io::File *>* -java::io::File::performListRoots () -{ - // PLEASE IMPLEMENT ME - return NULL; -} - -jboolean java::io::File::performRenameTo (File *dest) { char buf[MAX_PATH]; @@ -214,24 +214,11 @@ java::io::File::performRenameTo (File *dest) } jboolean -java::io::File::performSetLastModified (jlong time) -{ - // PLEASE IMPLEMENT ME - return false; -} - -jboolean -java::io::File::performCreate (void) -{ - // PLEASE IMPLEMENT ME - return false; -} - -jboolean java::io::File::performDelete () { + jstring canon = getCanonicalPath(); char buf[MAX_PATH]; - jsize total = JvGetStringUTFRegion(path, 0, path->length(), buf); + jsize total = JvGetStringUTFRegion(canon, 0, canon->length(), buf); // FIXME? buf[total] = '\0'; @@ -245,9 +232,7 @@ java::io::File::performDelete () return (DeleteFile (buf)) ? true : false; } -void -java::io::File::init_native () -{ - maxPathLen = MAX_PATH; - caseSensitive = false; -} +jboolean java::io::File::performCreate (void) { JvFail("unimplemented\n"); } +jboolean java::io::File::performSetReadOnly() { JvFail("unimplemented"); } +jboolean java::io::File::performSetLastModified(jlong time) { JvFail("unimplemented"); } +JArray<java::io::File*>* java::io::File::performListRoots() { JvFail("unimplemented"); } |