about summary refs log tree commit diff
path: root/src/stdio/fwide.c
blob: fdf8e4bb334706ad8e4d2f911de30876e50b3bd4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
#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) mode = f->mode = NORMALIZE(mode);
	FUNLOCK(f);
	return mode;
}