modernc.org/cc@v1.0.1/testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncat.c (about) 1 extern void abort(void); 2 extern int inside_main; 3 4 typedef __SIZE_TYPE__ size_t; 5 6 __attribute__ ((__noinline__)) 7 char * 8 strncat (char *s1, const char *s2, size_t n) 9 { 10 char *dest = s1; 11 char c = '\0'; 12 #ifdef __OPTIMIZE__ 13 if (inside_main) 14 abort(); 15 #endif 16 while (*s1) s1++; 17 c = '\0'; 18 while (n > 0) 19 { 20 c = *s2++; 21 *s1++ = c; 22 if (c == '\0') 23 return dest; 24 n--; 25 } 26 if (c != '\0') 27 *s1 = '\0'; 28 return dest; 29 }