Просмотр исходного кода

Make readdir operation portable by removing BSDism from coroparse.c.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2215 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 16 лет назад
Родитель
Сommit
1e0d40cdeb
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      exec/coroparse.c

+ 5 - 2
exec/coroparse.c

@@ -37,6 +37,7 @@
 #include <sys/types.h>
 #include <sys/types.h>
 #include <sys/uio.h>
 #include <sys/uio.h>
 #include <sys/socket.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
 #include <sys/un.h>
 #include <sys/un.h>
 #include <netinet/in.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <arpa/inet.h>
@@ -215,6 +216,7 @@ static int read_uidgid_files_into_objdb(
 	struct dirent *dirent;
 	struct dirent *dirent;
 	char filename[PATH_MAX + NAME_MAX + 1];
 	char filename[PATH_MAX + NAME_MAX + 1];
 	int res = 0;
 	int res = 0;
+	struct stat stat_buf;
 
 
 	dirname = SYSCONFDIR "/corosync/uidgid.d";
 	dirname = SYSCONFDIR "/corosync/uidgid.d";
 	dp = opendir (dirname);
 	dp = opendir (dirname);
@@ -223,8 +225,9 @@ static int read_uidgid_files_into_objdb(
 		return 0;
 		return 0;
 
 
 	while ((dirent = readdir (dp))) {
 	while ((dirent = readdir (dp))) {
-		if (dirent->d_type == DT_REG) {
-			snprintf(filename, sizeof (filename), "%s/%s", dirname, dirent->d_name);
+		snprintf(filename, sizeof (filename), "%s/%s", dirname, dirent->d_name);
+		stat (filename, &stat_buf);
+		if (S_ISREG(stat_buf.st_mode)) {
 
 
 			fp = fopen (filename, "r");
 			fp = fopen (filename, "r");
 			if (fp == NULL) continue;
 			if (fp == NULL) continue;