00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <stdio.h>
00030 #include <stdlib.h>
00031 #include <errno.h>
00032 #include "../tester.h"
00033
00034 #define BUF_SIZE 32
00035
00036 static char buf[BUF_SIZE + 1];
00037
00038 const char *test_stdio1(void)
00039 {
00040 FILE *file;
00041 const char *file_name = "/readme";
00042
00043 TPRINTF("Open file \"%s\"...", file_name);
00044 errno = 0;
00045 file = fopen(file_name, "rt");
00046 if (file == NULL) {
00047 TPRINTF("errno = %d\n", errno);
00048 return "Failed opening file";
00049 } else
00050 TPRINTF("OK\n");
00051
00052 TPRINTF("Read file...");
00053 size_t cnt = fread(buf, 1, BUF_SIZE, file);
00054 if (ferror(file)) {
00055 TPRINTF("errno = %d\n", errno);
00056 fclose(file);
00057 return "Failed reading file";
00058 } else
00059 TPRINTF("OK\n");
00060
00061 buf[cnt] = '\0';
00062 TPRINTF("Read %zu bytes, string \"%s\"\n", cnt, buf);
00063
00064 TPRINTF("Seek to beginning...");
00065 if (fseek(file, 0, SEEK_SET) != 0) {
00066 TPRINTF("errno = %d\n", errno);
00067 fclose(file);
00068 return "Failed seeking in file";
00069 } else
00070 TPRINTF("OK\n");
00071
00072 TPRINTF("Read using fgetc()...");
00073 while (true) {
00074 int c = fgetc(file);
00075 if (c == EOF)
00076 break;
00077
00078 TPRINTF(".");
00079 }
00080 TPRINTF("[EOF]\n");
00081
00082 TPRINTF("Close...");
00083 if (fclose(file) != 0) {
00084 TPRINTF("errno = %d\n", errno);
00085 return "Failed closing file";
00086 } else
00087 TPRINTF("OK\n");
00088
00089 return NULL;
00090 }