{
if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
{
- fail = 3; /* Unable to construct deep hierarchy. */
+ if (! (errno == ERANGE || errno == ENAMETOOLONG || errno == ENOENT))
+ fail = 3; /* Unable to construct deep hierarchy. */
break;
}
}
results in a failed assertion. */
cwd = getcwd (NULL, 0);
if (cwd == NULL)
- fail = 4; /* getcwd failed. This is ok, and expected. */
+ fail = 4; /* getcwd didn't assert, but it failed for a long name
+ where the answer could have been learned. */
free (cwd);
/* Call rmdir first, in case the above chdir failed. */
size_t n_chdirs = 0;
if (cwd == NULL)
- return 10;
+ return 1;
cwd_len = initial_cwd_len = strlen (cwd);
errors, be pessimistic and consider that as a failure, too. */
if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
{
- if (! (errno == ERANGE || errno == ENAMETOOLONG))
- fail = 20;
+ if (! (errno == ERANGE || errno == ENAMETOOLONG || errno == ENOENT))
+ fail = 2;
break;
}
c = getcwd (buf, PATH_MAX);
if (!c && errno == ENOENT)
{
- fail = 11;
+ fail = 3;
break;
}
- if (c || ! (errno == ERANGE || errno == ENAMETOOLONG))
+ if (c)
+ {
+ fail = 4;
+ break;
+ }
+ if (! (errno == ERANGE || errno == ENAMETOOLONG))
{
- fail = 21;
+ fail = 5;
break;
}
}
if (! (errno == ERANGE || errno == ENOENT
|| errno == ENAMETOOLONG))
{
- fail = 22;
+ fail = 6;
break;
}
if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
{
- fail = 12;
+ fail = 7;
break;
}
}
if (c && strlen (c) != cwd_len)
{
- fail = 23;
+ fail = 8;
break;
}
++n_chdirs;
int
main (int argc, char **argv)
{
- return test_abort_bug () + test_long_name ();
+ return test_abort_bug () * 10 + test_long_name ();
}