Back to index

glibc  2.9
Functions
tst-strlen.c File Reference
#include <stdio.h>
#include <string.h>

Go to the source code of this file.

Functions

int main (int argc, char *argv[])

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 9 of file tst-strlen.c.

{
  static const size_t lens[] = { 0, 1, 0, 2, 0, 1, 0, 3,
                             0, 1, 0, 2, 0, 1, 0, 4 };
  char basebuf[24 + 32];
  size_t base;

  for (base = 0; base < 32; ++base)
    {
      char *buf = basebuf + base;
      size_t words;

      for (words = 0; words < 4; ++words)
       {
         size_t last;
         memset (buf, 'a', words * 4);

         for (last = 0; last < 16; ++last)
           {
             buf[words * 4 + 0] = (last & 1) != 0 ? 'b' : '\0';
             buf[words * 4 + 1] = (last & 2) != 0 ? 'c' : '\0';
             buf[words * 4 + 2] = (last & 4) != 0 ? 'd' : '\0';
             buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0';
             buf[words * 4 + 4] = '\0';

             if (strlen (buf) != words * 4 + lens[last]
                || strnlen (buf, -1) != words * 4 + lens[last])
              {
                printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n",
                       base, words, last);
                return 1;
              }
           }
       }
    }
  return 0;
}

Here is the call graph for this function: