From 386b7d3366f1359a265da207a9cafa3edf553b64 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Mon, 7 Oct 2019 19:13:39 -0400 Subject: Reorganize and commit all the modified TACLeBench code and run scripts --- baseline/source/susan/wccfile.c | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 baseline/source/susan/wccfile.c (limited to 'baseline/source/susan/wccfile.c') diff --git a/baseline/source/susan/wccfile.c b/baseline/source/susan/wccfile.c new file mode 100644 index 0000000..42db3db --- /dev/null +++ b/baseline/source/susan/wccfile.c @@ -0,0 +1,79 @@ +#include "wccfile.h" +#define EOFX -1 + +size_x susan_wccfread(void* ptr, size_x size, size_x count, struct wccFILE* stream) +{ + if ( susan_wccfeof( stream ) ) { + return EOFX; + } + + unsigned i = stream->cur_pos, i2 = 0; + size_x number_of_chars_to_read = + stream->size - stream->cur_pos >= size * count ? + size * count : stream->size - stream->cur_pos; + _Pragma( "loopbound min 7220 max 7220" ) + while (i < stream->cur_pos + number_of_chars_to_read) { + ((unsigned char*)ptr)[i2++] = stream->data[i++]; + } + stream->cur_pos += number_of_chars_to_read; + return number_of_chars_to_read; +} + +int susan_wccfgetc(struct wccFILE *stream) +{ + if ( susan_wccfeof( stream ) ) { + return EOFX; + } else { + return stream->data[stream->cur_pos++]; + } +} + +char *susan_wccfgets(char *str, int num, struct wccFILE *stream ) +{ + if ( !stream || susan_wccfeof( stream ) || !str || num <= 0 ) { + return 0; + } + + int pos = 0; + _Pragma( "loopbound min 58 max 58" ) + while ( pos < num - 1 && !susan_wccfeof( stream ) ) { + str[pos] = stream->data[stream->cur_pos]; + if ( str[pos] == '\n' ) { + break; + } + + stream->cur_pos++; + pos++; + } + str[pos++] = '\0'; + + return str; +} + +int susan_wccfseek(struct wccFILE* stream, long int offset, enum _Origin_ origin) +{ + if (origin == WCCSEEK_SET) { + stream->cur_pos = offset; + return 0; + } else if (origin == WCCSEEK_CUR) { + stream->cur_pos += offset; + return 0; + } else if (origin == WCCSEEK_END) { + stream->cur_pos = stream->size + offset; + return 0; + } + return -1; +} + + +int susan_wccfgetpos(struct wccFILE* stream, unsigned* position) +{ + *position = stream->cur_pos; + return 0; +} + + +int susan_wccfeof(struct wccFILE* stream) +{ + return stream->cur_pos == stream->size ? 1 : 0; +} -- cgit v1.2.2