summaryrefslogtreecommitdiff
path: root/src/stdio/fwide.c
blob: 8088e7ad4311f116a579c998f7aa4bee3e3e85c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <wchar.h>
#include "stdio_impl.h"

#define SH (8*sizeof(int)-1)
#define NORMALIZE(x) ((x)>>SH | -((-(x))>>SH))

int fwide(FILE *f, int mode)
{
	FLOCK(f);
	if (!f->mode) f->mode = NORMALIZE(mode);
	mode = f->mode;
	FUNLOCK(f);
	return mode;
}