natFileWin32.cc: Created a placeholder class with lots of FIXMEs.
authorAdam Megacz <adam@xwt.org>
Tue, 12 Feb 2002 01:54:18 +0000 (01:54 +0000)
committerAdam Megacz <megacz@gcc.gnu.org>
Tue, 12 Feb 2002 01:54:18 +0000 (01:54 +0000)
2002-02-11  Adam Megacz <adam@xwt.org>

        * java/io/natFileWin32.cc: Created a placeholder class with lots
        of FIXMEs.

From-SVN: r49691

libjava/ChangeLog
libjava/java/io/natFileWin32.cc

index e8ea712..895286a 100644 (file)
@@ -1,5 +1,10 @@
 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
        std::abort() to simply abort(). Also added "fake" std::abort() so
        we can #include unwind-pe.h without having to link against
index 6c612d0..2ecfbf2 100644 (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 (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"); }