From 6d4f4ee1eeef43e48937bdd3dd1837e12a1e9892 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Fri, 16 Jul 2004 09:31:45 +0000 Subject: add code for freadsubstring and fwritesubstring for linux, not yet enabled --- ifileIO3.s | 21 +++++++++++++-------- ufileIO2.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 72 insertions(+), 12 deletions(-) diff --git a/ifileIO3.s b/ifileIO3.s index a766f94..73cc1dd 100644 --- a/ifileIO3.s +++ b/ifileIO3.s @@ -12,6 +12,11 @@ // # saved registers: %ebx %esi %edi %ebp // # d1 a3 a4 a2 +#ifdef LINUX +# define OLD_READ_STRING +# define OLD_WRITE_STRING +#endif + .data #if defined (DOS) || defined (_WINDOWS_) || defined (ELF) .align 8 @@ -39,7 +44,7 @@ fwritestring_error: .globl readFI .globl readFR .globl readFS -#ifndef LINUX +#ifndef OLD_READ_STRING .globl readFString #endif .globl readLineF @@ -47,7 +52,7 @@ fwritestring_error: .globl writeFI .globl writeFR .globl writeFS -#ifndef LINUX +#ifndef OLD_WRITE_STRING .globl writeFString #endif .globl endF @@ -78,7 +83,7 @@ fwritestring_error: .globl @file_read_char .globl @file_read_int .globl @file_read_real -#ifdef LINUX +#ifdef OLD_READ_STRING .globl @file_read_string #else .globl @file_read_characters @@ -87,7 +92,7 @@ fwritestring_error: .globl @file_write_char .globl @file_write_int .globl @file_write_real -#ifdef LINUX +#ifdef OLD_WRITE_STRING .globl @file_write_string #else .globl @file_write_characters @@ -210,7 +215,7 @@ readFR: movl $-1,(sp) jmp *a2 -#ifndef LINUX +#ifndef OLD_READ_STRING readFString: movl 4(a0),a2 cmpl a2,d1 @@ -256,7 +261,7 @@ readFS: popl a1 ja readFS_gc readFS_r_gc: -#ifdef LINUX +#ifdef OLD_READ_STRING movl $__STRING__+2,(a4) addl $4,a4 @@ -412,7 +417,7 @@ writeFR: writeFS: pushl d1 -#ifdef LINUX +#ifdef OLD_WRITE_STRING addl $4,a0 pushl a0 call @file_write_string @@ -427,7 +432,7 @@ writeFS: movl $-1,d0 ret -#ifndef LINUX +#ifndef OLD_WRITE_STRING writeFString: movl 4(a0),a2 cmpl a2,d1 diff --git a/ufileIO2.c b/ufileIO2.c index d4a6d57..ba8484f 100644 --- a/ufileIO2.c +++ b/ufileIO2.c @@ -593,7 +593,7 @@ int file_read_real (long fn,double *r_p) } } else if (f->mode & (1<file,"%lg",r_p)!=1) - return 0; + return 0; } else IO_error ("FReadR: read from an output file"); @@ -601,8 +601,19 @@ int file_read_real (long fn,double *r_p) } } +#define OLD_READ_STRING 1 +#define OLD_WRITE_STRING 1 + +#if OLD_READ_STRING unsigned long file_read_string (long fn,unsigned long max_length,struct clean_string *s) { +#else +unsigned long file_read_characters (long fn,unsigned long *length_p,char *s) +{ + unsigned long max_length; + + max_length=*length_p; +#endif unsigned long length; if (fncharacters,1,max_length,stdin); +#if OLD_READ_STRING + length = fread (s->characters,1,max_length,stdin); s->length=length; +#else + length = fread (s,1,max_length,stdin); + *length_p=length; +#endif return length; default: IO_error ("FReadS: can't open this file"); @@ -626,9 +642,13 @@ unsigned long file_read_string (long fn,unsigned long max_length,struct clean_st IO_error ("FReadS: read from an output file"); fd=f->file; +#if OLD_READ_STRING length = fread (s->characters,1,max_length,fd); s->length=length; - +#else + length = fread (s,1,max_length,fd); + *length_p=length; +#endif return length; } } @@ -646,6 +666,25 @@ unsigned long file_read_line (long fn,unsigned long max_length,char *string) int c; length=0; +#if 0 + fgets (string,max_length,stdin); + + string [max_length-1]='\0'; + while (string[length]!='\0') + ++length; + + if (lengthcharacters,s->length); +#else + ew_print_text (p,length); +#endif break; case 1: +#if OLD_WRITE_STRING w_print_text (s->characters,s->length); +#else + w_print_text (p,length); +#endif break; default: IO_error ("FWriteS: can't open this file"); @@ -884,8 +936,11 @@ void file_write_string (struct clean_string *s,long fn) if (f->mode & ~((1<characters,sizeof (char),s->length,f->file); +#else + fwrite (p,sizeof (char),length,f->file); +#endif } } -- cgit v1.2.3