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  }