Fix build on Solaris
d_type is not part of the POSIX spec unfortunately.
This commit is contained in:
parent
5bc12454fd
commit
cdb346c65e
3 changed files with 11 additions and 0 deletions
|
@ -48,6 +48,7 @@ test "$localstatedir" = '${prefix}/var' && localstatedir=/nix/var
|
||||||
|
|
||||||
|
|
||||||
# Solaris-specific stuff.
|
# Solaris-specific stuff.
|
||||||
|
AC_STRUCT_DIRENT_D_TYPE
|
||||||
if test "$sys_name" = sunos; then
|
if test "$sys_name" = sunos; then
|
||||||
# Solaris requires -lsocket -lnsl for network functions
|
# Solaris requires -lsocket -lnsl for network functions
|
||||||
LIBS="-lsocket -lnsl $LIBS"
|
LIBS="-lsocket -lnsl $LIBS"
|
||||||
|
|
|
@ -232,7 +232,11 @@ DirEntries readDirectory(const Path & path)
|
||||||
checkInterrupt();
|
checkInterrupt();
|
||||||
string name = dirent->d_name;
|
string name = dirent->d_name;
|
||||||
if (name == "." || name == "..") continue;
|
if (name == "." || name == "..") continue;
|
||||||
|
#ifdef HAVE_STRUCT_DIRENT_D_TYPE
|
||||||
entries.emplace_back(name, dirent->d_ino, dirent->d_type);
|
entries.emplace_back(name, dirent->d_ino, dirent->d_type);
|
||||||
|
#else
|
||||||
|
entries.emplace_back(name, dirent->d_ino, getFileType(absPath(name, path)));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (errno) throw SysError(format("reading directory ‘%1%’") % path);
|
if (errno) throw SysError(format("reading directory ‘%1%’") % path);
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,12 @@
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
|
#ifndef HAVE_STRUCT_DIRENT_D_TYPE
|
||||||
|
#define DT_UNKNOWN 0
|
||||||
|
#define DT_REG 1
|
||||||
|
#define DT_LNK 2
|
||||||
|
#define DT_DIR 3
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue