-#ifndef __VMS__
-static DIR *wxDirStream = (DIR *) NULL;
-static char *wxFileSpec = (char *) NULL;
-static int wxFindFileFlags = 0;
+#if !defined( __VMS__ ) || ( __VMS_VER >= 70000000 )
+ static DIR *gs_dirStream = (DIR *) NULL;
+ static wxString gs_strFileSpec;
+ static int gs_findFlags = 0;
+#endif
+
+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
+
+ gs_findFlags = flags;
+
+ gs_strFileSpec = spec;
+
+ // Find path only so we can concatenate
+ // found file onto path
+ wxString path(wxPathOnly(gs_strFileSpec));
+
+ // special case: path is really "/"
+ if ( !path && gs_strFileSpec[0u] == wxT('/') )
+#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 )
+#ifdef __VMS
+ {
+ wxStrcpy( specvms , wxT( "[]" ) );
+ gs_strFileSpec = specvms;
+ wxString path_vms1(wxPathOnly(gs_strFileSpec));
+ path = path_vms1;
+ }
+#else
+ path = wxT('.');