]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #34776 - cuviper:solaris-readdir, r=alexcrichton
authorbors <bors@rust-lang.org>
Thu, 14 Jul 2016 02:32:17 +0000 (19:32 -0700)
committerGitHub <noreply@github.com>
Thu, 14 Jul 2016 02:32:17 +0000 (19:32 -0700)
std: fix `readdir` errors for solaris

A `NULL` from `readdir` could be the end of stream or an error.  The only
way to know is to check `errno`, so it must be set to a known value first,
like a 0 that POSIX will never use.

This currently only matters for solaris targets, as the other unix platforms
are using `readdir_r` with a direct error return indication.  However, this is
getting deprecated (#34668) so they should all eventually switch to `readdir`.

This PR adds `set_errno`, uses it to clear the value before calling `readdir`,
then checks it again after to see the reason for a `NULL`.  A few other small
fixes are included just to get solaris compiling at all.

I couldn't get cross-compilation completely going, so I don't have a good way
to test this beyond a smoke-test cargo build of std.  I'd appreciate input from
someone more familiar with solaris -- cc @nbaksalyar?

1  2 
src/libstd/sys/unix/fs.rs

Simple merge