Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8623 → Rev 8624

/contrib/kolibri-libc/source/stdio/fgetc.c
1,11 → 1,38
#include <stdio.h>
#include <errno.h>
#include <ksys.h>
 
int fgetc(FILE* stream)
{
int c, rc;
rc = fread(&c, sizeof(char), 1, stream);
if(rc<1){
unsigned bytes_read;
char c;
 
unsigned status = _ksys_file_read_file(stream->name, stream->position, 1, &c, &bytes_read);
 
if (status != _KOS_FS_ERR_SUCCESS) {
switch (status) {
case _KOS_FS_ERR_EOF:
stream->eof = 1;
break;
case _KOS_FS_ERR_1:
case _KOS_FS_ERR_2:
case _KOS_FS_ERR_3:
case _KOS_FS_ERR_4:
case _KOS_FS_ERR_5:
case _KOS_FS_ERR_7:
case _KOS_FS_ERR_8:
case _KOS_FS_ERR_9:
case _KOS_FS_ERR_10:
case _KOS_FS_ERR_11:
default:
// Just some IO error, who knows what exactly happened
errno = EIO;
stream->error = errno;
break;
}
return EOF;
}
 
stream->position++;
return c;
}
/contrib/kolibri-libc/source/stdio/fputc.c
1,9 → 1,35
#include <stdio.h>
#include <errno.h>
#include <ksys.h>
 
int fputc(int sym, FILE *stream)
int fputc(int c, FILE *stream)
{
if(!fwrite(&sym, sizeof(char), 1, stream)){
unsigned bytes_written;
 
unsigned status = _ksys_file_write_file(stream->name, stream->position, 1, &c, &bytes_written);
if (status != _KOS_FS_ERR_SUCCESS) {
switch (status) {
case _KOS_FS_ERR_1:
case _KOS_FS_ERR_2:
case _KOS_FS_ERR_3:
case _KOS_FS_ERR_4:
case _KOS_FS_ERR_5:
case _KOS_FS_ERR_EOF:
case _KOS_FS_ERR_7:
case _KOS_FS_ERR_8:
case _KOS_FS_ERR_9:
case _KOS_FS_ERR_10:
case _KOS_FS_ERR_11:
default:
// Just some IO error, who knows what exactly happened
errno = EIO;
stream->error = errno;
break;
}
return EOF;
}
return sym;
 
stream->position++;
return c;
}
/contrib/kolibri-libc/source/stdio/fputs.c
2,9 → 2,10
#include <string.h>
 
int fputs(const char *str, FILE *stream){
int s_code;
for(int i=0; i<strlen(str) && s_code!=EOF; i++){
s_code = fputc(str[i], stream);
for(size_t i = 0; i < strlen(str); i++){
if (fputc(str[i], stream) == EOF) {
return EOF;
}
return s_code;
}
return 0;
}
/contrib/kolibri-libc/source/stdio/fread.c
3,14 → 3,18
size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict stream) {
unsigned bytes_read = 0;
unsigned bytes_count = size * nmemb;
_ksys_file_read_file(stream->name, stream->position, bytes_count, ptr, &bytes_read);
stream->position += bytes_read;
ksys_bdfe_t info;
// TODO: Handle _ksys_file_get_info error somehow
if (!_ksys_file_get_info(stream->name, &info)) {
if (stream->position >= info.size) {
stream->eof = 1;
 
for (size_t i = 0; i < bytes_count; i++) {
char c = fgetc(stream);
 
if (c == EOF) {
break;
}
 
ptr[i] = c;
 
bytes_read++;
}
 
return bytes_read / size;
}
/contrib/kolibri-libc/source/stdio/fwrite.c
3,14 → 3,16
size_t fwrite(const void * restrict ptr,size_t size, size_t nmemb,FILE * restrict stream) {
unsigned bytes_written = 0;
unsigned bytes_count = size * nmemb;
_ksys_file_write_file(stream->name, stream->position, bytes_count, ptr, &bytes_written);
stream->position += bytes_written;
ksys_bdfe_t info;
// TODO: Handle _ksys_file_get_info error somehow
if (!_ksys_file_get_info(stream->name, &info)) {
if (stream->position >= info.size) {
stream->eof = 1;
 
for (size_t i = 0; i < bytes_count; i++) {
char c = ptr[i];
 
if (fputc(c, stream) != c) {
break;
}
 
bytes_written++;
}
 
return bytes_written / size;
}