This source file includes following definitions.
- main
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 #include <config.h>
  20 
  21 #include <string.h>
  22 
  23 #include <stdlib.h>
  24 
  25 #include "macros.h"
  26 
  27 int
  28 main ()
     
  29 {
  30   
  31 
  32   {
  33     const char input[] = "foo";
  34     const char *result = mbsstr (input, "");
  35     ASSERT (result == input);
  36   }
  37 
  38   {
  39     const char input[] = "foo";
  40     const char *result = mbsstr (input, "o");
  41     ASSERT (result == input + 1);
  42   }
  43 
  44   {
  45     const char input[] = "ABC ABCDAB ABCDABCDABDE";
  46     const char *result = mbsstr (input, "ABCDABD");
  47     ASSERT (result == input + 15);
  48   }
  49 
  50   {
  51     const char input[] = "ABC ABCDAB ABCDABCDABDE";
  52     const char *result = mbsstr (input, "ABCDABE");
  53     ASSERT (result == NULL);
  54   }
  55 
  56   
  57 
  58   {
  59     size_t repeat = 10000;
  60     size_t m = 1000000;
  61     const char *needle =
  62       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  63       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
  64     char *haystack = (char *) malloc (m + 1);
  65     if (haystack != NULL)
  66       {
  67         memset (haystack, 'A', m);
  68         haystack[0] = 'B';
  69         haystack[m] = '\0';
  70 
  71         for (; repeat > 0; repeat--)
  72           {
  73             ASSERT (mbsstr (haystack, needle) == haystack + 1);
  74           }
  75 
  76         free (haystack);
  77       }
  78   }
  79 
  80   
  81 
  82   {
  83     size_t repeat = 10000;
  84     size_t m = 1000000;
  85     const char *haystack =
  86       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  87       "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB";
  88     char *needle = (char *) malloc (m + 1);
  89     if (needle != NULL)
  90       {
  91         memset (needle, 'A', m);
  92         needle[m] = '\0';
  93 
  94         for (; repeat > 0; repeat--)
  95           {
  96             ASSERT (mbsstr (haystack, needle) == NULL);
  97           }
  98 
  99         free (needle);
 100       }
 101   }
 102 
 103   
 104   {
 105     size_t m = 1000000;
 106     char *haystack = (char *) malloc (2 * m + 2);
 107     char *needle = (char *) malloc (m + 2);
 108     if (haystack != NULL && needle != NULL)
 109       {
 110         const char *result;
 111 
 112         memset (haystack, 'A', 2 * m);
 113         haystack[2 * m] = 'B';
 114         haystack[2 * m + 1] = '\0';
 115 
 116         memset (needle, 'A', m);
 117         needle[m] = 'B';
 118         needle[m + 1] = '\0';
 119 
 120         result = mbsstr (haystack, needle);
 121         ASSERT (result == haystack + m);
 122       }
 123     free (needle);
 124     free (haystack);
 125   }
 126 
 127   return 0;
 128 }