1  /* Tester for calling inline string functions.
       2     Copyright (C) 1998-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #ifndef _GNU_SOURCE
      20  #define _GNU_SOURCE
      21  #endif
      22  
      23  /* Make sure we test the optimized inline functions.  */
      24  #define __USE_STRING_INLINES	1
      25  
      26  #include <errno.h>
      27  #include <stdio.h>
      28  #include <stdlib.h>
      29  #include <string.h>
      30  #include <strings.h>
      31  #include <fcntl.h>
      32  
      33  
      34  int
      35  do_test (void)
      36  {
      37    int status;
      38    int errors = 0;
      39    char buf1[1000];
      40    char *cp;
      41    char ch;
      42  
      43    cp = strcpy (buf1, "hello world");
      44    if (strcmp ("hello world", cp++) != 0)
      45      {
      46        puts ("strcmp test 1 failed");
      47        ++errors;
      48      }
      49  
      50    cp = buf1;
      51    if (strcmp (cp++, "hello world") != 0)
      52      {
      53        puts ("strcmp test 2 failed");
      54        ++errors;
      55      }
      56  
      57    ch = 'h';
      58    if (strchr ("hello world", ch++) == NULL)
      59      {
      60        puts ("strchr test 1 failed");
      61        ++errors;
      62      }
      63  
      64    const char * const hw = "hello world";
      65    if (strpbrk (hw, "o") - hw != 4)
      66      {
      67        puts ("strpbrk test 1 failed");
      68        ++errors;
      69      }
      70  
      71    if (errors == 0)
      72      {
      73        status = EXIT_SUCCESS;
      74        puts ("No errors.");
      75      }
      76    else
      77      {
      78        status = EXIT_FAILURE;
      79        printf ("%d errors.\n", errors);
      80      }
      81    return status;
      82  }
      83  
      84  #include <support/test-driver.c>