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
This commit is contained in:
Adam Megacz 2002-02-12 01:54:18 +00:00 committed by Adam Megacz
parent 5667c33d01
commit 27fa520dc7
2 changed files with 53 additions and 63 deletions

View file

@ -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 (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);
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);
}
}
}
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)
{
@ -184,20 +198,6 @@ java::io::File::performMkdir (void)
return (CreateDirectory(buf, NULL)) ? true : false;
}
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)
{
@ -213,25 +213,12 @@ java::io::File::performRenameTo (File *dest)
return (MoveFile(buf, buf2)) ? true : false;
}
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"); }