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