Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_FS_1_19910112 - c/lib/stdio/getw.c
There are 7 other files named getw.c in the archive. Click here to see a list.
/*
**	GETW	- get an int from a stream
**
**	(c) Copyright Ken Harrenstien 1989
**
**	Returns EOF on error or EOF.
** As per BSD, assumes no special alignment in stream.
** Note that partial words will be filled out with all-ones bytes, and this
** hack is what provides an EOF value if all bytes were EOF!
*/

#include <stdio.h>

int getw(f)
FILE *f;
{
    union {
	int word;
	char chs[sizeof(int)];
    } val;
    register int i = sizeof(int);
    register char *cp = val.chs-1;

    /* Slow method, used when not sure we have enough chars in buffer
    ** for a direct copy.
    */
    do {
	*++cp = getc(f);
    } while (--i > 0);

    return val.word;
}