Commit 27fa520d by Adam Megacz Committed by Adam Megacz

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
parent 5667c33d
2002-02-11 Adam Megacz <adam@xwt.org> 2002-02-11 Adam Megacz <adam@xwt.org>
* java/io/natFileWin32.cc: Created a placeholder class with lots
of FIXMEs.
2002-02-11 Adam Megacz <adam@xwt.org>
* exception.cc (_Jv_Throw, PERSONALITY_FUNCTION): Changed * exception.cc (_Jv_Throw, PERSONALITY_FUNCTION): Changed
std::abort() to simply abort(). Also added "fake" std::abort() so std::abort() to simply abort(). Also added "fake" std::abort() so
we can #include unwind-pe.h without having to link against we can #include unwind-pe.h without having to link against
......
// 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. This file is part of libgcj.
...@@ -22,13 +22,17 @@ details. */ ...@@ -22,13 +22,17 @@ details. */
#include <java/util/Vector.h> #include <java/util/Vector.h>
#include <java/lang/String.h> #include <java/lang/String.h>
#include <java/io/FilenameFilter.h> #include <java/io/FilenameFilter.h>
#include <java/io/FileFilter.h>
#include <java/lang/System.h> #include <java/lang/System.h>
jboolean jboolean
java::io::File::_access (jint query) java::io::File::_access (jint query)
{ {
jstring canon = getCanonicalPath();
if (! canon)
return false;
char buf[MAX_PATH]; char buf[MAX_PATH];
jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf);
// FIXME? // FIXME?
buf[total] = '\0'; buf[total] = '\0';
...@@ -48,13 +52,14 @@ java::io::File::_access (jint query) ...@@ -48,13 +52,14 @@ java::io::File::_access (jint query)
jboolean jboolean
java::io::File::_stat (jint query) java::io::File::_stat (jint query)
{ {
jstring canon = getCanonicalPath();
if (! canon)
return false;
char buf[MAX_PATH]; char buf[MAX_PATH];
jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf);
// FIXME? // FIXME?
buf[total] = '\0'; buf[total] = '\0';
// FIXME: Need to handle ISHIDDEN query.
JvAssert (query == DIRECTORY || query == ISFILE); JvAssert (query == DIRECTORY || query == ISFILE);
DWORD attributes = GetFileAttributes (buf); DWORD attributes = GetFileAttributes (buf);
...@@ -70,8 +75,11 @@ java::io::File::_stat (jint query) ...@@ -70,8 +75,11 @@ java::io::File::_stat (jint query)
jlong jlong
java::io::File::attr (jint query) java::io::File::attr (jint query)
{ {
jstring canon = getCanonicalPath();
if (! canon)
return false;
char buf[MAX_PATH]; char buf[MAX_PATH];
jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf);
// FIXME? // FIXME?
buf[total] = '\0'; buf[total] = '\0';
...@@ -84,7 +92,7 @@ java::io::File::attr (jint query) ...@@ -84,7 +92,7 @@ java::io::File::attr (jint query)
if (query == LENGTH) if (query == LENGTH)
return ((long long)info.nFileSizeHigh) << 32 | (unsigned long long)info.nFileSizeLow; return ((long long)info.nFileSizeHigh) << 32 | (unsigned long long)info.nFileSizeLow;
else { 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 // 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; return (((((long long)info.ftLastWriteTime.dwHighDateTime) << 32) | ((unsigned long long)info.ftLastWriteTime.dwLowDateTime)) - 116444736000000000LL) / 10000LL;
} }
...@@ -100,7 +108,7 @@ java::io::File::getCanonicalPath (void) ...@@ -100,7 +108,7 @@ java::io::File::getCanonicalPath (void)
LPTSTR unused; LPTSTR unused;
if(!GetFullPathName(buf, MAX_PATH, buf2, &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 // FIXME: what encoding to assume for file names? This affects many
// calls. // calls.
...@@ -123,13 +131,19 @@ java::io::File::isAbsolute (void) ...@@ -123,13 +131,19 @@ java::io::File::isAbsolute (void)
&& (path->charAt(2) == '/' || path->charAt(2) == '\\')); && (path->charAt(2) == '/' || path->charAt(2) == '\\'));
} }
jstringArray void java::io::File::init_native() { }
jobjectArray
java::io::File::performList (java::io::FilenameFilter *filter, java::io::File::performList (java::io::FilenameFilter *filter,
java::io::FileFilter *fileFilter, java::io::FileFilter *fileFilter,
java::lang::Class *result_type) java::lang::Class *clazz)
{ {
jstring canon = getCanonicalPath();
if (! canon)
return NULL;
char buf[MAX_PATH]; char buf[MAX_PATH];
jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); jsize total = JvGetStringUTFRegion (canon, 0, canon->length(), buf);
// FIXME? // FIXME?
strcpy(&buf[total], "\\*.*"); strcpy(&buf[total], "\\*.*");
...@@ -138,7 +152,7 @@ java::io::File::performList (java::io::FilenameFilter *filter, ...@@ -138,7 +152,7 @@ java::io::File::performList (java::io::FilenameFilter *filter,
if (handle == INVALID_HANDLE_VALUE) if (handle == INVALID_HANDLE_VALUE)
return NULL; return NULL;
java::util::ArrayList *list = new java::util::ArrayList (); java::util::Vector *vec = new java::util::Vector ();
do do
{ {
...@@ -146,20 +160,14 @@ java::io::File::performList (java::io::FilenameFilter *filter, ...@@ -146,20 +160,14 @@ java::io::File::performList (java::io::FilenameFilter *filter,
{ {
jstring name = JvNewStringUTF (data.cFileName); jstring name = JvNewStringUTF (data.cFileName);
if (filter && ! filter->accept(this, name)) if (filter && !filter->accept(this, name)) continue;
continue; if (clazz == &java::io::File::class$) {
java::io::File *file = new java::io::File (this, name);
if (result_type == &java::io::File::class$) if (fileFilter && !fileFilter->accept(file)) continue;
{ }
java::io::File *file = new java::io::File (this, name); vec->addElement (name);
if (fileFilter && ! fileFilter->accept(file))
continue;
list->add(file); }
}
else
list->add(name);
}
} }
while (FindNextFile (handle, &data)); while (FindNextFile (handle, &data));
...@@ -168,11 +176,17 @@ java::io::File::performList (java::io::FilenameFilter *filter, ...@@ -168,11 +176,17 @@ java::io::File::performList (java::io::FilenameFilter *filter,
FindClose (handle); FindClose (handle);
jobjectArray ret = JvNewObjectArray (vec->size(), path->getClass(), NULL); jobjectArray ret = JvNewObjectArray (vec->size(), canon->getClass(), NULL);
vec->copyInto (ret); 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 jboolean
java::io::File::performMkdir (void) java::io::File::performMkdir (void)
{ {
...@@ -185,20 +199,6 @@ java::io::File::performMkdir (void) ...@@ -185,20 +199,6 @@ java::io::File::performMkdir (void)
} }
jboolean 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) java::io::File::performRenameTo (File *dest)
{ {
char buf[MAX_PATH]; char buf[MAX_PATH];
...@@ -214,24 +214,11 @@ java::io::File::performRenameTo (File *dest) ...@@ -214,24 +214,11 @@ java::io::File::performRenameTo (File *dest)
} }
jboolean 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 () java::io::File::performDelete ()
{ {
jstring canon = getCanonicalPath();
char buf[MAX_PATH]; char buf[MAX_PATH];
jsize total = JvGetStringUTFRegion(path, 0, path->length(), buf); jsize total = JvGetStringUTFRegion(canon, 0, canon->length(), buf);
// FIXME? // FIXME?
buf[total] = '\0'; buf[total] = '\0';
...@@ -245,9 +232,7 @@ java::io::File::performDelete () ...@@ -245,9 +232,7 @@ java::io::File::performDelete ()
return (DeleteFile (buf)) ? true : false; return (DeleteFile (buf)) ? true : false;
} }
void jboolean java::io::File::performCreate (void) { JvFail("unimplemented\n"); }
java::io::File::init_native () jboolean java::io::File::performSetReadOnly() { JvFail("unimplemented"); }
{ jboolean java::io::File::performSetLastModified(jlong time) { JvFail("unimplemented"); }
maxPathLen = MAX_PATH; JArray<java::io::File*>* java::io::File::performListRoots() { JvFail("unimplemented"); }
caseSensitive = false;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment