saved_errno = errno;
if (can_mode == CAN_EXISTING)
goto error;
- if (can_mode == CAN_ALL_BUT_LAST && *end)
- goto error;
+ if (can_mode == CAN_ALL_BUT_LAST)
+ {
+ if (end[strspn (end, "/")] || saved_errno != ENOENT)
+ goto error;
+ continue;
+ }
st.st_mode = 0;
}