--- gforth/engine/engine.c 2002/08/19 07:38:16 1.43 +++ gforth/engine/engine.c 2002/12/28 17:18:27 1.54 @@ -19,8 +19,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. */ -undefine(`symbols') - #include "config.h" #include "forth.h" #include @@ -66,6 +64,14 @@ undefine(`symbols') #define SEEK_SET 0 #endif +#ifndef HAVE_FSEEKO +#define fseeko fseek +#endif + +#ifndef HAVE_FTELLO +#define ftello ftell +#endif + #define IOR(flag) ((flag)? -512-errno : 0) struct F83Name { @@ -84,14 +90,6 @@ struct Longname { #define LONGNAME_COUNT(np) ((np)->countetc & (((~((UCell)0))<<3)>>3)) -Cell *SP; -Float *FP; -Address UP=NULL; - -#if 0 -/* not used currently */ -int emitcounter; -#endif #define NULLC '\0' #ifdef MEMCMP_AS_SUBROUTINE @@ -99,120 +97,8 @@ extern int gforth_memcmp(const char * s1 #define memcmp(s1,s2,n) gforth_memcmp(s1,s2,n) #endif -#ifdef HAS_FILE -char *cstr(Char *from, UCell size, int clear) -/* return a C-string corresponding to the Forth string ( FROM SIZE ). - the C-string lives until the next call of cstr with CLEAR being true */ -{ - static struct cstr_buffer { - char *buffer; - size_t size; - } *buffers=NULL; - static int nbuffers=0; - static int used=0; - struct cstr_buffer *b; - - if (buffers==NULL) - buffers=malloc(0); - if (clear) - used=0; - if (used>=nbuffers) { - buffers=realloc(buffers,sizeof(struct cstr_buffer)*(used+1)); - buffers[used]=(struct cstr_buffer){malloc(0),0}; - nbuffers=used+1; - } - b=&buffers[used]; - if (size+1 > b->size) { - b->buffer = realloc(b->buffer,size+1); - b->size = size+1; - } - memcpy(b->buffer,from,size); - b->buffer[size]='\0'; - used++; - return b->buffer; -} - -char *tilde_cstr(Char *from, UCell size, int clear) -/* like cstr(), but perform tilde expansion on the string */ -{ - char *s1,*s2; - int s1_len, s2_len; - struct passwd *getpwnam (), *user_entry; - - if (size<1 || from[0]!='~') - return cstr(from, size, clear); - if (size<2 || from[1]=='/') { - s1 = (char *)getenv ("HOME"); - if(s1 == NULL) - s1 = ""; - s2 = from+1; - s2_len = size-1; - } else { - UCell i; - for (i=1; ipw_dir; - s2 = from+i; - s2_len = size-i; - } - s1_len = strlen(s1); - if (s1_len>1 && s1[s1_len-1]=='/') - s1_len--; - { - char path[s1_len+s2_len]; - memcpy(path,s1,s1_len); - memcpy(path+s1_len,s2,s2_len); - return cstr(path,s1_len+s2_len,clear); - } -} -#endif - -DCell timeval2us(struct timeval *tvp) -{ -#ifndef BUGGY_LONG_LONG - return (tvp->tv_sec*(DCell)1000000)+tvp->tv_usec; -#else - DCell d2; - DCell d1=mmul(tvp->tv_sec,1000000); - d2.lo = d1.lo+tvp->tv_usec; - d2.hi = d1.hi + (d2.lo