support for struct dirent.d_type added to Linux readdir wrapper
authorVictor Kirhenshtein <victor@netxms.org>
Wed, 10 May 2017 20:51:01 +0000 (23:51 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Wed, 10 May 2017 20:51:01 +0000 (23:51 +0300)
configure.ac
include/netxms-version.h
include/nms_util.h
src/libnetxms/dirw_unix.c

index 2fd0d4f..c86a84d 100644 (file)
@@ -4,7 +4,7 @@
 # Configure script
 #
 
 # Configure script
 #
 
-AC_INIT([NetXMS], [2.1-M3], [bugs@netxms.org])
+AC_INIT([NetXMS], [2.1-RC1], [bugs@netxms.org])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_HEADERS(config.h)
 AM_INIT_AUTOMAKE
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_HEADERS(config.h)
 AM_INIT_AUTOMAKE
@@ -1679,6 +1679,36 @@ AC_LANG_POP([C++])
 
 
 #--------------------------------------------------------------------
 
 
 #--------------------------------------------------------------------
+# Checks for d_type in struct dirent
+#--------------------------------------------------------------------
+
+AC_MSG_CHECKING(for d_type in struct dirent)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+]],[[
+       struct dirent d;
+       return d.d_type;
+]])
+],[
+       AC_MSG_RESULT(yes)
+       AC_DEFINE(HAVE_DIRENT_D_TYPE,1,Define to 1 if struct dirent has member d_type)
+],[
+       AC_MSG_RESULT(no)
+       AC_DEFINE(HAVE_DIRENT_D_TYPE,0,Define to 1 if struct dirent has member d_type)
+])
+AC_CHECK_DECLS([DT_DIR, DT_REG, DT_UNKNOWN],,,[
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+])
+
+
+#--------------------------------------------------------------------
 # Checks for IPv6 support
 #--------------------------------------------------------------------
 
 # Checks for IPv6 support
 #--------------------------------------------------------------------
 
index 0a1500b..0c1a9b9 100644 (file)
@@ -31,8 +31,8 @@
  */
 #define NETXMS_VERSION_MAJOR        2
 #define NETXMS_VERSION_MINOR        1
  */
 #define NETXMS_VERSION_MAJOR        2
 #define NETXMS_VERSION_MINOR        1
-#define NETXMS_VERSION_STRING       _T("2.1-M3")
-#define NETXMS_VERSION_STRING_A     "2.1-M3"
+#define NETXMS_VERSION_STRING       _T("2.1-RC1")
+#define NETXMS_VERSION_STRING_A     "2.1-RC1"
 
 #ifdef UNICODE
 #define IS_UNICODE_BUILD_STRING     _T(" (UNICODE)")
 
 #ifdef UNICODE
 #define IS_UNICODE_BUILD_STRING     _T(" (UNICODE)")
index aa74c2c..5f1e50d 100644 (file)
@@ -1701,6 +1701,9 @@ typedef struct _dir_struc_w
 typedef struct dirent_w
 {
    long            d_ino;  /* inode number */
 typedef struct dirent_w
 {
    long            d_ino;  /* inode number */
+#if HAVE_DIRENT_D_TYPE
+   unsigned char   d_type; /* file type */
+#endif
    WCHAR           d_name[257];    /* file name */
 } _DIRECTW;
 
    WCHAR           d_name[257];    /* file name */
 } _DIRECTW;
 
index de880fa..a7f1490 100644 (file)
@@ -1,7 +1,7 @@
 /* 
 ** NetXMS - Network Management System
 ** Utility Library
 /* 
 ** NetXMS - Network Management System
 ** Utility Library
-** Copyright (C) 2003-2013 Raden Solutions
+** Copyright (C) 2003-2017 Raden Solutions
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU Lesser General Public License as published
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU Lesser General Public License as published
@@ -50,6 +50,9 @@ struct dirent_w *wreaddir(DIRW *dirp)
        MultiByteToWideChar(CP_UTF8, 0, d->d_name, -1, dirp->dirstr.d_name, 257);
        dirp->dirstr.d_name[256] = 0;
        dirp->dirstr.d_ino = d->d_ino;
        MultiByteToWideChar(CP_UTF8, 0, d->d_name, -1, dirp->dirstr.d_name, 257);
        dirp->dirstr.d_name[256] = 0;
        dirp->dirstr.d_ino = d->d_ino;
+#if HAVE_DIRENT_D_TYPE
+       dirp->dirstr.d_type = d->d_type;
+#endif
        return &dirp->dirstr;
 }
 
        return &dirp->dirstr;
 }