Fix build on Solaris

d_type is not part of the POSIX spec unfortunately.
This commit is contained in:
Danny Wilson 2015-11-07 04:51:33 +01:00
parent 5bc12454fd
commit cdb346c65e
3 changed files with 11 additions and 0 deletions

View file

@ -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"

View file

@ -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);

View file

@ -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 {