$OpenBSD: patch-src_libs_zbxsysinfo_openbsd_proc_c,v 1.7 2014/07/08 08:10:38 robert Exp $
--- src/libs/zbxsysinfo/openbsd/proc.c.orig	Mon Jun 23 16:12:56 2014
+++ src/libs/zbxsysinfo/openbsd/proc.c	Tue Jul  8 10:09:58 2014
@@ -40,7 +40,7 @@
 #	endif
 #endif
 
-#ifdef KERN_PROC2
+#if defined(__OpenBSD__)
 #	define ZBX_P_COMM	p_comm
 #	define ZBX_P_PID	p_pid
 #	define ZBX_P_STAT	p_stat
@@ -126,13 +126,12 @@ int     PROC_MEM(AGENT_REQUEST *request, AGENT_RESULT 
 
 	struct passwd		*usrinfo;
 
-#ifdef KERN_PROC2
+#if defined(__OpenBSD__)
 	int			mib[6];
-	struct kinfo_proc2	*proc = NULL;
 #else
 	int			mib[4];
-	struct kinfo_proc	*proc = NULL;
 #endif
+	struct kinfo_proc	*proc = NULL;
 
 	char	**argv = NULL, *args = NULL;
 	size_t	argv_alloc = 0, args_alloc = 0;
@@ -181,40 +180,24 @@ int     PROC_MEM(AGENT_REQUEST *request, AGENT_RESULT 
 		mib[3] = 0;
 	}
 
-#ifdef KERN_PROC2
-	mib[1] = KERN_PROC2;
-	mib[4] = sizeof(struct kinfo_proc2);
+	mib[1] = KERN_PROC;
+#if defined(__OpenBSD__)
+	mib[4] = sizeof(struct kinfo_proc);
 	mib[5] = 0;
+#endif
 
 	sz = 0;
-	if (0 != sysctl(mib, 6, NULL, &sz, NULL, 0))
+	if (0 != sysctl(mib, (sizeof(mib) / sizeof(mib[0])), NULL, &sz, NULL, 0))
 		return SYSINFO_RET_FAIL;
 
-	proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz);
-	mib[5] = (int)(sz / sizeof(struct kinfo_proc2));
-	if (0 != sysctl(mib, 6, proc, &sz, NULL, 0))
-	{
-		zbx_free(proc);
-		return SYSINFO_RET_FAIL;
-	}
-
-	count = sz / sizeof(struct kinfo_proc2);
-#else
-	mib[1] = KERN_PROC;
-
-	sz = 0;
-	if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0))
-		return SYSINFO_RET_FAIL;
-
 	proc = (struct kinfo_proc *)zbx_malloc(proc, sz);
-	if (0 != sysctl(mib, 4, proc, &sz, NULL, 0))
+	if (0 != sysctl(mib, (sizeof(mib) / sizeof(mib[0])), proc, &sz, NULL, 0))
 	{
 		zbx_free(proc);
 		return SYSINFO_RET_FAIL;
 	}
 
 	count = sz / sizeof(struct kinfo_proc);
-#endif
 
 	for (i = 0; i < count; i++)
 	{
@@ -280,13 +263,12 @@ int	PROC_NUM(AGENT_REQUEST *request, AGENT_RESULT *res
 
 	struct passwd		*usrinfo;
 
-#ifdef KERN_PROC2
+#if defined(__OpenBSD__)
 	int			mib[6];
-	struct kinfo_proc2	*proc = NULL;
 #else
 	int			mib[4];
-	struct kinfo_proc	*proc = NULL;
 #endif
+	struct kinfo_proc	*proc = NULL;
 
 	char	**argv = NULL, *args = NULL;
 	size_t	argv_alloc = 0, args_alloc = 0;
@@ -333,40 +315,25 @@ int	PROC_NUM(AGENT_REQUEST *request, AGENT_RESULT *res
 		mib[3] = 0;
 	}
 
-#ifdef KERN_PROC2
-	mib[1] = KERN_PROC2;
-	mib[4] = sizeof(struct kinfo_proc2);
+	mib[1] = KERN_PROC;
+#if defined(__OpenBSD__)
+	mib[4] = sizeof(struct kinfo_proc);
 	mib[5] = 0;
+#endif
 
 	sz = 0;
-	if (0 != sysctl(mib, 6, NULL, &sz, NULL, 0))
+	if (0 != sysctl(mib, (sizeof(mib) / sizeof(mib[0])), NULL, &sz, NULL, 0))
 		return SYSINFO_RET_FAIL;
 
-	proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz);
-	mib[5] = (int)(sz / sizeof(struct kinfo_proc2));
-	if (0 != sysctl(mib, 6, proc, &sz, NULL, 0))
-	{
-		zbx_free(proc);
-		return SYSINFO_RET_FAIL;
-	}
-
-	count = sz / sizeof(struct kinfo_proc2);
-#else
-	mib[1] = KERN_PROC;
-
-	sz = 0;
-	if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0))
-		return SYSINFO_RET_FAIL;
-
 	proc = (struct kinfo_proc *)zbx_malloc(proc, sz);
-	if (0 != sysctl(mib, 4, proc, &sz, NULL, 0))
+	mib[5] = (int)(sz / sizeof(struct kinfo_proc));
+	if (0 != sysctl(mib, (sizeof(mib) / sizeof(mib[0])), proc, &sz, NULL, 0))
 	{
 		zbx_free(proc);
 		return SYSINFO_RET_FAIL;
 	}
 
 	count = sz / sizeof(struct kinfo_proc);
-#endif
 
 	for (i = 0; i < count; i++)
 	{
