mirror of https://github.com/flysand7/ciabatta.git
fputc
This commit is contained in:
parent
29a98bf8a3
commit
1e58a85f02
|
@ -4,5 +4,6 @@
|
|||
#define EDOM 1
|
||||
#define EILSEQ 2
|
||||
#define ERANGE 3
|
||||
#define EIO 4
|
||||
|
||||
extern _Thread_local int errno;
|
||||
|
|
|
@ -216,6 +216,7 @@ char *strerror(int errnum) {
|
|||
case EDOM: return "Value is out of domain of the function";
|
||||
case EILSEQ: return "Illegal byte sequence";
|
||||
case ERANGE: return "Value is out of range";
|
||||
case EIO: return "I/O error";
|
||||
}
|
||||
return "Unkown error";
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ size_t c16rtomb(
|
|||
char16_t c16,
|
||||
mbstate_t *restrict ps
|
||||
) {
|
||||
if(*s == NULL) {
|
||||
if(s == NULL) {
|
||||
*ps = (mbstate_t) {0};
|
||||
return 0;
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ size_t c32rtomb(
|
|||
char32_t c32,
|
||||
mbstate_t *restrict ps
|
||||
) {
|
||||
if(*s == NULL) {
|
||||
if(s == NULL) {
|
||||
*ps = (mbstate_t) {0};
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <stdbool.h>
|
||||
#include <threads.h>
|
||||
#include <uchar.h>
|
||||
#include <errno.h>
|
||||
|
||||
enum str_type {
|
||||
STR_R,
|
||||
|
@ -69,6 +70,7 @@ static inline FILE *new_file(
|
|||
file_list_last->next = file;
|
||||
file->prev = file_list_last;
|
||||
file->next = NULL;
|
||||
file_list_last = file;
|
||||
}
|
||||
else {
|
||||
file_list_last = file;
|
||||
|
@ -94,6 +96,7 @@ static inline void dispose_file(FILE *file) {
|
|||
if(next == NULL) file_list_last = prev;
|
||||
free(file);
|
||||
mtx_unlock(&lock);
|
||||
mtx_destroy(&lock);
|
||||
}
|
||||
|
||||
void _setup_io() {
|
||||
|
@ -147,15 +150,27 @@ int setvbuf(
|
|||
}
|
||||
|
||||
int fflush(FILE *stream) {
|
||||
if(mode == _IOFBF) {
|
||||
if(stream->mode == _IOFBF) {
|
||||
|
||||
}
|
||||
else if(mode == _IONBF) {
|
||||
else if(stream->mode == _IONBF) {
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fputc(int c, FILE *stream) {
|
||||
mtx_lock(&stream->lock);
|
||||
DWORD written;
|
||||
BOOL ok = WriteFile(stream->handle, &c, 1, &written, NULL);
|
||||
mtx_unlock(&stream->lock);
|
||||
if(!ok) {
|
||||
errno = EIO;
|
||||
return EOF;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
void setbuf(FILE *restrict stream, char *restrict buf) {
|
||||
if(buf != NULL)
|
||||
setvbuf(stream, buf, _IOFBF, BUFSIZ);
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
fputc('Z', stdout);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue