(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
	 Assar Westerlund
					Assar Westerlund