empty uses SysV semaphores, so the ifdef is wrong here.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>

--- empty-0.6.19b.orig/empty.c	2012-09-19 13:24:05.000000000 +0200
+++ empty-0.6.19b/empty.c	2015-07-09 02:00:09.000000000 +0200
@@ -179,25 +179,23 @@ int main (int argc, char *argv[]) {
 					   2 - unknown */
 	
 /* semaphores */
-#ifdef _POSIX_SEMAPHORES
-	#if defined(__linux__) && defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
-		/* union semun is defined by including <sys/sem.h> */
-	#else
-		union semun {
-			int val;
-			struct semid_ds *buf;
-		#ifdef __SVR4
-			ushort_t	*array;
-		#endif
-		#ifdef __hpux__
-			ushort		*array;
-		#endif
-		#ifdef __linux__
-			unsigned short *array;
-			struct seminfo *__buf;		/* buffer for IPC_INFO */
-		#endif
-		};
-  	#endif
+#if defined(__linux__) && defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
+	/* union semun is defined by including <sys/sem.h> */
+#else
+	union semun {
+		int val;
+		struct semid_ds *buf;
+	#ifdef __SVR4
+		ushort_t	*array;
+	#endif
+	#ifdef __hpux__
+		ushort		*array;
+	#endif
+	#ifdef __linux__
+		unsigned short *array;
+		struct seminfo *__buf;		/* buffer for IPC_INFO */
+	#endif
+	};
 #endif
 	union semun semu;
 	
