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