본문 바로가기
C 언어

ungetwc

by SpeeDr00t 2016. 7. 9.
반응형

wint_t ungetwc(wint_t wc, FILE *fp)



#include <errno.h>
#include <stdio.h>
#include <wchar.h>
#include "local.h"

wint_t
ungetwc(wint_t wc, FILE *fp)
{
	struct wchar_io_data *wcio;

	if (wc == WEOF)
		return WEOF;

	flockfile(fp);
	_SET_ORIENTATION(fp, 1);
	/*
	 * XXX since we have no way to transform a wchar string to
	 * a char string in reverse order, we can't use ungetc.
	 */
	/* XXX should we flush ungetc buffer? */

	wcio = WCIO_GET(fp);
	if (wcio == 0) {
		funlockfile(fp);
		errno = ENOMEM; /* XXX */
		return WEOF;
	}

	if (wcio->wcio_ungetwc_inbuf >= WCIO_UNGETWC_BUFSIZE) {
		funlockfile(fp);
		return WEOF;
	}

	wcio->wcio_ungetwc_buf[wcio->wcio_ungetwc_inbuf++] = wc;
	__sclearerr(fp);
	funlockfile(fp);

	return wc;
}
반응형

'C 언어' 카테고리의 다른 글

tmpnam  (0) 2016.07.09
ungetc  (0) 2016.07.09
tmpfile  (0) 2016.07.09
vfprintf  (0) 2016.07.09
VFSCANF  (0) 2016.07.09