 63e8aea74e
			
		
	
	63e8aea74e
	
	
	
		
			
			The following syntax:
        char foo[] = {
                [0] = 1,
                [7] = 2,
                [15] = 3
        };
is a c99 construct which some compilers do not support even though they
support other c99 constructs. This construct can be avoided by folding
these 'special' test cases into the sane_ctype array and making use of
the related infrastructure.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Sane locale-independent, ASCII ctype.
 | |
|  *
 | |
|  * No surprises, and works with signed and unsigned chars.
 | |
|  */
 | |
| #include "cache.h"
 | |
| 
 | |
| /* Just so that no insane platform contaminate namespace with these symbols */
 | |
| #undef SS
 | |
| #undef AA
 | |
| #undef DD
 | |
| #undef GS
 | |
| 
 | |
| #define SS GIT_SPACE
 | |
| #define AA GIT_ALPHA
 | |
| #define DD GIT_DIGIT
 | |
| #define GS GIT_SPECIAL  /* \0, *, ?, [, \\ */
 | |
| 
 | |
| unsigned char sane_ctype[256] = {
 | |
| 	GS,  0,  0,  0,  0,  0,  0,  0,  0, SS, SS,  0,  0, SS,  0,  0,		/* 0-15 */
 | |
| 	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,		/* 16-15 */
 | |
| 	SS,  0,  0,  0,  0,  0,  0,  0,  0,  0, GS,  0,  0,  0,  0,  0,		/* 32-15 */
 | |
| 	DD, DD, DD, DD, DD, DD, DD, DD, DD, DD,  0,  0,  0,  0,  0, GS,		/* 48-15 */
 | |
| 	 0, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,		/* 64-15 */
 | |
| 	AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, GS, GS,  0,  0,  0,		/* 80-15 */
 | |
| 	 0, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,		/* 96-15 */
 | |
| 	AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,  0,  0,  0,  0,  0,		/* 112-15 */
 | |
| 	/* Nothing in the 128.. range */
 | |
| };
 |