(SVIS): add some (unsigned char) before calling isfoo*
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10277 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										132
									
								
								lib/roken/vis.c
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								lib/roken/vis.c
									
									
									
									
									
								
							@@ -107,71 +107,73 @@ do {									      \
 | 
			
		||||
 * extra:     Pointer to the list of extra characters to be
 | 
			
		||||
 *	      backslash-protected.
 | 
			
		||||
 */
 | 
			
		||||
#define SVIS(dst, c, flag, nextc, extra)				      \
 | 
			
		||||
do {									      \
 | 
			
		||||
	int isextra, isc;						      \
 | 
			
		||||
	isextra = strchr(extra, c) != NULL;				      \
 | 
			
		||||
	if (!isextra && isascii(c) && (isgraph(c) || iswhite(c) ||	      \
 | 
			
		||||
	    ((flag & VIS_SAFE) && issafe(c)))) {			      \
 | 
			
		||||
		*dst++ = c;						      \
 | 
			
		||||
		break;							      \
 | 
			
		||||
	}								      \
 | 
			
		||||
	isc = 0;							      \
 | 
			
		||||
	if (flag & VIS_CSTYLE) {					      \
 | 
			
		||||
		switch (c) {						      \
 | 
			
		||||
		case '\n':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'n';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\r':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'r';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\b':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'b';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case BELL:						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'a';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\v':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'v';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\t':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 't';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\f':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'f';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case ' ':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 's';		      \
 | 
			
		||||
			break;						      \
 | 
			
		||||
		case '\0':						      \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = '0';		      \
 | 
			
		||||
			if (isoctal(nextc)) {				      \
 | 
			
		||||
				*dst++ = '0';				      \
 | 
			
		||||
				*dst++ = '0';				      \
 | 
			
		||||
			}						      \
 | 
			
		||||
		}							      \
 | 
			
		||||
	}								      \
 | 
			
		||||
	if (isc) break;							      \
 | 
			
		||||
	if (isextra || ((c & 0177) == ' ') || (flag & VIS_OCTAL)) {	      \
 | 
			
		||||
		*dst++ = '\\';						      \
 | 
			
		||||
		*dst++ = (u_char)(((unsigned)(u_char)c >> 6) & 03) + '0';     \
 | 
			
		||||
		*dst++ = (u_char)(((unsigned)(u_char)c >> 3) & 07) + '0';     \
 | 
			
		||||
		*dst++ =			     (c	      & 07) + '0';    \
 | 
			
		||||
	} else {							      \
 | 
			
		||||
		if ((flag & VIS_NOSLASH) == 0) *dst++ = '\\';		      \
 | 
			
		||||
		if (c & 0200) {						      \
 | 
			
		||||
			c &= 0177; *dst++ = 'M';			      \
 | 
			
		||||
		}							      \
 | 
			
		||||
		if (iscntrl(c)) {					      \
 | 
			
		||||
			*dst++ = '^';					      \
 | 
			
		||||
			if (c == 0177)					      \
 | 
			
		||||
				*dst++ = '?';				      \
 | 
			
		||||
			else						      \
 | 
			
		||||
				*dst++ = c + '@';			      \
 | 
			
		||||
		} else {						      \
 | 
			
		||||
			*dst++ = '-'; *dst++ = c;			      \
 | 
			
		||||
		}							      \
 | 
			
		||||
	}								      \
 | 
			
		||||
#define SVIS(dst, c, flag, nextc, extra)				   \
 | 
			
		||||
do {									   \
 | 
			
		||||
	int isextra, isc;						   \
 | 
			
		||||
	isextra = strchr(extra, c) != NULL;				   \
 | 
			
		||||
	if (!isextra &&							   \
 | 
			
		||||
	    isascii((unsigned char)c) &&				   \
 | 
			
		||||
	    (isgraph((unsigned char)c) || iswhite(c) ||			   \
 | 
			
		||||
	    ((flag & VIS_SAFE) && issafe(c)))) {			   \
 | 
			
		||||
		*dst++ = c;						   \
 | 
			
		||||
		break;							   \
 | 
			
		||||
	}								   \
 | 
			
		||||
	isc = 0;							   \
 | 
			
		||||
	if (flag & VIS_CSTYLE) {					   \
 | 
			
		||||
		switch (c) {						   \
 | 
			
		||||
		case '\n':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'n';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\r':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'r';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\b':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'b';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case BELL:						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'a';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\v':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'v';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\t':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 't';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\f':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 'f';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case ' ':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = 's';		   \
 | 
			
		||||
			break;						   \
 | 
			
		||||
		case '\0':						   \
 | 
			
		||||
			isc = 1; *dst++ = '\\'; *dst++ = '0';		   \
 | 
			
		||||
			if (isoctal(nextc)) {				   \
 | 
			
		||||
				*dst++ = '0';				   \
 | 
			
		||||
				*dst++ = '0';				   \
 | 
			
		||||
			}						   \
 | 
			
		||||
		}							   \
 | 
			
		||||
	}								   \
 | 
			
		||||
	if (isc) break;							   \
 | 
			
		||||
	if (isextra || ((c & 0177) == ' ') || (flag & VIS_OCTAL)) {	   \
 | 
			
		||||
		*dst++ = '\\';						   \
 | 
			
		||||
		*dst++ = (u_char)(((unsigned)(u_char)c >> 6) & 03) + '0';  \
 | 
			
		||||
		*dst++ = (u_char)(((unsigned)(u_char)c >> 3) & 07) + '0';  \
 | 
			
		||||
		*dst++ =			     (c	      & 07) + '0'; \
 | 
			
		||||
	} else {							   \
 | 
			
		||||
		if ((flag & VIS_NOSLASH) == 0) *dst++ = '\\';		   \
 | 
			
		||||
		if (c & 0200) {						   \
 | 
			
		||||
			c &= 0177; *dst++ = 'M';			   \
 | 
			
		||||
		}							   \
 | 
			
		||||
		if (iscntrl(c)) {					   \
 | 
			
		||||
			*dst++ = '^';					   \
 | 
			
		||||
			if (c == 0177)					   \
 | 
			
		||||
				*dst++ = '?';				   \
 | 
			
		||||
			else						   \
 | 
			
		||||
				*dst++ = c + '@';			   \
 | 
			
		||||
		} else {						   \
 | 
			
		||||
			*dst++ = '-'; *dst++ = c;			   \
 | 
			
		||||
		}							   \
 | 
			
		||||
	}								   \
 | 
			
		||||
} while (/*CONSTCOND*/0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user