mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| size_t
 | |
| UNIOP(strlen)(const UNIOP_t *u)
 | |
| {
 | |
|     int res = 0;
 | |
|     while(*u++)
 | |
|         res++;
 | |
|     return res;
 | |
| }
 | |
| 
 | |
| UNIOP_t*
 | |
| UNIOP(strcpy)(UNIOP_t *s1, const UNIOP_t *s2)
 | |
| {
 | |
|     UNIOP_t *u = s1;
 | |
|     while ((*u++ = *s2++));
 | |
|     return s1;
 | |
| }
 | |
| 
 | |
| UNIOP_t*
 | |
| UNIOP(strncpy)(UNIOP_t *s1, const UNIOP_t *s2, size_t n)
 | |
| {
 | |
|     UNIOP_t *u = s1;
 | |
|     while ((*u++ = *s2++))
 | |
|         if (n-- == 0)
 | |
|             break;
 | |
|     return s1;
 | |
| }
 | |
| 
 | |
| UNIOP_t*
 | |
| UNIOP(strcat)(UNIOP_t *s1, const UNIOP_t *s2)
 | |
| {
 | |
|     UNIOP_t *u1 = s1;
 | |
|     u1 += UNIOP(strlen(u1));
 | |
|     UNIOP(strcpy(u1, s2));
 | |
|     return s1;
 | |
| }
 | |
| 
 | |
| int
 | |
| UNIOP(strcmp)(const UNIOP_t *s1, const UNIOP_t *s2)
 | |
| {
 | |
|     while (*s1 && *s2 && *s1 == *s2)
 | |
|         s1++, s2++;
 | |
|     if (*s1 && *s2)
 | |
|         return (*s1 < *s2) ? -1 : +1;
 | |
|     if (*s1)
 | |
|         return 1;
 | |
|     if (*s2)
 | |
|         return -1;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| int
 | |
| UNIOP(strncmp)(const UNIOP_t *s1, const UNIOP_t *s2, size_t n)
 | |
| {
 | |
|     register UNIOP_t u1, u2;
 | |
|     for (; n != 0; n--) {
 | |
|         u1 = *s1;
 | |
|         u2 = *s2;
 | |
|         if (u1 != u2)
 | |
|             return (u1 < u2) ? -1 : +1;
 | |
|         if (u1 == '\0')
 | |
|             return 0;
 | |
|         s1++;
 | |
|         s2++;
 | |
|     }
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| UNIOP_t*
 | |
| UNIOP(strchr)(const UNIOP_t *s, UNIOP_t c)
 | |
| {
 | |
|     const UNIOP_t *p;
 | |
|     for (p = s; *p; p++)
 | |
|         if (*p == c)
 | |
|             return (UNIOP_t*)p;
 | |
|     return NULL;
 | |
| }
 | |
| 
 | |
| UNIOP_t*
 | |
| UNIOP(strrchr)(const UNIOP_t *s, UNIOP_t c)
 | |
| {
 | |
|     const UNIOP_t *p;
 | |
|     p = s + UNIOP(strlen)(s);
 | |
|     while (p != s) {
 | |
|         p--;
 | |
|         if (*p == c)
 | |
|             return (UNIOP_t*)p;
 | |
|     }
 | |
|     return NULL;
 | |
| }
 | |
| 
 | 
