]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
fix for group names containing ']'
[wxWidgets.git] / src / common / filefn.cpp
index 50b3fad41379d411a18e3337344976b312a2e777..4adda9147010291762f87cec893b441e47d71a7c 100644 (file)
@@ -745,10 +745,11 @@ wxPathOnly (wxChar *path)
         {
           done = TRUE;
 #ifdef __VMS__
         {
           done = TRUE;
 #ifdef __VMS__
-          buf[i+1] = 0;
-#else
+          if ( path[i] == wxT(']') )
+            buf[i+1] = 0;
+          else
+#endif      
           buf[i] = 0;
           buf[i] = 0;
-#endif
 
           return buf;
         }
 
           return buf;
         }
@@ -793,10 +794,11 @@ wxString wxPathOnly (const wxString& path)
         {
           done = TRUE;
 #ifdef __VMS__
         {
           done = TRUE;
 #ifdef __VMS__
-          buf[i+1] = 0;
-#else
+          if ( path[i] == wxT(']') )
+            buf[i+1] = 0;
+          else
+#endif      
           buf[i] = 0;
           buf[i] = 0;
-#endif
 
           return wxString(buf);
         }
 
           return wxString(buf);
         }
@@ -1176,9 +1178,15 @@ bool wxPathExists(const wxChar *pszPathName)
 #endif // __WINDOWS__
 
     wxStructStat st;
 #endif // __WINDOWS__
 
     wxStructStat st;
-
+#ifndef __VISAGECPP__
     return wxStat(wxFNSTRINGCAST strPath.fn_str(), &st) == 0 &&
         ((st.st_mode & S_IFMT) == S_IFDIR);
     return wxStat(wxFNSTRINGCAST strPath.fn_str(), &st) == 0 &&
         ((st.st_mode & S_IFMT) == S_IFDIR);
+#else
+    // S_IFMT not supported in VA compilers.. st_mode is a 2byte value only
+    return wxStat(wxFNSTRINGCAST strPath.fn_str(), &st) == 0 &&
+        (st.st_mode == S_IFDIR);
+#endif
+
 }
 
 // Get a temporary filename, opening and closing the file.
 }
 
 // Get a temporary filename, opening and closing the file.
@@ -1255,7 +1263,10 @@ bool wxGetTempFileName(const wxString& prefix, wxString& buf)
 wxString wxFindFirstFile(const wxChar *spec, int flags)
 {
     wxString result;
 wxString wxFindFirstFile(const wxChar *spec, int flags)
 {
     wxString result;
-
+#ifdef __VMS
+   wxChar *specvms = NULL;
+#endif
+   
 #if !defined( __VMS__ ) || ( __VMS_VER >= 70000000 )
     if (gs_dirStream)
         closedir(gs_dirStream); // edz 941103: better housekeping
 #if !defined( __VMS__ ) || ( __VMS_VER >= 70000000 )
     if (gs_dirStream)
         closedir(gs_dirStream); // edz 941103: better housekeping
@@ -1270,11 +1281,29 @@ wxString wxFindFirstFile(const wxChar *spec, int flags)
 
     // special case: path is really "/"
     if ( !path && gs_strFileSpec[0u] == wxT('/') )
 
     // special case: path is really "/"
     if ( !path && gs_strFileSpec[0u] == wxT('/') )
-        path = wxT('/');
-    // path is empty => Local directory
+#ifdef __VMS
+     {
+       wxStrcpy( specvms , wxT( "[000000]" ) );
+       gs_strFileSpec = specvms;
+       wxString path_vms(wxPathOnly(gs_strFileSpec));
+       path = path_vms;
+     }
+#else
+     path = wxT('/');
+#endif
+   // path is empty => Local directory
     if ( !path )
     if ( !path )
-        path = wxT('.');
-
+#ifdef __VMS
+     {
+       wxStrcpy( specvms , wxT( "[]" ) );
+       gs_strFileSpec = specvms;
+       wxString path_vms1(wxPathOnly(gs_strFileSpec));
+       path = path_vms1;
+     }
+#else
+     path = wxT('.');
+#endif
+   
     gs_dirStream = opendir(path.fn_str());
     if ( !gs_dirStream )
     {
     gs_dirStream = opendir(path.fn_str());
     if ( !gs_dirStream )
     {