Blame src/regression/fgetwc-buffering.c
|
Szabolcs Nagy |
4db9f0 |
// decode across buffer boundary
|
|
Szabolcs Nagy |
4db9f0 |
#include <stdio.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include <locale.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include <wchar.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include <unistd.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include <errno.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include <string.h>
|
|
Szabolcs Nagy |
4db9f0 |
#include "test.h"
|
|
Szabolcs Nagy |
4db9f0 |
|
|
Szabolcs Nagy |
4db9f0 |
#define A(c) do { if (!(c)) t_error(#c" failed\n"); } while(0)
|
|
Szabolcs Nagy |
4db9f0 |
|
|
Szabolcs Nagy |
4db9f0 |
int main()
|
|
Szabolcs Nagy |
4db9f0 |
{
|
|
Szabolcs Nagy |
4db9f0 |
t_setutf8();
|
|
Szabolcs Nagy |
4db9f0 |
|
|
Szabolcs Nagy |
4db9f0 |
int p[2];
|
|
Szabolcs Nagy |
4db9f0 |
A(pipe(p) == 0);
|
|
Szabolcs Nagy |
4db9f0 |
A(write(p[1], "x\340\240", 3) == 3);
|
|
Szabolcs Nagy |
4db9f0 |
A(dup2(p[0], 0) == 0);
|
|
Szabolcs Nagy |
4db9f0 |
wint_t wc;
|
|
Szabolcs Nagy |
4db9f0 |
wc = fgetwc(stdin);
|
|
Szabolcs Nagy |
4db9f0 |
A(wc == 'x');
|
|
Szabolcs Nagy |
4db9f0 |
A(write(p[1], "\200", 1) == 1);
|
|
Szabolcs Nagy |
4db9f0 |
close(p[1]);
|
|
Szabolcs Nagy |
4db9f0 |
|
|
Szabolcs Nagy |
4db9f0 |
wc = fgetwc(stdin);
|
|
Szabolcs Nagy |
4db9f0 |
if (wc != 0x800)
|
|
Szabolcs Nagy |
4db9f0 |
t_error("wanted 0x800, got 0x%x\n", (unsigned)wc);
|
|
Szabolcs Nagy |
4db9f0 |
|
|
Szabolcs Nagy |
174ab5 |
errno = 0;
|
|
Szabolcs Nagy |
4db9f0 |
wc = fgetwc(stdin);
|
|
Szabolcs Nagy |
4db9f0 |
if (wc != WEOF)
|
|
Szabolcs Nagy |
4db9f0 |
t_error("wanted WEOF, got 0x%x\n", (unsigned)wc);
|
|
Szabolcs Nagy |
4db9f0 |
if (errno != 0)
|
|
Szabolcs Nagy |
4db9f0 |
t_error("wanted errno==0, got %d (%s)\n", errno, strerror(errno));
|
|
Szabolcs Nagy |
4db9f0 |
A(feof(stdin)!=0);
|
|
Szabolcs Nagy |
4db9f0 |
A(ferror(stdin)==0);
|
|
Szabolcs Nagy |
4db9f0 |
return t_status;
|
|
Szabolcs Nagy |
4db9f0 |
}
|