RUNE(3)

명칭
setrunelocale, setinvalidrune, sgetrune, sputrune, fgetrune, fungetrune, fputrune - C 용 룬 서포트

프로그램 라이브러리
libc

서식
<rune.h> <errno.h> int setrunelocale(char *locale) void setinvalidrune(rune_t rune) rune_t sgetrune(const char *string, size_t n, char const **result) int sputrune(rune_t rune, char *string, size_t n, char **result)

<stdio.h> long fgetrune(FILE *stream) int fungetrune(rune_t rune, FILE *stream) int fputrune(rune_t rune, FILE *stream)

해설
setrunelocale() (은)는, 멀티 byte string로서 룬을 표현하기 위한 encode의 타입, 및 <ctype.h> 그리고 정의된 룬의 프로퍼티를 제어합니다. locale 인수는, 로드하는 로케일을 지정합니다. 로케일이 정상적으로 로드 되면(자) 0 하지만 되돌려져 로드에서 문제가 생기면(자) 에러 타입을 나타낸다 errno 값이 되돌려집니다.

setinvalidrune() 함수는, 글로벌치 _INVALID_RUNE 의 값을 rune (으)로 설정합니다.

sgetrune() 함수는, 길이가 최대 n 바이트의 1 개의 멀티 바이트 캐릭터를 string (으)로부터 읽어들이려고 합니다. sgetrune() 그리고 문제가 발생하지 않았던 경우는 룬이 되돌려집니다. result 하지만 NULL (이)가 아닌 경우, *result (은)는, string 그리고 변환되지 않았던 최초의 바이트를 가리킵니다. string 의 최초의 n 바이트가 완전한 멀티 아르바이트 캐릭터를 나타내지 않는 경우는 _INVALID_RUNE 하지만 되돌려져 *result 하 string (을)를 가리킵니다. string 의 최초로 encode의 에러가 발생했을 경우는 _INVALID_RUNE 하지만 되돌려져 *result 하 string 의 제 2 캐릭터를 가리킵니다.

sputrune() 함수는, 멀티 byte string로서 rune (을)를 encode 해, string 에 보존하려고 합니다. 그러나 n 바이트까지 밖에 보존되지 않습니다. result 하지만 NULL (이)가 아닌 경우, *result (은)는, 새로운 멀티 바이트 캐릭터에 계속되는 string의 최초의 바이트를 가리키도록(듯이) 설정됩니다. string 하지만 NULL 인 경우, *result 하 (char *) 0 + x (을)를 가리킵니다. x (은)는, 멀티 바이트치의 보존에 필요한 아르바이트수입니다. 멀티 바이트 캐릭터가 n 보다 긴 바이트로부터 구성되어 result 하지만 NULL (이)가 아닌 경우, *result 하 NULL (으)로 설정됩니다. 어떠한 경우에서도, sputrune() (은)는, 멀티 바이트 캐릭터로서 rune (을)를 보존하기 위해서 필요한 바이트수를 되돌립니다.

fgetrune() 함수는, 1 개의 룬을 디코드하는데 만족수의 바이트를 stream (으)로부터 읽어들이려고 하는 것을 제외하면, sgetrune() (와)과 같은 동작을 합니다. 파일의 마지막에 이르렀을 경우는 EOF (을)를, encode로 에러가 발생했을 경우는 _INVALID_RUNE (을)를, 문제가 발생하지 않았던 경우는 디코드된 룬을 되돌립니다.

fungetrune() 함수는, 다음에 fgetrune() (을)를 호출했을 경우에 rune 하지만 되돌려지도록(듯이), sputrune() 하지만 준다 rune 의 멀티 바이트 encode를 stream 에 푸쉬 합니다. 에러가 발생했을 경우는 EOF (을)를 되돌려, 에러가 발생하지 않았던 경우는 0 (을)를 되돌립니다.

fputrune() 함수는, sputrune() 하지만 준다 rune 의 멀티 바이트 encode를 stream 에 기입합니다. 에러가 발생했을 경우는 EOF (을)를 되돌려, 에러가 발생하지 않았던 경우는 0 (을)를 되돌립니다.

반환값
setrunelocale() 함수는, 이하의 값의 어떤 것인가 1 개를 되돌립니다.

0   setrunelocale() 그리고 문제가 발생하지 않았습니다.

[EFAULT]
    locale 하지만 NULL (이)가 되어 있습니다.

[ENOENT]
    로케일이 발견되지 않습니다.

[EFTYPE]
    발견된 파일이 올바른 파일이 아닙니다.

[EINVAL]
    로케일로 나타나는 encode가 미지의 것입니다.

sgetrune() 함수는, 읽어들인 룬인가 _INVALID_RUNE (을)를 되돌립니다. sputrune() 함수는, 멀티 byte string로서 rune (을)를 보존하기 위해서 필요한 바이트수를 되돌립니다.

관련 파일
$PATH_LOCALE/locale/LC_CTYPE
/usr/share/locale/locale/LC_CTYPE
    로케일 locale 의 바이너리 LC_CTYPE 파일

관련 항목
mbrune(3), setlocale(3), euc(4), utf2(4)

주
ANSI C 의 wchar_t 형태는, rune_t (와)과 같습니다. 아름다움에 뒤떨어진다 ANSI C 원시적을 시스템의 토대로 하지 않는 고의의 선택인 것을 강조하기 위해서 rune_t 하지만 선택되었습니다.

역사
이 함수는, 4.4BSD 그리고 처음으로 등장했습니다.

setrunelocale() 함수와 그 외의 비 ANSI 룬 함수는, ANSI 멀티 바이트와 와이드 캐릭터 서포트의 것보다 확실한 대체안으로서의 Bell Labs 의 Plan 9 에 힌트를 얻었습니다.

모든 ANSI 멀티 바이트와 와이드 캐릭터의 서포트 함수는, 룬 함수를 사용해 작성되고 있습니다.