This commit is contained in:
parent
90140d3c70
commit
4ae1cec546
@ -266,7 +266,11 @@ StdAwk::ssize_t StdAwk::readPipe (Pipe& io, char_t* buf, size_t len)
|
|||||||
while (n < (ssize_t)len)
|
while (n < (ssize_t)len)
|
||||||
{
|
{
|
||||||
ase_cint_t c = ase_fgetc (fp);
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
if (c == ASE_CHAR_EOF) break;
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
buf[n++] = c;
|
buf[n++] = c;
|
||||||
if (c == ASE_T('\n')) break;
|
if (c == ASE_T('\n')) break;
|
||||||
@ -369,7 +373,11 @@ StdAwk::ssize_t StdAwk::readFile (File& io, char_t* buf, size_t len)
|
|||||||
while (n < (ssize_t)len)
|
while (n < (ssize_t)len)
|
||||||
{
|
{
|
||||||
ase_cint_t c = ase_fgetc (fp);
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
if (c == ASE_CHAR_EOF) break;
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
buf[n++] = c;
|
buf[n++] = c;
|
||||||
if (c == ASE_T('\n')) break;
|
if (c == ASE_T('\n')) break;
|
||||||
|
@ -301,7 +301,11 @@ protected:
|
|||||||
while (n < (ssize_t)len)
|
while (n < (ssize_t)len)
|
||||||
{
|
{
|
||||||
ase_cint_t c = ase_fgetc (fp);
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
if (c == ASE_CHAR_EOF) break;
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
buf[n++] = c;
|
buf[n++] = c;
|
||||||
if (c == ASE_T('\n')) break;
|
if (c == ASE_T('\n')) break;
|
||||||
@ -424,6 +428,7 @@ protected:
|
|||||||
ase_cint_t c = ase_fgetc (fp);
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
if (c == ASE_CHAR_EOF)
|
if (c == ASE_CHAR_EOF)
|
||||||
{
|
{
|
||||||
|
if (ase_ferror(fp)) return -1;
|
||||||
if (t->nextConIdx >= numConInFiles) break;
|
if (t->nextConIdx >= numConInFiles) break;
|
||||||
|
|
||||||
const char_t* fn = conInFile[t->nextConIdx];
|
const char_t* fn = conInFile[t->nextConIdx];
|
||||||
|
@ -239,11 +239,19 @@ static ase_ssize_t awk_srcio_in (
|
|||||||
}
|
}
|
||||||
else if (cmd == ASE_AWK_IO_READ)
|
else if (cmd == ASE_AWK_IO_READ)
|
||||||
{
|
{
|
||||||
if (size <= 0) return -1;
|
ase_ssize_t n = 0;
|
||||||
c = ase_fgetc ((FILE*)src_io->input_handle);
|
FILE* fp = (FILE*)src_io->input_handle;
|
||||||
if (c == ASE_CHAR_EOF) return 0;
|
while (!ase_feof(fp) && n < size)
|
||||||
*data = (ase_char_t)c;
|
{
|
||||||
return 1;
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data[n++] = c;
|
||||||
|
}
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
@ -321,6 +329,7 @@ static ase_ssize_t awk_extio_pipe (
|
|||||||
|
|
||||||
case ASE_AWK_IO_READ:
|
case ASE_AWK_IO_READ:
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
||||||
if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
||||||
{
|
{
|
||||||
@ -328,6 +337,20 @@ static ase_ssize_t awk_extio_pipe (
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return ase_strlen(data);
|
return ase_strlen(data);
|
||||||
|
*/
|
||||||
|
ase_ssize_t n = 0;
|
||||||
|
FILE* fp = (FILE*)epa->handle;
|
||||||
|
while (!ase_feof(fp) && n < size)
|
||||||
|
{
|
||||||
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data[n++] = c;
|
||||||
|
}
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
case ASE_AWK_IO_WRITE:
|
case ASE_AWK_IO_WRITE:
|
||||||
@ -443,6 +466,7 @@ static ase_ssize_t awk_extio_file (
|
|||||||
|
|
||||||
case ASE_AWK_IO_READ:
|
case ASE_AWK_IO_READ:
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
||||||
if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
||||||
{
|
{
|
||||||
@ -450,6 +474,20 @@ static ase_ssize_t awk_extio_file (
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return ase_strlen(data);
|
return ase_strlen(data);
|
||||||
|
*/
|
||||||
|
ase_ssize_t n = 0;
|
||||||
|
FILE* fp = (FILE*)epa->handle;
|
||||||
|
while (!ase_feof(fp) && n < size)
|
||||||
|
{
|
||||||
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data[n++] = c;
|
||||||
|
}
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
case ASE_AWK_IO_WRITE:
|
case ASE_AWK_IO_WRITE:
|
||||||
@ -503,6 +541,23 @@ static const ase_char_t* infiles[1000] =
|
|||||||
ASE_NULL
|
ASE_NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static ase_ssize_t getdata (ase_char_t* data, ase_size_t size, FILE* fp)
|
||||||
|
{
|
||||||
|
ase_ssize_t n = 0;
|
||||||
|
while (!ase_feof(fp) && n < size)
|
||||||
|
{
|
||||||
|
ase_cint_t c = ase_fgetc (fp);
|
||||||
|
if (c == ASE_CHAR_EOF)
|
||||||
|
{
|
||||||
|
if (ase_ferror(fp)) n = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data[n++] = c;
|
||||||
|
if (c == ASE_T('\n')) break;
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
static ase_ssize_t awk_extio_console (
|
static ase_ssize_t awk_extio_console (
|
||||||
int cmd, void* arg, ase_char_t* data, ase_size_t size)
|
int cmd, void* arg, ase_char_t* data, ase_size_t size)
|
||||||
{
|
{
|
||||||
@ -518,12 +573,15 @@ static ase_ssize_t awk_extio_console (
|
|||||||
}
|
}
|
||||||
else if (cmd == ASE_AWK_IO_READ)
|
else if (cmd == ASE_AWK_IO_READ)
|
||||||
{
|
{
|
||||||
int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
ase_ssize_t n;
|
||||||
|
/*int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size;
|
||||||
|
|
||||||
while (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
while (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL)
|
||||||
{
|
{
|
||||||
if (ferror((FILE*)epa->handle)) return -1;
|
if (ferror((FILE*)epa->handle)) return -1;*/
|
||||||
|
|
||||||
|
while ((n = getdata(data,size,(FILE*)epa->handle)) == 0)
|
||||||
|
{
|
||||||
/* it has reached the end of the current file.
|
/* it has reached the end of the current file.
|
||||||
* open the next file if available */
|
* open the next file if available */
|
||||||
if (infiles[infile_no] == ASE_NULL)
|
if (infiles[infile_no] == ASE_NULL)
|
||||||
@ -611,7 +669,8 @@ static ase_ssize_t awk_extio_console (
|
|||||||
infile_no++;
|
infile_no++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ase_strlen(data);
|
/*return ase_strlen(data);*/
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
else if (cmd == ASE_AWK_IO_WRITE)
|
else if (cmd == ASE_AWK_IO_WRITE)
|
||||||
{
|
{
|
||||||
|
@ -20,22 +20,26 @@
|
|||||||
#define ase_fprintf _ftprintf
|
#define ase_fprintf _ftprintf
|
||||||
#define ase_vfprintf _vftprintf
|
#define ase_vfprintf _vftprintf
|
||||||
|
|
||||||
#define ase_fgets _fgetts
|
#define ase_fgets(x,y,s) _fgetts(x,y,s)
|
||||||
#define ase_fgetc _fgettc
|
#define ase_fgetc(x) _fgettc(x)
|
||||||
#define ase_fputs _fputts
|
#define ase_fputs(x,s) _fputts(x,s)
|
||||||
#define ase_fputc _fputtc
|
#define ase_fputc(x,s) _fputtc(x,s)
|
||||||
#elif defined(ASE_CHAR_IS_MCHAR)
|
#elif defined(ASE_CHAR_IS_MCHAR)
|
||||||
#define ase_fgets fgets
|
#define ase_fgets(x,y,s) fgets(x,y,s)
|
||||||
#define ase_fgetc fgetc
|
#define ase_fgetc(x) fgetc(x)
|
||||||
#define ase_fputs fputs
|
#define ase_fputs(x,s) fputs(x,s)
|
||||||
#define ase_fputc fputc
|
#define ase_fputc(x,s) fputc(x,s)
|
||||||
#else
|
#else
|
||||||
#define ase_fgets fgetws
|
#define ase_fgets(x,y,s) fgetws(x,y,s)
|
||||||
#define ase_fgetc fgetwc
|
#define ase_fgetc(x) fgetwc(x)
|
||||||
#define ase_fputs fputws
|
#define ase_fputs(x,s) fputws(x,s)
|
||||||
#define ase_fputc fputwc
|
#define ase_fputc(x,s) fputwc(x,s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define ase_feof(s) feof(s)
|
||||||
|
#define ase_ferror(s) ferror(s)
|
||||||
|
#define ase_clearerr(s) clearerr(s)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user