Eric Blake wrote:
> +static int
> +test_errors (int fd, char *slave)

The parameter should be a 'const char *slave'.

> +{
> +  char buffer[256];
> +  size_t len;
> +  int result;
> +
> +  errno = 0;
> +  len = strlen (buffer);

This should be: len = strlen (slave), right? buffer is uninitialized at
this point.

> +  memset (buffer, 0, sizeof buffer);
> +  result = ptsname_r (fd, buffer, len);
> +  ASSERT (result != 0);
> +  ASSERT (result == errno);
> +  ASSERT (errno == ERANGE);
> +  ASSERT (buffer[0] == '\0');

I would find it good to test other values of the buflen parameter, since
the experience shows that platforms have bugs in this area. Like this:

    size_t buflen;

    for (buflen = 0; buflen <= sizeof (buffer); buflen++)
      {
        memset (buffer, 'X', sizeof buffer);
        result = ptsname_r (fd, buffer, len);
        if (buflen > len)
          {
            ASSERT (result == 0);
            ASSERT (buffer[0] == '/');
          }
        else
          {
            ASSERT (result != 0);
            ASSERT (result == errno);
            ASSERT (errno == ERANGE);
            ASSERT (buffer[0] == 'X');
          }
      }

> +  errno = 0;
> +  result = ptsname_r (-1, buffer, sizeof buffer);
> +  ASSERT (result != 0);
> +  ASSERT (result == errno);
> +  ASSERT (errno == EBADF);
> +  ASSERT (buffer[0] == '\0');

This test does not use the fd and slave parameters and is already contained
in main(). Why repeat it in test_errors()?

Bruno
-- 
In memoriam The inmates of the Daugavpils Ghetto 
<http://en.wikipedia.org/wiki/Daugavpils_Ghetto>

Reply via email to