SYNOPSIS
#include <vis.h>
char *vis(char *dst, char c, int flag, char nextc);
int strvis(char *dst, const char *src, int flag);
int strvisx(char *dst, const char *src, size_t len, int flag);
DESCRIPTION
The
The
The encoding is a unique,
invertible representation comprised entirely of graphic
characters; it can be decoded back into the original form using
the
There are two parameters that can be controlled: the range of characters that are encoded, and the type of representation used. By default, all non-graphic characters, except space, tab and newline are encoded. The following flags alter this:
- VIS_SP
-
Also encode space.
- VIS_TAB
-
Also encode tab.
- VIS_NL
-
Also encode newline.
- VIS_WHITE
-
Synonym for VIS_SP | VIS_TAB | VIS_NL.
- VIS_SAFE
-
Only encode unsafe characters. Unsafe means control characters which may cause common terminals to perform unexpected functions. Currently this form allows space, tab, newline, backspace, bell, and return - in addition to all graphic characters - unencoded.
There are three forms of encoding. All forms use the backslash character '\' to introduce a special sequence; two backslashed are used to represent a real backslash. These are the visual formats:
- <default>
-
Use an 'M' to represent meta characters (characters with the 8th bit set), and use carat '^' to represent control characters (see
iscntrl() ). The following formats are used:- \^C
-
Represents the control character 'C'. Spans characters '\000' through '\037', and '\177' (as '\^?').
- \M-C
-
Represents character 'C' with the 8th bit set. Spans characters '\241' through '\376'.
- \M^C
-
Represents control character 'C' with the 8th bit set. Spans characters '\200' through '\237', and '\377' (as '\M^?')
- \040
-
Represents ASCII space.
- \240
-
Represents meta-space.
- VIS_CSTYLE
-
Use C-style backslash sequences to represent standard non-printable characters. The following sequences are used to represent the indicated characters:
\a BEL (007) \b BS (010) \f NP (014) \n NL (012) \r CR (015) \t HT (011) \v VT (013) \0 NUL (000)
When using this format, the nextc parameter is looked at to determine if a null character chan be encoded as '\0' instead of '\000'. If nextc is an octal digit, the latter representation is used to avoid ambiguity.
- VIS_OCTAL
-
Use a three digit octal sequence. The form is '\ddd' where d represents an octal digit.
There is one additional flag, VIS_NOSLASH, which inhibits the doubling of backslashes and the backslash before the default format (that is, control characters are represented by '^C' and meta characters as 'M-C'). With this flag set, the encoding is ambiguous and non-invertible.
PARAMETERS
- dst
-
Is the buffer into which the result of the encoding is stored.
- c
-
Is the character to encode.
- flag
-
Is one or more of the flags listed in the DESCRIPTION section, bitwise-OR'd together.
- nextc
-
Is the next character in the sequence, for use with VIS_CSTYLE is specified in flag.
- src
-
Is the source string to be encoded.
- len
-
Is the exact number of characters to be encoded.
RETURN VALUES
The
CONFORMANCE
4.4BSD.
MULTITHREAD SAFETY LEVEL
MT-Safe.
PORTING ISSUES
None.
AVAILABILITY
MKS Toolkit for Professional Developers
MKS Toolkit for Enterprise Developers
MKS Toolkit for Enterprise Developers 64-Bit Edition
SEE ALSO
- Functions:
strunvis() ,unvis()
MKS Toolkit 9.3 Documentation Build 6.