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>