Add support for DELETE-FILE from Aleksej.
authorphil@softsynth.com <phil@softsynth.com@b0a0988d-7f52-0410-8c73-4f6cdee1a2cf>
Sun, 1 Aug 2010 20:38:49 +0000 (20:38 +0000)
committerphil@softsynth.com <phil@softsynth.com@b0a0988d-7f52-0410-8c73-4f6cdee1a2cf>
Sun, 1 Aug 2010 20:38:49 +0000 (20:38 +0000)
csrc/pf_guts.h
csrc/pf_inner.c
csrc/pf_io.c
csrc/pf_io.h
csrc/pfcompil.c

index 425f226..0666108 100644 (file)
@@ -279,6 +279,8 @@ enum cforth_primitive_ids
        /* Added to support 64 bit operation. */\r
        ID_CELL,\r
        ID_CELLS,\r
        /* Added to support 64 bit operation. */\r
        ID_CELL,\r
        ID_CELLS,\r
+       /* DELETE-FILE */\r
+       ID_FILE_DELETE,\r
 /* If you add a word here, take away one reserved word below. */\r
 #ifdef PF_SUPPORT_FP\r
 /* Only reserve space if we are adding FP so that we can detect\r
 /* If you add a word here, take away one reserved word below. */\r
 #ifdef PF_SUPPORT_FP\r
 /* Only reserve space if we are adding FP so that we can detect\r
@@ -297,7 +299,6 @@ enum cforth_primitive_ids
        ID_RESERVED11,\r
        ID_RESERVED12,\r
        ID_RESERVED13,\r
        ID_RESERVED11,\r
        ID_RESERVED12,\r
        ID_RESERVED13,\r
-       ID_RESERVED14,\r
        ID_FP_D_TO_F,\r
        ID_FP_FSTORE,\r
        ID_FP_FTIMES,\r
        ID_FP_D_TO_F,\r
        ID_FP_FSTORE,\r
        ID_FP_FTIMES,\r
index 5472942..ab1e38d 100644 (file)
@@ -962,6 +962,23 @@ DBUG(("XX ah,m,l = 0x%8x,%8x,%8x - qh,l = 0x%8x,%8x\n", ah,am,al, qh,ql ));
                        }\r
                        endcase;\r
 \r
                        }\r
                        endcase;\r
 \r
+               case ID_FILE_DELETE: /* ( c-addr u -- ior ) */\r
+/* Build NUL terminated name string. */\r
+                       Temp = M_POP;    /* caddr */\r
+                       if( TOS < TIB_SIZE-2 )\r
+                       {\r
+                               pfCopyMemory( gScratch, (char *) Temp, (ucell_t) TOS );\r
+                               gScratch[TOS] = '\0';\r
+                               DBUG(("Delete file = %s\n", gScratch ));\r
+                               TOS = sdDeleteFile( gScratch );\r
+                       }\r
+                       else\r
+                       {\r
+                               ERR("Filename too large for name buffer.\n");\r
+                               TOS = -2;\r
+                       }\r
+                       endcase;\r
+\r
                case ID_FILE_OPEN: /* ( c-addr u fam -- fid ior ) */\r
 /* Build NUL terminated name string. */\r
                        Scratch = M_POP; /* u */\r
                case ID_FILE_OPEN: /* ( c-addr u fam -- fid ior ) */\r
 /* Build NUL terminated name string. */\r
                        Scratch = M_POP; /* u */\r
index 5638874..dc5a9dc 100644 (file)
@@ -214,5 +214,12 @@ cell_t sdCloseFile( FileStream * Stream )
        TOUCH(Stream);\r
        return 0; \r
 }\r
        TOUCH(Stream);\r
        return 0; \r
 }\r
+\r
+FileStream *sdDeleteFile( const char *FileName )\r
+{\r
+       UNIMPLEMENTED("sdDeleteFile");\r
+       TOUCH(FileName);\r
+       return NULL;\r
+}\r
 #endif\r
 \r
 #endif\r
 \r
index 8c145a0..c31cdc4 100644 (file)
@@ -114,6 +114,7 @@ void ioTerm( void );
                typedef FILE FileStream;\r
 \r
                #define sdOpenFile      fopen\r
                typedef FILE FileStream;\r
 \r
                #define sdOpenFile      fopen\r
+               #define sdDeleteFile      remove\r
                #define sdFlushFile     fflush\r
                #define sdReadFile      fread\r
                #define sdWriteFile     fwrite\r
                #define sdFlushFile     fflush\r
                #define sdReadFile      fread\r
                #define sdWriteFile     fwrite\r
index 025eebf..dcb386f 100644 (file)
@@ -250,6 +250,7 @@ PForthDictionary pfBuildDictionary( cell_t HeaderSize, cell_t CodeSize )
        CreateDicEntryC( ID_FILL, "FILL", 0 );\r
        CreateDicEntryC( ID_FIND, "FIND",  0 );\r
        CreateDicEntryC( ID_FILE_CREATE, "CREATE-FILE",  0 );\r
        CreateDicEntryC( ID_FILL, "FILL", 0 );\r
        CreateDicEntryC( ID_FIND, "FIND",  0 );\r
        CreateDicEntryC( ID_FILE_CREATE, "CREATE-FILE",  0 );\r
+       CreateDicEntryC( ID_FILE_DELETE, "DELETE-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_OPEN, "OPEN-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_CLOSE, "CLOSE-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_READ, "READ-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_OPEN, "OPEN-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_CLOSE, "CLOSE-FILE",  0 );\r
        CreateDicEntryC( ID_FILE_READ, "READ-FILE",  0 );\r