aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorAdam Megacz <adam@xwt.org>2002-02-12 01:54:18 +0000
committerAdam Megacz <megacz@gcc.gnu.org>2002-02-12 01:54:18 +0000
commit27fa520dc722b9044c303f4ba9a88a57dabd0501 (patch)
tree8ed587c280d539be0d402915941cc1926f9b6529 /libjava/java
parent5667c33d018a6f97ce58985a46c6f4e6e545f034 (diff)
downloadgcc-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.cc111
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"); }