#include "wx/log.h"
-// No, Cygwin doesn't appear to have fnmatch.h after all.
-#if defined(HAVE_FNMATCH_H)
- #include "fnmatch.h"
-#endif
-
#ifdef __WINDOWS__
#include "wx/msw/private.h"
#include "wx/msw/mslu.h"
path such as "C:\Program Files" would be split into 2 paths:
"C:\Program" and "Files"
*/
-// wxT(" ;"); // Don't seperate with colon in DOS (used for drive)
- wxT(";"); // Don't seperate with colon in DOS (used for drive)
+// wxT(" ;"); // Don't separate with colon in DOS (used for drive)
+ wxT(";"); // Don't separate with colon in DOS (used for drive)
#else
wxT(" :;");
#endif
- wxChar *val = wxGetenv (WXSTRINGCAST envVariable);
- if (val && *val)
+ wxString val ;
+ if (wxGetEnv (WXSTRINGCAST envVariable, &val))
{
wxChar *s = MYcopystring (val);
wxChar *save_ptr, *token = wxStrtok (s, PATH_TOKS, &save_ptr);
delete [] s;
}
-#endif
+#else // __WXWINCE__
+ wxUnusedVar(envVariable);
+#endif // !__WXWINCE__/__WXWINCE__
}
// Given a full filename (with path), ensure that that file can
void wxStripExtension(wxChar *buffer)
{
- int len = wxStrlen(buffer);
- int i = len-1;
- while (i > 0)
- {
- if (buffer[i] == wxT('.'))
+ int len = wxStrlen(buffer);
+ int i = len-1;
+ while (i > 0)
{
- buffer[i] = 0;
- break;
+ if (buffer[i] == wxT('.'))
+ {
+ buffer[i] = 0;
+ break;
+ }
+ i --;
}
- i --;
- }
}
void wxStripExtension(wxString& buffer)
const wxChar *val;
#ifndef __WXWINCE__
wxChar *tcp;
- if (envname != WXSTRINGCAST NULL && (val = wxGetenv (WXSTRINGCAST envname)) != NULL &&
+ if (!envname.empty() && (val = wxGetenv (WXSTRINGCAST envname)) != NULL &&
(tcp = wxStrstr (dest, val)) != NULL)
{
wxStrcpy (wxFileFunctionsBuffer, tcp + wxStrlen (val));
wxStrcat (tcp, wxT("}"));
wxStrcat (tcp, wxFileFunctionsBuffer);
}
+#else
+ wxUnusedVar(envname);
#endif
// Handle User's home (ignore root homes!)
bool
wxConcatFiles (const wxString& file1, const wxString& file2, const wxString& file3)
{
- wxString outfile;
- if ( !wxGetTempFileName( wxT("cat"), outfile) )
- return false;
-
- FILE *fp1 wxDUMMY_INITIALIZE(NULL);
- FILE *fp2 = NULL;
- FILE *fp3 = NULL;
- // Open the inputs and outputs
- if ((fp1 = wxFopen ( file1, wxT("rb"))) == NULL ||
- (fp2 = wxFopen ( file2, wxT("rb"))) == NULL ||
- (fp3 = wxFopen ( outfile, wxT("wb"))) == NULL)
+#if wxUSE_FILE
+
+ wxFile in1(file1), in2(file2);
+ wxTempFile out(file3);
+
+ if ( !in1.IsOpened() || !in2.IsOpened() || !out.IsOpened() )
+ return false;
+
+ ssize_t ofs;
+ unsigned char buf[1024];
+
+ for( int i=0; i<2; i++)
{
- if (fp1)
- fclose (fp1);
- if (fp2)
- fclose (fp2);
- if (fp3)
- fclose (fp3);
- return false;
+ wxFile *in = i==0 ? &in1 : &in2;
+ do{
+ if ( (ofs = in->Read(buf,WXSIZEOF(buf))) == wxInvalidOffset ) return false;
+ if ( ofs > 0 )
+ if ( !out.Write(buf,ofs) )
+ return false;
+ } while ( ofs == (ssize_t)WXSIZEOF(buf) );
}
- int ch;
- while ((ch = getc (fp1)) != EOF)
- (void) putc (ch, fp3);
- fclose (fp1);
+ return out.Commit();
- while ((ch = getc (fp2)) != EOF)
- (void) putc (ch, fp3);
- fclose (fp2);
+#else
- fclose (fp3);
- bool result = wxRenameFile(outfile, file3);
- return result;
+ wxUnusedVar(file1);
+ wxUnusedVar(file2);
+ wxUnusedVar(file3);
+ return false;
+
+#endif
}
// Copy files
return false;
}
#elif defined(__OS2__)
- if ( ::DosCopy(file2, file2, overwrite ? DCPY_EXISTING : 0) != 0 )
+ if ( ::DosCopy((PSZ)file1.c_str(), (PSZ)file2.c_str(), overwrite ? DCPY_EXISTING : 0) != 0 )
return false;
#elif defined(__PALMOS__)
// TODO with http://www.palmos.com/dev/support/docs/protein_books/Memory_Databases_Files/
return false;
-#else // !Win32
+#elif wxUSE_FILE // !Win32
wxStructStat fbuf;
// get permissions of file1
return false;
}
#endif // OS/2 || Mac
+
+#else // !Win32 && ! wxUSE_FILE
+
+ // impossible to simulate with wxWidgets API
+ wxUnusedVar(file1);
+ wxUnusedVar(file2);
+ wxUnusedVar(overwrite);
+ return false;
+
#endif // __WXMSW__ && __WIN32__
return true;
}
// does the path exists? (may have or not '/' or '\\' at the end)
-bool wxPathExists(const wxChar *pszPathName)
+bool wxDirExists(const wxChar *pszPathName)
{
wxString strPath(pszPathName);
DWORD ret = ::GetFileAttributes(strPath);
return (ret != (DWORD)-1) && (ret & FILE_ATTRIBUTE_DIRECTORY);
+#elif defined(__OS2__)
+ return (::DosSetCurrentDir((PSZ)(WXSTRINGCAST strPath)));
#else // !__WIN32__
wxStructStat st;
return buf;
#else
+ wxUnusedVar(prefix);
+ wxUnusedVar(buf);
// wxFileName::CreateTempFileName needs wxFile class enabled
return NULL;
#endif
// TODO ?
return NULL;
#elif defined(__WXWINCE__)
+ // TODO
+ wxUnusedVar(buf);
+ wxUnusedVar(sz);
return NULL;
#else
if ( !buf )
#ifdef __WIN32__
#ifdef __WXWINCE__
// No equivalent in WinCE
+ wxUnusedVar(d);
return false;
#else
return (bool)(SetCurrentDirectory(d) != 0);
// autocompletion
for( size_t j = 0 ; j < descriptions.GetCount() ; j++ )
{
- if ( descriptions[j] == wxEmptyString && filters[j] != wxEmptyString )
+ if ( descriptions[j].empty() && !filters[j].empty() )
{
descriptions[j].Printf(_("Files (%s)"), filters[j].c_str());
}
// This is important for the archive streams, which benefit greatly from
// being able to seek on a stream, but which will produce corrupt archives
// if they unknowingly seek on a non-seekable stream.
-//
+//
// wxFILE_KIND_DISK is a good catch all return value, since other values
// disable features of the archive streams. Some other value must be returned
// for a file type that appears seekable but isn't.
return wxFILE_KIND_DISK;
#else
+ #define wxFILEKIND_STUB
(void)fd;
return wxFILE_KIND_DISK;
#endif
}
+wxFileKind wxGetFileKind(FILE *fp)
+{
+ // Note: The watcom rtl dll doesn't have fileno (the static lib does).
+ // Should be fixed in version 1.4.
+#if defined(wxFILEKIND_STUB) || \
+ (defined(__WATCOMC__) && __WATCOMC__ <= 1230 && defined(__SW_BR))
+ (void)fp;
+ return wxFILE_KIND_DISK;
+#else
+ return wxGetFileKind(fileno(fp));
+#endif
+}
+
#ifdef __VISUALC__
#pragma warning(default:4706) // assignment within conditional expression
#endif // VC++