Fix create-file for Mac OS X so that SDAD will work. The r/w fam now maps to "w+...
authorphil@softsynth.com <phil@softsynth.com@b0a0988d-7f52-0410-8c73-4f6cdee1a2cf>
Mon, 21 Jul 2008 20:50:31 +0000 (20:50 +0000)
committerphil@softsynth.com <phil@softsynth.com@b0a0988d-7f52-0410-8c73-4f6cdee1a2cf>
Mon, 21 Jul 2008 20:50:31 +0000 (20:50 +0000)
csrc/pf_inner.c

index d7f1239..763b879 100644 (file)
 ***************************************************************/\r
 \r
 #include "pf_all.h"\r
 ***************************************************************/\r
 \r
 #include "pf_all.h"\r
+\r
+#ifdef WIN32\r
 #include <crtdbg.h>\r
 #include <crtdbg.h>\r
+#endif\r
 \r
 #define SYSTEM_LOAD_FILE "system.fth"\r
 \r
 \r
 #define SYSTEM_LOAD_FILE "system.fth"\r
 \r
@@ -190,10 +193,38 @@ static void TraceNames( ExecToken Token, int32 Level )
 /* Use local copy of CODE_BASE for speed. */\r
 #define LOCAL_CODEREL_TO_ABS( a ) ((cell *) (((int32) a) + CodeBase))\r
 \r
 /* Use local copy of CODE_BASE for speed. */\r
 #define LOCAL_CODEREL_TO_ABS( a ) ((cell *) (((int32) a) + CodeBase))\r
 \r
+static const char *pfSelectFileModeCreate( int fam );\r
+static const char *pfSelectFileModeOpen( int fam );\r
+\r
+/**************************************************************/\r
+static const char *pfSelectFileModeCreate( int fam )\r
+{\r
+       const char *famText = NULL;\r
+       switch( fam )\r
+       {\r
+       case (PF_FAM_WRITE_ONLY + PF_FAM_BINARY_FLAG):\r
+               famText = PF_FAM_BIN_CREATE_WO;\r
+               break;\r
+       case (PF_FAM_READ_WRITE + PF_FAM_BINARY_FLAG):\r
+               famText = PF_FAM_BIN_CREATE_RW;\r
+               break;\r
+       case PF_FAM_WRITE_ONLY:\r
+               famText = PF_FAM_CREATE_WO;\r
+               break;\r
+       case PF_FAM_READ_WRITE:\r
+               famText = PF_FAM_CREATE_RW;\r
+               break;\r
+       default:\r
+               famText = "illegal";\r
+               break;\r
+       }\r
+       return famText;\r
+}\r
+\r
 /**************************************************************/\r
 /**************************************************************/\r
-const char *pfSelectFileMode( int fam )\r
+static const char *pfSelectFileModeOpen( int fam )\r
 {\r
 {\r
-       char *famText = NULL;\r
+       const char *famText = NULL;\r
        switch( fam )\r
        {\r
        case (PF_FAM_READ_ONLY + PF_FAM_BINARY_FLAG):\r
        switch( fam )\r
        {\r
        case (PF_FAM_READ_ONLY + PF_FAM_BINARY_FLAG):\r
@@ -890,10 +921,10 @@ DBUG(("XX ah,m,l = 0x%8x,%8x,%8x - qh,l = 0x%8x,%8x\n", ah,am,al, qh,ql ));
                        Temp = M_POP;    /* caddr */\r
                        if( Scratch < TIB_SIZE-2 )\r
                        {\r
                        Temp = M_POP;    /* caddr */\r
                        if( Scratch < TIB_SIZE-2 )\r
                        {\r
-                               const char *famText = pfSelectFileMode( TOS );\r
+                               const char *famText = pfSelectFileModeCreate( TOS );\r
                                pfCopyMemory( gScratch, (char *) Temp, (uint32) Scratch );\r
                                gScratch[Scratch] = '\0';\r
                                pfCopyMemory( gScratch, (char *) Temp, (uint32) Scratch );\r
                                gScratch[Scratch] = '\0';\r
-                               DBUG(("Create file = %s\n", gScratch ));\r
+                               PRT(("Create file = %s with famTxt %s\n", gScratch, famText ));\r
                                FileID = sdOpenFile( gScratch, famText );\r
                                TOS = ( FileID == NULL ) ? -1 : 0 ;\r
                                M_PUSH( (cell) FileID );\r
                                FileID = sdOpenFile( gScratch, famText );\r
                                TOS = ( FileID == NULL ) ? -1 : 0 ;\r
                                M_PUSH( (cell) FileID );\r
@@ -912,7 +943,7 @@ DBUG(("XX ah,m,l = 0x%8x,%8x,%8x - qh,l = 0x%8x,%8x\n", ah,am,al, qh,ql ));
                        Temp = M_POP;    /* caddr */\r
                        if( Scratch < TIB_SIZE-2 )\r
                        {\r
                        Temp = M_POP;    /* caddr */\r
                        if( Scratch < TIB_SIZE-2 )\r
                        {\r
-                               const char *famText = pfSelectFileMode( TOS );\r
+                               const char *famText = pfSelectFileModeOpen( TOS );\r
                                pfCopyMemory( gScratch, (char *) Temp, (uint32) Scratch );\r
                                gScratch[Scratch] = '\0';\r
                                DBUG(("Open file = %s\n", gScratch ));\r
                                pfCopyMemory( gScratch, (char *) Temp, (uint32) Scratch );\r
                                gScratch[Scratch] = '\0';\r
                                DBUG(("Open file = %s\n", gScratch ));\r