Blame string/bug-strncat1.c

Packit 6c4009
/* Test case by Joseph S. Myers <jsm28@cam.ac.uk>.  */
Packit 6c4009
#undef __USE_STRING_INLINES
Packit 6c4009
#define __USE_STRING_INLINES
Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <stdlib.h>
Packit 6c4009
#include <string.h>
Packit 6c4009
#include <libc-diag.h>
Packit 6c4009
Packit 6c4009
char d[3] = "\0\1\2";
Packit 6c4009
Packit 6c4009
int
Packit 6c4009
main (void)
Packit 6c4009
{
Packit 6c4009
  DIAG_PUSH_NEEDS_COMMENT;
Packit 6c4009
#if __GNUC_PREREQ (8, 0)
Packit 6c4009
  /* GCC 8 warns about strncat truncating output; this is deliberately
Packit 6c4009
     tested here.  */
Packit 6c4009
  DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-truncation");
Packit 6c4009
#endif
Packit 6c4009
  strncat (d, "\5\6", 1);
Packit 6c4009
  DIAG_POP_NEEDS_COMMENT;
Packit 6c4009
  if (d[0] != '\5')
Packit 6c4009
    {
Packit 6c4009
      puts ("d[0] != '\\5'");
Packit 6c4009
      exit (1);
Packit 6c4009
    }
Packit 6c4009
  if (d[1] != '\0')
Packit 6c4009
    {
Packit 6c4009
      puts ("d[1] != '\\0'");
Packit 6c4009
      exit (1);
Packit 6c4009
    }
Packit 6c4009
  if (d[2] != '\2')
Packit 6c4009
    {
Packit 6c4009
      puts ("d[2] != '\\2'");
Packit 6c4009
      exit (1);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  return 0;
Packit 6c4009
}