VIS(3)

명칭
vis - 캐릭터를 시각적으로 코드화

LIBRARY
libc

서식
<vis.h> char * vis(char *dst, int c, int flag, int nextc) int strvis(char *dst, const char *src, int flag) int strvisx(char *dst, const char *src, size_t len, int flag)

해설
vis() 함수는, 캐릭터 c (을)를 나타내는 캐릭터 라인을 dst 에 카피합니다. c 하지만 코드화를 필요로 하지 않는 경우는, 아무것도 변경하지 않고 카피합니다. 캐릭터 라인은 null 로 종단 되어 캐릭터 라인의 최후에의 포인터가 돌려주어집니다. 코드화의 길이의 최대치는 4 캐릭터입니다 (마지막 NUL (은)는 포함하지 않는다). 따라서, 캐릭터세트를 버퍼에 코드화할 때는, 버퍼의 사이즈는 코드화 된다 캐릭터수의 4 배로 마지막에 붙인다 NUL 의 분의 1 이 필요합니다. 코드화한다 캐릭터의 디폴트 범위를 변경하기 위해(때문에), 또 시각적인 표현을 변경하기 위해서는 플래그 파라미터를 사용합니다. 추가의 캐릭터, nextc (은)는, 코드화 형식 VIS_CSTYLE (을)를 선택했을 때에 마셔 사용합니다 (이하에 설명합니다).

strvis() 및 strvisx() 함수는, 캐릭터 라인 src 의 시각적 표현을 dst 에 카피합니다. strvis() 함수는, src (으)로부터 최초의 NUL 까지의 캐릭터를 코드화합니다. strvisx() 함수는, src (으)로부터 정확하게 len 개의 캐릭터를 코드화합니다 (이것은, 복수의 NUL (을)를 포함할 가능성이 있는 데이터의 블록을 코드화하는 경우에 도움이 됩니다). 어느 쪽의 형식에서도 dst (을)를 NUL 그리고 종단 합니다. dst 의 사이즈는, src (으)로부터 코드화 되는 캐릭터수의 4 배가 아니면 안됩니다 (플러스 NUL (을)를 위한 1). 어느 쪽의 형식에서도, 캐릭터수를 dst 에 돌려줍니다 (마지막 NUL (은)는 포함하지 않고 ).

코드화는, 모두 그래픽 캐릭터로 구성된 독특해 역변환 가능한 표현입니다. 즉, unvis(3) 또는 strunvis(3) 함수를 사용하면 원의 형태에 되돌릴 수가 있습니다.

제어할 수 있는 파라미터는 2 개 있는:코드화하는 캐릭터의 범위, 및 사용하는 표현의 타입입니다. 디폴트에서는, 스페이스, 탭, 개행을 제외한 모든 비그래픽 캐릭터가 코드화 됩니다. ( isgraph(3) 참조) 이것은, 이하의 플래그에 의해 변경됩니다:

VIS_SP
    스페이스도 코드화합니다.

VIS_TAB
    탭도 코드화합니다.

VIS_NL
    개행도 코드화합니다.

VIS_WHITE
    VIS_SP | VIS_TAB | VIS_NL (와)과 동의.

VIS_SAFE
    "unsafe" 캐릭터만을 코드화합니다. "unsafe"캐릭터란, 보통 단말에 예기치 않은 기능을 일으키는 것 같은 제어 캐릭터 입니다. 현재로서는, 이 형식에서는 모든 그래픽 캐릭터에 더해, 스페이스, 탭, 개행, 백 스페이스, 벨, 리턴을 코드화하지 않고 일어납니다.

코드화에는 4 개의 형식이 있습니다. 모든 형식은, backslash 캐릭터 ‘\’ (을)를 사용해 특수 순차 순서를 도입합니다. 진짜 backslash를 나타내려면 , 2 개의 backslash를 사용합니다. 다음과 같은 시각 마토가타식이 있습니다:

(default)
    ‘M’ (을)를 사용해 메타캐라크타 (8 번째의 비트가 세트 되었다 캐릭터)를 나타내, 캐럿 ‘^’ (을)를 사용해 제어 캐릭터를 나타냅니다 ( iscntrl(3) 참조). 다음과 같은 형식을 사용합니다：

    \^C 제어 캐릭터 ‘C’ (을)를 나타냅니다. ‘\000’ (으)로부터 ‘\037’ 까지, 및 ‘\177’ 의 캐릭터를 포함합니다 ( (와)과 같이).

    \M-C
        8 번째의 비트가 세트 된 캐릭터 ‘C’ (을)를 나타냅니다. ‘\241’ (으)로부터 ‘\377’ 까지의 캐릭터를 포함합니다.

    \M^C
        8 번째의 비트가 세트 된 제어 캐릭터 ‘C’ (을)를 나타냅니다. ‘\200’ (으)로부터 ‘\237’ 까지, 및 의 캐릭터를 포함합니다 ( ‘\M^?’ (와)과 같이).

    \040
        ASCII 의 스페이스를 나타냅니다.

    \240
        메타스페이스를 나타냅니다.

VIS_CSTYLE
    C 스타일의 backslash 순차 순서를 사용해, 표준비인쇄 캐릭터를 나타냅니다. 다음에 나타내는 순차 순서를 사용해, 지정되어 있는 캐릭터 (을)를 나타냅니다：

        \a - BEL (007)
        \b - BS (010)
        \f - NP (014)
        \n - NL (012)
        \r - CR (015)
        \t - HT (011)
        \v - VT (013)
        \0 - NUL (000)

    이 형식을 사용하는 경우는, nextc 파라미터를 봐 NUL 캐릭터를 ‘\000’ (은)는 아니고 ‘\0’ (와)과 코드화하는지 어떤지를 판단합니다. nextc 하지만 8 진수자인 경우는, 애매함을 피하기 위해서(때문에) ‘\000’ 의 표현을 사용합니다.

VIS_HTTPSTYLE
    RFC 1808 에 기술된 URI encode를 사용합니다. 형식은 ‘%dd’ (이어)여, d (은)는, 16 진수의 자리수를 표현합니다.

VIS_OCTAL
    3 자리수의 8 진법순차 순서를 사용합니다. d 하지만 8 진수자를 나타내는 경우는, 형식은 ‘\ddd’ 됩니다.

하나 더의 플래그, VIS_NOSLASH (은)는, backslash의 중복 및 디폴트 형식 (즉, 제어 캐릭터를 ‘^C’ 그리고, 메타캐라크타를 ‘M-C’ 그리고 나타내는 형식)의 전의 backslash를 억제합니다. 이 플래그가 세트 되어 있으면(자), 코드화는 애매가 되어 역변환 불능이 됩니다.

관련 항목
unvis(1), unvis(3) R. Fielding, Relative Uniform Resource Locators, RFC1808.

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