From owner-svn-ports-head@FreeBSD.ORG Fri Nov 28 08:00:24 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C31A47E4; Fri, 28 Nov 2014 08:00:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A3BBDFBF; Fri, 28 Nov 2014 08:00:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sAS80OCi057135; Fri, 28 Nov 2014 08:00:24 GMT (envelope-from marino@FreeBSD.org) Received: (from marino@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sAS80NaV057132; Fri, 28 Nov 2014 08:00:23 GMT (envelope-from marino@FreeBSD.org) Message-Id: <201411280800.sAS80NaV057132@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: marino set sender to marino@FreeBSD.org using -f From: John Marino Date: Fri, 28 Nov 2014 08:00:23 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r373533 - in head/net-mgmt/ccnet: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Nov 2014 08:00:25 -0000 Author: marino Date: Fri Nov 28 08:00:23 2014 New Revision: 373533 URL: https://svnweb.freebsd.org/changeset/ports/373533 QAT: https://qat.redports.org/buildarchive/r373533/ Log: net-mgmt/ccnet: rework to avoid use of /proc PR: 195023 Submitted by: maintainer Modified: head/net-mgmt/ccnet/Makefile head/net-mgmt/ccnet/files/patch-lib_Makefile.am head/net-mgmt/ccnet/files/patch-lib_utils.c Modified: head/net-mgmt/ccnet/Makefile ============================================================================== --- head/net-mgmt/ccnet/Makefile Fri Nov 28 07:38:20 2014 (r373532) +++ head/net-mgmt/ccnet/Makefile Fri Nov 28 08:00:23 2014 (r373533) @@ -2,7 +2,7 @@ PORTNAME= ccnet PORTVERSION= 3.1.4 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= net-mgmt devel MAINTAINER= yan_jingfeng@yahoo.com Modified: head/net-mgmt/ccnet/files/patch-lib_Makefile.am ============================================================================== --- head/net-mgmt/ccnet/files/patch-lib_Makefile.am Fri Nov 28 07:38:20 2014 (r373532) +++ head/net-mgmt/ccnet/files/patch-lib_Makefile.am Fri Nov 28 08:00:23 2014 (r373533) @@ -1,5 +1,5 @@ ---- lib/Makefile.am.orig 2014-07-31 06:20:28.000000000 -0400 -+++ lib/Makefile.am 2014-09-02 13:48:35.659991963 -0400 +--- lib/Makefile.am.orig 2014-11-11 10:10:39.971972968 -0500 ++++ lib/Makefile.am 2014-11-11 10:37:36.712929368 -0500 @@ -19,7 +19,6 @@ peer-common.h \ string-util.h \ @@ -8,7 +8,14 @@ rpc-common.h \ net.h \ utils.h \ -@@ -66,6 +65,8 @@ +@@ -60,12 +59,14 @@ + + libccnetd_la_LDFLAGS = -no-undefined + libccnetd_la_LIBADD = @GLIB2_LIBS@ @GOBJECT_LIBS@ @SSL_LIBS@ @LIB_GDI32@ \ +- -lsqlite3 -levent @LIB_WS32@ @LIB_UUID@ \ ++ -lsqlite3 -levent @LIB_WS32@ @LIB_UUID@ -lkvm \ + @LIB_SHELL32@ @LIB_PSAPI@ @SEARPC_LIBS@ + ccnet_object_define = ccnetobj.vala Modified: head/net-mgmt/ccnet/files/patch-lib_utils.c ============================================================================== --- head/net-mgmt/ccnet/files/patch-lib_utils.c Fri Nov 28 07:38:20 2014 (r373532) +++ head/net-mgmt/ccnet/files/patch-lib_utils.c Fri Nov 28 08:00:23 2014 (r373533) @@ -1,56 +1,187 @@ ---- lib/utils.c.orig 2014-06-10 04:41:45.000000000 -0400 -+++ lib/utils.c 2014-07-28 14:32:24.000000000 -0400 -@@ -41,6 +41,10 @@ - #include - #include +--- lib/utils.c.orig 2014-07-31 06:20:28.000000000 -0400 ++++ lib/utils.c 2014-11-21 23:06:33.789257323 -0500 +@@ -43,6 +43,16 @@ -+#ifdef __FreeBSD__ + #include + ++#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#include ++#include ++#include ++#include ++#include ++#include ++#include +#endif + extern int inet_pton(int af, const char *src, void *dst); -@@ -1463,14 +1467,19 @@ +@@ -1465,14 +1475,19 @@ } #endif /* ifdef WIN32 */ -#ifdef __linux__ -+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) /* read the link of /proc/123/exe and compare with `process_name' */ static int - find_process_in_dirent(struct dirent *dir, const char *process_name) +-find_process_in_dirent(struct dirent *dir, const char *process_name) ++find_process_in_dirent_procfs(struct dirent *dir, const char *process_name) { char path[512]; /* fisrst construct a path like /proc/123/exe */ +#if defined(__linux__) if (sprintf (path, "/proc/%s/exe", dir->d_name) < 0) { -+#endif -+#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) ++#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) + if (sprintf (path, "/proc/%s/file", dir->d_name) < 0) { ++#else ++ if (1) { +#endif return -1; } -@@ -1528,6 +1537,22 @@ +@@ -1496,7 +1511,8 @@ + } + + /* read the /proc fs to determine whether some process is running */ +-gboolean process_is_running (const char *process_name) ++static gboolean ++process_is_running_procfs (const char *process_name) + { + DIR *proc_dir = opendir("/proc"); + if (!proc_dir) { +@@ -1510,7 +1526,7 @@ + /* /proc/[1-9][0-9]* */ + if (first > '9' || first < '1') + continue; +- int pid = find_process_in_dirent(subdir, process_name); ++ int pid = find_process_in_dirent_procfs(subdir, process_name); + if (pid > 0) { + closedir(proc_dir); + return TRUE; +@@ -1520,6 +1536,18 @@ + closedir(proc_dir); + return FALSE; + } ++ ++#ifdef __linux__ ++static int ++find_process_in_dirent(struct dirent *dir, const char *process_name) ++{ ++ return find_process_in_dirent_procfs(dir, process_name); ++} ++ ++gboolean ++process_is_running (const char *process_name) { ++ return process_is_running_procfs(process_name); ++} + #endif + + #ifdef __APPLE__ +@@ -1530,6 +1558,108 @@ } #endif -+/* -+ * Finally, we should not enforce to use /proc +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+gboolean process_is_running (const char *process_name) -+{ -+ //TODO -+ return FALSE; ++#if defined(__FreeBSD__) ++#define PSKIP(kp) ((kp)->ki_pid == mypid || \ ++ (!kthreads && ((kp)->ki_flag & P_KTHREAD) != 0)) ++#define KVM_OPENFILES(exec, coref, buf) \ ++ kvm_openfiles(exec, coref, NULL, O_RDONLY, buf) ++#define KVM_GETPROCS(kd, plist, nproc) \ ++ kvm_getprocs(kd, KERN_PROC_PROC, 0, &nproc) ++ ++#elif defined(__DragonFly__) ++#define PSKIP(kp) ((kp)->kp_pid == mypid || \ ++ (!kthreads && ((kp)->kp_flags & P_KTHREADP) != 0)) ++#define KVM_OPENFILES(exec, coref, buf) \ ++ kvm_openfiles(exec, coref, NULL, O_RDONLY, buf) ++#define KVM_GETPROCS(kd, plist, nproc) \ ++ kvm_getprocs(kd, KERN_PROC_ALL, 0, &nproc) ++ ++#elif defined(__NetBSD__) ++#define PSKIP(kp) ((kp)->kp_pid == mypid || \ ++ ((kp)->p_flag & P_SYSTEM) != 0) ++#define KVM_OPENFILES(exec, coref, buf) \ ++ kvm_openfiles(exec, coref, NULL, KVM_NO_FILES, buf) ++#define KVM_GETPROCS(kd, plist, nproc) \ ++ kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*plist), &nproc) ++ ++#elif defined(__OpenBSD__) ++#define PSKIP(kp) ((kp)->kp_pid == mypid || \ ++ ((kp)->p_flag & (P_SYSTEM | P_THREAD)) != 0) ++#define KVM_OPENFILES(exec, coref, buf) \ ++ kvm_openfiles(exec, coref, NULL, KVM_NO_FILES, buf) ++#define KVM_GETPROCS(kd, plist, nproc) \ ++ kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*plist), &nproc) ++ ++#else ++#define PSKIP(kp) 0 ++#define KVM_OPENFILES(exec, coref, buf) 0 ++#define KVM_GETPROCS(kd, plist, nproc) 0 ++#endif ++ ++#define WITH_PROC_FS g_file_test("/proc/curproc", G_FILE_TEST_EXISTS) ++ ++static int ++count_running_process_kvm(const char *process_name) { ++ ++ static kvm_t *kd; ++ static struct kinfo_proc *plist; ++ static int nproc; ++ static pid_t mypid; ++ static int kthreads; ++ ++ char buf[_POSIX2_LINE_MAX]; ++ const char * execf, *coref; ++ char **pargv; ++ int i, selected_nproc; ++ struct kinfo_proc *kp; ++ ++ selected_nproc = 0; ++ execf = NULL; ++ coref = _PATH_DEVNULL; ++ ++ mypid = getpid(); ++ kd = KVM_OPENFILES(execf, coref, buf); ++ if (kd == NULL) { ++ fprintf(stderr, "Error: Cannot open kernel files (%s)", buf); ++ exit(1); ++ } ++ ++ plist = KVM_GETPROCS(kd, plist, nproc); ++ if (plist == NULL) { ++ fprintf(stderr, "Error: Cannot get process list (%s)", kvm_geterr(kd)); ++ exit(1); ++ } ++ ++ for(i = 0, kp = plist; i < nproc; i++, kp++) { ++ if (PSKIP(kp)) { ++ continue; ++ } ++ if ((pargv = kvm_getargv(kd, kp, 0)) != NULL) { ++ if (strstr(pargv[0], process_name) != NULL) { ++ selected_nproc += 1; ++ } ++ } ++ } ++ kvm_close(kd); ++ kvm_close(kd); ++ ++ return selected_nproc; +} + -+int count_process(const char *process_name) -+{ -+ return 0; ++gboolean ++process_is_running(const char * process_name) { ++ if (WITH_PROC_FS) { ++ return process_is_running_procfs(process_name); ++ } ++ if (count_running_process_kvm(process_name) > 0) { ++ return TRUE; ++ } else { ++ return FALSE; ++ } +} +#endif -+*/ + char* ccnet_object_type_from_id (const char *object_id)