#endif
#endif
#include <time.h>
+#ifndef __MWERKS__
#include <sys/types.h>
#include <sys/stat.h>
+#else
+#include <stat.h>
+#include <unistd.h>
+#endif
#ifdef __UNIX__
#include <unistd.h>
#endif
#ifdef __WINDOWS__
-#ifndef __GNUWIN32__
+#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ )
#include <direct.h>
#include <dos.h>
#endif
#endif
#include "wx/setup.h"
+#include "wx/log.h"
-#if defined(HAVE_FNMATCH_H) || defined(__GNUWIN32__)
+// No, Cygwin doesn't appear to have fnmatch.h after all.
+#if defined(HAVE_FNMATCH_H)
#include "fnmatch.h"
#endif
#define _MAXPATHLEN 500
extern char *wxBuffer;
+#ifdef __WXMAC__
+extern char gwxMacFileName[] ;
+extern char gwxMacFileName2[] ;
+extern char gwxMacFileName3[] ;
+#endif
#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxStringList)
{
wxString path2((char *) node->Data ());
if (
-#if defined(__WINDOWS__) || defined(__VMS__)
+#if defined(__WINDOWS__) || defined(__VMS__) || defined (__WXMAC__)
// Case INDEPENDENT
path.CompareTo (path2, wxString::ignoreCase) == 0
#else
char buf[_MAXPATHLEN];
strcpy(buf, wxBuffer);
- char *filename = IsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (char *)buf;
+ char *filename = (char*) NULL; /* shut up buggy egcs warning */
+ filename = IsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (char *)buf;
for (wxNode * node = First (); node; node = node->Next ())
{
return FALSE;
else
return TRUE;
+#elif defined(__WXMAC__)
+ struct stat stbuf;
+ strcpy( gwxMacFileName , filename ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ if (gwxMacFileName && stat ((char *)(const char *)gwxMacFileName, &stbuf) == 0)
+ return TRUE;
+ return FALSE ;
#else
struct stat stbuf;
- if (filename && stat ((char *)(const char *)filename, &stbuf) == 0)
+ if ((filename != "") && stat ((char *)(const char *)filename, &stbuf) == 0)
return TRUE;
return FALSE;
#endif
strncmp(dest, val, len) == 0)
{
strcpy(wxBuffer, "~");
- if (user && *user)
- strcat(wxBuffer, user);
+ if (user != "")
+ strcat(wxBuffer, (const char*) user);
#ifdef __WXMSW__
// strcat(wxBuffer, "\\");
#else
// and back again - or we get nasty problems with delimiters.
// Also, convert to lower case, since case is significant in UNIX.
+#ifdef __WXMAC__
+void
+wxMac2UnixFilename (char *s)
+{
+ if (s)
+ {
+ memmove( s+1 , s ,strlen( s ) + 1) ;
+ if ( *s == ':' )
+ *s = '.' ;
+ else
+ *s = '/' ;
+
+ while (*s)
+ {
+ if (*s == ':')
+ *s = '/';
+ else
+ *s = wxToLower (*s); // Case INDEPENDENT
+ s++;
+ }
+ }
+}
+
+void
+wxUnix2MacFilename (char *s)
+{
+ if (s)
+ {
+ if ( *s == '.' )
+ {
+ // relative path , since it goes on with slash which is translated to a :
+ memmove( s , s+1 ,strlen( s ) ) ;
+ }
+ else if ( *s == '/' )
+ {
+ // absolute path -> on mac just start with the drive name
+ memmove( s , s+1 ,strlen( s ) ) ;
+ }
+ else
+ {
+ wxASSERT_MSG( 1 , "unkown path beginning" ) ;
+ }
+ while (*s)
+ {
+ if (*s == '/' || *s == '\\')
+ *s = ':';
+
+ s++ ;
+ }
+ }
+}
+#endif
void
wxDos2UnixFilename (char *s)
{
FILE *fp2 = (FILE *) NULL;
FILE *fp3 = (FILE *) NULL;
// Open the inputs and outputs
+#ifdef __WXMAC__
+ strcpy( gwxMacFileName , file1 ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ strcpy( gwxMacFileName2 , file2) ;
+ wxUnix2MacFilename( gwxMacFileName2 ) ;
+ strcpy( gwxMacFileName3 , outfile) ;
+ wxUnix2MacFilename( gwxMacFileName3 ) ;
+
+ if ((fp1 = fopen (gwxMacFileName, "rb")) == NULL ||
+ (fp2 = fopen (gwxMacFileName2, "rb")) == NULL ||
+ (fp3 = fopen (gwxMacFileName3, "wb")) == NULL)
+#else
if ((fp1 = fopen (WXSTRINGCAST file1, "rb")) == NULL ||
(fp2 = fopen (WXSTRINGCAST file2, "rb")) == NULL ||
(fp3 = fopen (outfile, "wb")) == NULL)
+#endif
{
if (fp1)
fclose (fp1);
FILE *fd2;
int ch;
+#ifdef __WXMAC__
+ strcpy( gwxMacFileName , file1 ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ strcpy( gwxMacFileName2 , file2) ;
+ wxUnix2MacFilename( gwxMacFileName2 ) ;
+
+ if ((fd1 = fopen (gwxMacFileName, "rb")) == NULL)
+ return FALSE;
+ if ((fd2 = fopen (gwxMacFileName2, "wb")) == NULL)
+#else
if ((fd1 = fopen (WXSTRINGCAST file1, "rb")) == NULL)
return FALSE;
if ((fd2 = fopen (WXSTRINGCAST file2, "wb")) == NULL)
+#endif
{
fclose (fd1);
return FALSE;
bool
wxRenameFile (const wxString& file1, const wxString& file2)
{
+#ifdef __WXMAC__
+ strcpy( gwxMacFileName , file1 ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ strcpy( gwxMacFileName2 , file2) ;
+ wxUnix2MacFilename( gwxMacFileName2 ) ;
+
+ if (0 == rename (gwxMacFileName, gwxMacFileName2))
+ return TRUE;
+#else
// Normal system call
if (0 == rename (WXSTRINGCAST file1, WXSTRINGCAST file2))
return TRUE;
+#endif
// Try to copy
if (wxCopyFile(file1, file2)) {
wxRemoveFile(file1);
bool wxRemoveFile(const wxString& file)
{
-#if defined(_MSC_VER) || defined(__BORLANDC__)
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__)
int flag = remove(WXSTRINGCAST file);
+#elif defined( __WXMAC__ )
+ strcpy( gwxMacFileName , file ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ int flag = unlink(gwxMacFileName);
#else
int flag = unlink(WXSTRINGCAST file);
#endif
return FALSE;
#elif defined(__VMS__)
return FALSE;
+#elif defined( __WXMAC__ )
+ strcpy( gwxMacFileName , dir ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ return (mkdir(gwxMacFileName , 0 ) == 0);
#elif (defined(__GNUWIN32__) && !defined(__MINGW32__)) || !defined(__WXMSW__)
return (mkdir (WXSTRINGCAST dir, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == 0);
#else
{
#ifdef __VMS__
return FALSE;
+#elif defined( __WXMAC__ )
+ strcpy( gwxMacFileName , dir ) ;
+ wxUnix2MacFilename( gwxMacFileName ) ;
+ return (rmdir(WXSTRINGCAST gwxMacFileName) == 0);
#else
return (rmdir(WXSTRINGCAST dir) == 0);
#endif
return buf;
}
}
- cerr << _("wxWindows: error finding temporary file name.\n");
+ wxLogError( _("wxWindows: error finding temporary file name.\n") );
if (buf) buf[0] = 0;
return (char *) NULL;
#endif
{
if (!buf)
buf = new char[sz+1];
-#ifdef _MSC_VER
+#ifdef _MSC_VER
if (_getcwd(buf, sz) == NULL) {
#else
if (getcwd(buf, sz) == NULL) {
bool wxSetWorkingDirectory(const wxString& d)
{
-#ifdef __UNIX__
+#if defined( __UNIX__ ) || defined( __WXMAC__ )
return (chdir(d) == 0);
#elif defined(__WINDOWS__)
bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
-#if defined(HAVE_FNMATCH_H) || defined(__GNUWIN32__)
+#if defined(HAVE_FNMATCH_H)
{
if(dot_special)
return fnmatch(pat.c_str(), text.c_str(), FNM_PERIOD) == 0;
}
#else
-#pragma error Broken implementation of wxMatchWild() -- needs fixing!
+// #pragma error Broken implementation of wxMatchWild() -- needs fixing!
+
/*
* WARNING: this code is broken!
*/