Hello community,

here is the log from the commit of package perl-Proc-ProcessTable for 
openSUSE:Factory checked in at 2019-02-25 17:50:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Proc-ProcessTable (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Proc-ProcessTable.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Proc-ProcessTable"

Mon Feb 25 17:50:58 2019 rev:12 rq:672857 version:0.56

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Proc-ProcessTable/perl-Proc-ProcessTable.changes
    2018-02-09 15:47:13.916067969 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Proc-ProcessTable.new.28833/perl-Proc-ProcessTable.changes
 2019-02-25 17:51:01.122764190 +0100
@@ -1,0 +2,10 @@
+Fri Feb  8 06:24:36 UTC 2019 - Stephan Kulow <co...@suse.com>
+
+- updated to 0.56
+   see /usr/share/doc/packages/perl-Proc-ProcessTable/Changes
+
+  0.56 2019-02-07
+    * Testing support for mswin32
+    * minor fix for FreeBSD
+
+-------------------------------------------------------------------

Old:
----
  Proc-ProcessTable-0.55.tar.gz

New:
----
  Proc-ProcessTable-0.56.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Proc-ProcessTable.spec ++++++
--- /var/tmp/diff_new_pack.KUa6sX/_old  2019-02-25 17:51:01.974763726 +0100
+++ /var/tmp/diff_new_pack.KUa6sX/_new  2019-02-25 17:51:01.974763726 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Proc-ProcessTable
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,19 +12,19 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           perl-Proc-ProcessTable
-Version:        0.55
+Version:        0.56
 Release:        0
 #Upstream: Artistic-1.0 or GPL-1.0+
 %define cpan_name Proc-ProcessTable
 Summary:        Perl extension to access the unix process table
-License:        (Artistic-1.0 or GPL-1.0+) and GPL-2.0
+License:        (Artistic-1.0 OR GPL-1.0-or-later) AND GPL-2.0-only
 Group:          Development/Libraries/Perl
-Url:            http://search.cpan.org/dist/Proc-ProcessTable/
+Url:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/J/JW/JWB/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -40,11 +40,11 @@
 find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644
 
 %build
-%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
+make %{?_smp_mflags}
 
 %check
-%{__make} test
+make test
 
 %install
 %perl_make_install

++++++ Proc-ProcessTable-0.55.tar.gz -> Proc-ProcessTable-0.56.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/Changes 
new/Proc-ProcessTable-0.56/Changes
--- old/Proc-ProcessTable-0.55/Changes  2017-02-21 01:03:40.000000000 +0100
+++ new/Proc-ProcessTable-0.56/Changes  2019-02-07 23:33:58.000000000 +0100
@@ -334,3 +334,6 @@
   * Fixed bug in Linux occurring if process name is empty (RT#106571)
   * Added missing includes on AIX (RT#39748)
   * Some minor changes on tests and documentation
+0.56 2019-02-07
+  * Testing support for mswin32
+  * minor fix for FreeBSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/MANIFEST 
new/Proc-ProcessTable-0.56/MANIFEST
--- old/Proc-ProcessTable-0.55/MANIFEST 2018-02-01 23:02:42.000000000 +0100
+++ new/Proc-ProcessTable-0.56/MANIFEST 2019-02-07 23:34:06.000000000 +0100
@@ -18,7 +18,6 @@
 README.hpux
 README.cygwin
 PORTING
-TODO
 example.pl
 Process/Makefile.PL
 Process/Process.pm
@@ -60,8 +59,8 @@
 os/NetBSD.c
 os/NetBSD.h
 os/OpenBSD.c
-os/cygwin.c
-os/cygwin.h
+os/MSWin32.c
+os/MSWin32.h
 t/process.t
 hints/svr4.pl
 hints/svr5.pl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/META.json 
new/Proc-ProcessTable-0.56/META.json
--- old/Proc-ProcessTable-0.55/META.json        2018-02-01 23:02:41.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/META.json        2019-02-07 23:34:06.000000000 
+0100
@@ -4,13 +4,13 @@
       "Jonathan Swartz <swa...@pobox.com>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter 
version 2.150010",
+   "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter 
version 2.150010",
    "license" : [
       "perl_5"
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
-      "version" : "2"
+      "version" : 2
    },
    "name" : "Proc-ProcessTable",
    "no_index" : {
@@ -43,6 +43,6 @@
          "url" : "https://github.com/jwbargsten/perl-proc-processtable";
       }
    },
-   "version" : "0.55",
-   "x_serialization_backend" : "JSON::PP version 2.27400_02"
+   "version" : "0.56",
+   "x_serialization_backend" : "JSON::PP version 2.97001"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/META.yml 
new/Proc-ProcessTable-0.56/META.yml
--- old/Proc-ProcessTable-0.55/META.yml 2018-02-01 23:02:41.000000000 +0100
+++ new/Proc-ProcessTable-0.56/META.yml 2019-02-07 23:34:06.000000000 +0100
@@ -7,7 +7,7 @@
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 
2.150010'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -22,5 +22,5 @@
   Storable: '0'
 resources:
   repository: https://github.com/jwbargsten/perl-proc-processtable
-version: '0.55'
+version: '0.56'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/ProcessTable.pm 
new/Proc-ProcessTable-0.56/ProcessTable.pm
--- old/Proc-ProcessTable-0.55/ProcessTable.pm  2018-02-01 23:02:07.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/ProcessTable.pm  2019-02-07 23:32:07.000000000 
+0100
@@ -18,7 +18,7 @@
 @EXPORT = qw(
     
 );
-$VERSION = '0.55';
+$VERSION = '0.56';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/README 
new/Proc-ProcessTable-0.56/README
--- old/Proc-ProcessTable-0.55/README   2017-02-21 01:03:40.000000000 +0100
+++ new/Proc-ProcessTable-0.56/README   2019-02-07 23:32:07.000000000 +0100
@@ -19,7 +19,7 @@
 ======
 This is BETA software; it seems to work, but use at your own risk :) 
 
-Currently works on darwin, nonstop-ux, Cygwin on Windows, linux,
+Currently works on darwin, nonstop-ux, Windows (both native MSWin32 and 
Cygwin), linux,
 solaris, aix, hpux, freebsd, irix, dec_osf, bsdi, netbsd, unixware 7.x,
 SunOS and openbsd. Please see the "README.osname" files for details on
 individual os implementations. Please see the file PORTING if you are
@@ -27,9 +27,7 @@
 TODO for a list of issues that need to be addressed (and send me
 patches!).
 
-Please note that the Cygwin/windows port requires the Cygwin
-environment to work (available from http://cygwin.com/), and that the
-code for the port is derived from Cygwin code and is therefore covered
+Please note that the Windows port is derived from Cygwin code and is therefore 
covered
 by the Cygwin license (http://cygwin.com/licensing.html).
 
 Multithread support is now available for Solaris; please see
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/hints/cygwin.pl 
new/Proc-ProcessTable-0.56/hints/cygwin.pl
--- old/Proc-ProcessTable-0.55/hints/cygwin.pl  2017-02-20 19:38:46.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/hints/cygwin.pl  2019-02-07 23:32:07.000000000 
+0100
@@ -1 +1,3 @@
-symlink "os/cygwin.c", "OS.c" || die "Could not link os/cygwin.c to os/OS.c\n";
+symlink "os/MSWin32.c", "OS.c" || die "Could not link os/MSWin32.c to OS.c\n";
+
+$self->{DEFINE} .= " -DUSE_CYGWIN";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/os/FreeBSD-kvm.h 
new/Proc-ProcessTable-0.56/os/FreeBSD-kvm.h
--- old/Proc-ProcessTable-0.55/os/FreeBSD-kvm.h 2018-01-27 09:27:42.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/os/FreeBSD-kvm.h 2019-02-07 23:32:07.000000000 
+0100
@@ -13,7 +13,7 @@
 
 /* We need to pass in a cap for ignore, lower for store on object */
 /* We can just lc these! */
-static char Defaultformat[] = "iiiiiiiisssssssssssssissiiiiiiiiiiiiiiVV";
+static char Defaultformat[] = "iiiiiiiisssssssssssssissiiiuiiiiiiiiiiVV";
 
 /* Mapping of field to type */
 static char* Fields[] = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/os/MSWin32.c 
new/Proc-ProcessTable-0.56/os/MSWin32.c
--- old/Proc-ProcessTable-0.55/os/MSWin32.c     1970-01-01 01:00:00.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/os/MSWin32.c     2019-02-07 23:32:07.000000000 
+0100
@@ -0,0 +1,396 @@
+/* 
+
+       Adapted from ps.cc by J Robert Ray <jr...@jrray.org>
+
+
+   ps.cc
+
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+#include <stdio.h>
+#include <windows.h>
+#include <time.h>
+#include <stdlib.h>
+#include <tlhelp32.h>
+#include <psapi.h>
+
+#ifdef USE_CYGWIN
+#include <getopt.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <sys/cygwin.h>
+#else
+#include <sddl.h>
+#endif
+
+#include "os/MSWin32.h"
+
+
+#ifdef USE_CYGWIN
+typedef DWORD (WINAPI *GETMODULEFILENAME)(
+  HANDLE hProcess,
+  HMODULE hModule,
+  LPTSTR lpstrFileName,
+  DWORD nSize
+);
+#endif
+
+typedef HANDLE (WINAPI *CREATESNAPSHOT)(
+    DWORD dwFlags,
+    DWORD th32ProcessID
+);
+
+typedef BOOL (WINAPI *PROCESSWALK)(
+    HANDLE hSnapshot,
+    LPPROCESSENTRY32 lppe
+);
+
+#ifdef USE_CYGWIN
+typedef struct external_pinfo external_pinfo;
+
+GETMODULEFILENAME myGetModuleFileNameEx;
+#endif
+
+CREATESNAPSHOT myCreateToolhelp32Snapshot;
+PROCESSWALK myProcess32First;
+PROCESSWALK myProcess32Next;
+
+static int init_win_result = FALSE;
+
+extern void bless_into_proc(char* , char**, ...);
+
+#ifdef USE_CYGWIN
+// Win95 functions
+static DWORD WINAPI GetModuleFileNameEx95 (
+  HANDLE hProcess,
+  HMODULE hModule,
+  LPTSTR lpstrFileName,
+  DWORD n
+)
+{
+  HANDLE h;
+  DWORD pid = (DWORD) hModule;
+  PROCESSENTRY32 proc;
+
+  h = myCreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
+  if (!h)
+    return 0;
+
+  proc.dwSize = sizeof (proc);
+  if (myProcess32First(h, &proc))
+    do
+      if (proc.th32ProcessID == pid)
+       {
+         CloseHandle (h);
+         strcpy (lpstrFileName, proc.szExeFile);
+         return 1;
+       }
+    while (myProcess32Next (h, &proc));
+  CloseHandle (h);
+  return 0;
+}
+#endif
+
+int
+init_win ()
+{
+  HMODULE h;
+
+#ifdef USE_CYGWIN
+  OSVERSIONINFO os_version_info;
+
+  memset (&os_version_info, 0, sizeof os_version_info);
+  os_version_info.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+  GetVersionEx (&os_version_info);
+
+  if (os_version_info.dwPlatformId == VER_PLATFORM_WIN32_NT)
+    {
+      h = LoadLibrary ("psapi.dll");
+      if (!h)
+       return 0;
+      myGetModuleFileNameEx = (GETMODULEFILENAME) GetProcAddress (h, 
"GetModuleFileNameExA");
+      if (!myGetModuleFileNameEx)
+       return 0;
+      return 1;
+    }
+#endif
+
+  h = GetModuleHandle("KERNEL32.DLL");
+  myCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress (h, 
"CreateToolhelp32Snapshot");
+  myProcess32First = (PROCESSWALK)GetProcAddress (h, "Process32First");
+  myProcess32Next  = (PROCESSWALK)GetProcAddress (h, "Process32Next");
+  if (!myCreateToolhelp32Snapshot || !myProcess32First || !myProcess32Next)
+    return 0;
+
+#ifdef USE_CYGWIN
+  myGetModuleFileNameEx = GetModuleFileNameEx95;
+#endif
+  return 1;
+}
+
+#define FACTOR (0x19db1ded53ea710LL)
+#define NSPERSEC 10000000LL
+
+/* Convert a Win32 time to "UNIX" format. */
+static long
+to_time_t (FILETIME *ptr)
+{
+  /* A file time is the number of 100ns since jan 1 1601
+     stuffed into two long words.
+     A time_t is the number of seconds since jan 1 1970.  */
+
+  long rem;
+  long long x = ((long long) ptr->dwHighDateTime << 32) + 
((unsigned)ptr->dwLowDateTime);
+  x -= FACTOR;                  /* number of 100ns between 1601 and 1970 */
+  rem = x % ((long long)NSPERSEC);
+  rem += (NSPERSEC / 2);
+  x /= (long long) NSPERSEC;            /* number of 100ns in a second */
+  x += (long long) (rem / NSPERSEC);
+  return x;
+}
+
+#ifdef USE_CYGWIN
+
+void
+OS_get_table()
+{
+  external_pinfo *p;
+  int uid;
+  cygwin_getinfo_types query = CW_GETPINFO;
+  char ch;
+  int pid;
+  char *pstate;
+  char pname[MAX_PATH];
+  char uname[128];
+  char *fields;
+
+  uid = getuid ();
+
+  (void) cygwin_internal (CW_LOCK_PINFO, 1000);
+
+  if (query == CW_GETPINFO && !init_win_result)
+    query = CW_GETPINFO;
+
+  for (pid = 0;
+       (p = (external_pinfo *) cygwin_internal (query, pid | CW_NEXTPID));
+       pid = p->pid)
+    {
+      pstate = " ";
+      if (p->process_state & PID_STOPPED)
+       pstate = "stopped";
+      else if (p->process_state & PID_TTYIN)
+       pstate = "ttyin";
+      else if (p->process_state & PID_TTYOU)
+       pstate = "ttyout";
+#ifdef PID_ORPHANED
+      if (p->process_state & (PID_ORPHANED | PID_EXITED))
+#else
+      if (p->process_state & PID_EXITED)
+#endif
+        strcpy (pname, "<defunct>");
+      else if (p->ppid)
+       {
+         char *s;
+         pname[0] = '\0';
+         cygwin_conv_path((CCP_RELATIVE|CCP_WIN_A_TO_POSIX), p->progname, 
pname, PATH_MAX);
+         s = strchr (pname, '\0') - 4;
+         if (s > pname && strcasecmp (s, ".exe") == 0)
+           *s = '\0';
+       }
+      else if (query == CW_GETPINFO)
+       {
+         FILETIME ct, et, kt, ut;
+         HANDLE h = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
+                                 FALSE, p->dwProcessId);
+         if (!h)
+           continue;
+         if (!myGetModuleFileNameEx (h, myProcess32First ? p->dwProcessId : 
NULL, pname, MAX_PATH))
+           strcpy (pname, "*** unknown ***");
+         if (GetProcessTimes (h, &ct, &et, &kt, &ut))
+           p->start_time = to_time_t (&ct);
+         CloseHandle (h);
+       }
+
+        {
+          struct passwd *pw;
+
+          if ((pw = getpwuid (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ?
+                             p->uid32 : p->uid)))
+            strcpy (uname, pw->pw_name);
+          else
+            sprintf (uname, "%u", (unsigned)
+                    (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ?
+                     p->uid32 : p->uid));
+        }
+
+       if (query == CW_GETPINFO) {
+               fields = "iiiiisiis";
+       } else {
+               fields = "iiiiisIis";
+       }
+
+       bless_into_proc(fields, Fields, 
+
+               p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? p->uid32 : p->uid,
+               p->pid,
+               p->ppid,
+               p->pgid,
+               p->dwProcessId,
+               pname,
+               p->start_time,
+               p->ctty,
+               pstate
+       );
+
+    }
+  (void) cygwin_internal (CW_UNLOCK_PINFO);
+}
+
+#else
+
+static void get_process_owner(HANDLE process, char string_sid[184], char 
user_name[256], char domain_name[255])
+{
+  HANDLE process_token;
+  PTOKEN_USER token_user;
+  DWORD token_user_size;
+  char *string_sid_ptr;
+  size_t string_sid_len;
+  DWORD user_name_size;
+  DWORD domain_name_size;
+  SID_NAME_USE sid_type;
+
+  string_sid[0] = 0;
+  user_name[0] = 0;
+  domain_name[0] = 0;
+
+  if (!OpenProcessToken (process, TOKEN_QUERY, &process_token))
+    return;
+
+  if (!GetTokenInformation (process_token, TokenUser, NULL, 0, 
&token_user_size) && GetLastError () != ERROR_INSUFFICIENT_BUFFER)
+    {
+      CloseHandle (process_token);
+      return;
+    }
+
+  token_user = malloc (token_user_size);
+  if (!token_user)
+    {
+      CloseHandle (process_token);
+      return;
+    }
+
+  if (!GetTokenInformation (process_token, TokenUser, token_user, 
token_user_size, &token_user_size))
+    {
+      free (token_user);
+      CloseHandle (process_token);
+      return;
+    }
+
+  if (ConvertSidToStringSidA (token_user->User.Sid, &string_sid_ptr))
+    {
+      string_sid_len = strlen (string_sid_ptr);
+      if (string_sid_len < 184)
+        memcpy (string_sid, string_sid_ptr, string_sid_len+1);
+      LocalFree (string_sid_ptr);
+    }
+
+  user_name_size = 256;
+  domain_name_size = 256;
+  if (!LookupAccountSidA (NULL, token_user->User.Sid, user_name, 
&user_name_size, domain_name, &domain_name_size, &sid_type) && GetLastError () 
== ERROR_NONE_MAPPED)
+    {
+      strcpy (user_name, "NONE_MAPPED");
+      strcpy (domain_name, "NONE_MAPPED");
+    }
+
+  free (token_user);
+  CloseHandle (process_token);
+}
+
+static unsigned long get_uid_from_string_sid(char *string_sid)
+{
+  char *uid_ptr;
+  char *ptr;
+
+  uid_ptr = strrchr (string_sid, '-');
+  if (!uid_ptr)
+    return 0;
+
+  uid_ptr++;
+
+  for (ptr = uid_ptr; *ptr; ptr++)
+    if (*ptr < '0' || *ptr > '9')
+      return 0;
+
+  return strtoul (uid_ptr, NULL, 10);
+}
+
+void
+OS_get_table()
+{
+  HANDLE proc;
+  HANDLE snapshot;
+  PROCESSENTRY32 proc_entry;
+  FILETIME ct, et, kt, ut;
+  char string_sid[184];
+  char user_name[256];
+  char domain_name[256];
+  unsigned long uid;
+  long start_time;
+
+  if (!init_win_result)
+    return;
+
+  snapshot = myCreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
+  if (!snapshot)
+    return;
+
+  proc_entry.dwSize = sizeof (proc_entry);
+  if (myProcess32First (snapshot, &proc_entry))
+    do
+      {
+        uid = 0;
+        start_time = 0;
+
+        proc = OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, 
proc_entry.th32ProcessID);
+        if (proc)
+          {
+            if (GetProcessTimes (proc, &ct, &et, &kt, &ut))
+              start_time = to_time_t (&ct);
+            get_process_owner (proc, string_sid, user_name, domain_name);
+            CloseHandle (proc);
+          }
+
+        uid = get_uid_from_string_sid (string_sid);
+
+        bless_into_proc ("pppslsss", Fields,
+          uid,
+          proc_entry.th32ProcessID,
+          proc_entry.th32ParentProcessID,
+          proc_entry.szExeFile,
+          start_time,
+          string_sid,
+          user_name,
+          domain_name
+        );
+      }
+    while (myProcess32Next (snapshot, &proc_entry));
+
+  CloseHandle (snapshot);
+}
+
+#endif
+
+char*
+OS_initialize()
+{
+       init_win_result = init_win();
+
+       return NULL;
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/os/MSWin32.h 
new/Proc-ProcessTable-0.56/os/MSWin32.h
--- old/Proc-ProcessTable-0.55/os/MSWin32.h     1970-01-01 01:00:00.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/os/MSWin32.h     2019-02-07 23:32:07.000000000 
+0100
@@ -0,0 +1,21 @@
+static char *Fields[] = {
+       "uid",
+       "pid",
+       "ppid",
+#ifdef USE_CYGWIN
+       "pgid",
+       "winpid",
+#endif
+       "fname",
+       "start",
+#ifdef USE_CYGWIN
+       "ttynum",
+       "state",
+#endif
+
+#ifndef USE_CYGWIN
+       "sid",
+       "user_name",
+       "domain_name",
+#endif
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/os/cygwin.c 
new/Proc-ProcessTable-0.56/os/cygwin.c
--- old/Proc-ProcessTable-0.55/os/cygwin.c      2017-02-21 01:03:40.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/os/cygwin.c      1970-01-01 01:00:00.000000000 
+0100
@@ -1,286 +0,0 @@
-/* 
-
-       Adapted from ps.cc by J Robert Ray <jr...@jrray.org>
-
-
-   ps.cc
-
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-
-This file is part of Cygwin.
-
-This software is a copyrighted work licensed under the terms of the
-Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
-details. */
-
-#include <stdio.h>
-#include <windows.h>
-#include <time.h>
-#include <getopt.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <pwd.h>
-#include <sys/cygwin.h>
-#include <tlhelp32.h>
-#include <psapi.h>
-
-#include "os/cygwin.h"
-
-typedef BOOL (WINAPI *ENUMPROCESSMODULES)(
-  HANDLE hProcess,      // handle to the process
-  HMODULE * lphModule,  // array to receive the module handles
-  DWORD cb,             // size of the array
-  LPDWORD lpcbNeeded    // receives the number of bytes returned
-);
-
-typedef DWORD (WINAPI *GETMODULEFILENAME)(
-  HANDLE hProcess,
-  HMODULE hModule,
-  LPTSTR lpstrFileName,
-  DWORD nSize
-);
-
-typedef HANDLE (WINAPI *CREATESNAPSHOT)(
-    DWORD dwFlags,
-    DWORD th32ProcessID
-);
-
-// Win95 functions
-typedef BOOL (WINAPI *PROCESSWALK)(
-    HANDLE hSnapshot,
-    LPPROCESSENTRY32 lppe
-);
-
-typedef struct external_pinfo external_pinfo;
-
-ENUMPROCESSMODULES myEnumProcessModules;
-GETMODULEFILENAME myGetModuleFileNameEx;
-CREATESNAPSHOT myCreateToolhelp32Snapshot;
-PROCESSWALK myProcess32First;
-PROCESSWALK myProcess32Next;
-
-static int init_win_result = FALSE;
-
-static BOOL WINAPI dummyprocessmodules (
-  HANDLE hProcess,      // handle to the process
-  HMODULE * lphModule,  // array to receive the module handles
-  DWORD cb,             // size of the array
-  LPDWORD lpcbNeeded    // receives the number of bytes returned
-)
-{
-  lphModule[0] = (HMODULE) *lpcbNeeded;
-  *lpcbNeeded = 1;
-  return 1;
-}
-
-static DWORD WINAPI GetModuleFileNameEx95 (
-  HANDLE hProcess,
-  HMODULE hModule,
-  LPTSTR lpstrFileName,
-  DWORD n
-)
-{
-  HANDLE h;
-  DWORD pid = (DWORD) hModule;
-  PROCESSENTRY32 proc;
-
-  h = myCreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
-  if (!h)
-    return 0;
-
-  proc.dwSize = sizeof (proc);
-  if (myProcess32First(h, &proc))
-    do
-      if (proc.th32ProcessID == pid)
-       {
-         CloseHandle (h);
-         strcpy (lpstrFileName, proc.szExeFile);
-         return 1;
-       }
-    while (myProcess32Next (h, &proc));
-  CloseHandle (h);
-  return 0;
-}
-
-int
-init_win ()
-{
-  OSVERSIONINFO os_version_info;
-  HMODULE h;
-
-  memset (&os_version_info, 0, sizeof os_version_info);
-  os_version_info.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
-  GetVersionEx (&os_version_info);
-
-  if (os_version_info.dwPlatformId == VER_PLATFORM_WIN32_NT)
-    {
-      h = LoadLibrary ("psapi.dll");
-      if (!h)
-       return 0;
-      myEnumProcessModules = (ENUMPROCESSMODULES) GetProcAddress (h, 
"EnumProcessModules");
-      myGetModuleFileNameEx = (GETMODULEFILENAME) GetProcAddress (h, 
"GetModuleFileNameExA");
-      if (!myEnumProcessModules || !myGetModuleFileNameEx)
-       return 0;
-      return 1;
-    }
-
-  h = GetModuleHandle("KERNEL32.DLL");
-  myCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress (h, 
"CreateToolhelp32Snapshot");
-  myProcess32First = (PROCESSWALK)GetProcAddress (h, "Process32First");
-  myProcess32Next  = (PROCESSWALK)GetProcAddress (h, "Process32Next");
-  if (!myCreateToolhelp32Snapshot || !myProcess32First || !myProcess32Next)
-    return 0;
-
-  myEnumProcessModules = dummyprocessmodules;
-  myGetModuleFileNameEx = GetModuleFileNameEx95;
-  return 1;
-}
-
-static char *
-start_time (external_pinfo *child)
-{
-  time_t st = child->start_time;
-  time_t t = time (NULL);
-  static char stime[40] = {'\0'};
-  char now[40];
-
-  strncpy (stime, ctime (&st) + 4, 15);
-  strcpy (now, ctime (&t) + 4);
-
-  if ((t - st) < (24 * 3600))
-    return (stime + 7);
-
-  stime[6] = '\0';
-
-  return stime;
-}
-
-#define FACTOR (0x19db1ded53ea710LL)
-#define NSPERSEC 10000000LL
-
-/* Convert a Win32 time to "UNIX" format. */
-long __stdcall
-to_time_t (FILETIME *ptr)
-{
-  /* A file time is the number of 100ns since jan 1 1601
-     stuffed into two long words.
-     A time_t is the number of seconds since jan 1 1970.  */
-
-  long rem;
-  long long x = ((long long) ptr->dwHighDateTime << 32) + 
((unsigned)ptr->dwLowDateTime);
-  x -= FACTOR;                  /* number of 100ns between 1601 and 1970 */
-  rem = x % ((long long)NSPERSEC);
-  rem += (NSPERSEC / 2);
-  x /= (long long) NSPERSEC;            /* number of 100ns in a second */
-  x += (long long) (rem / NSPERSEC);
-  return x;
-}
-
-void
-OS_get_table()
-{
-  external_pinfo *p;
-  int uid;
-  cygwin_getinfo_types query = CW_GETPINFO;
-  char ch;
-  int pid;
-  char *pstate;
-  char pname[MAX_PATH];
-  HMODULE hm[1000];
-  char uname[128];
-  char *fields;
-
-  uid = getuid ();
-
-  (void) cygwin_internal (CW_LOCK_PINFO, 1000);
-
-  if (query == CW_GETPINFO && !init_win_result)
-    query = CW_GETPINFO;
-
-  for (pid = 0;
-       (p = (external_pinfo *) cygwin_internal (query, pid | CW_NEXTPID));
-       pid = p->pid)
-    {
-      pstate = " ";
-      if (p->process_state & PID_STOPPED)
-       pstate = "stopped";
-      else if (p->process_state & PID_TTYIN)
-       pstate = "ttyin";
-      else if (p->process_state & PID_TTYOU)
-       pstate = "ttyout";
-#ifdef PID_ORPHANED
-      if (p->process_state & (PID_ORPHANED | PID_EXITED))
-#else
-      if (p->process_state & PID_EXITED)
-#endif
-        strcpy (pname, "<defunct>");
-      else if (p->ppid)
-       {
-         char *s;
-         pname[0] = '\0';
-         cygwin_conv_path((CCP_RELATIVE|CCP_WIN_A_TO_POSIX), p->progname, 
pname, PATH_MAX);
-         s = strchr (pname, '\0') - 4;
-         if (s > pname && strcasecmp (s, ".exe") == 0)
-           *s = '\0';
-       }
-      else if (query == CW_GETPINFO)
-       {
-         DWORD n;
-         FILETIME ct, et, kt, ut;
-         HANDLE h = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
-                                 FALSE, p->dwProcessId);
-         if (!h)
-           continue;
-         n = p->dwProcessId;
-         if (!myEnumProcessModules (h, hm, sizeof (hm), &n))
-           n = 0;
-         if (!n || !myGetModuleFileNameEx (h, hm[0], pname, MAX_PATH))
-           strcpy (pname, "*** unknown ***");
-         if (GetProcessTimes (h, &ct, &et, &kt, &ut))
-           p->start_time = to_time_t (&ct);
-         CloseHandle (h);
-       }
-
-        {
-          struct passwd *pw;
-
-          if ((pw = getpwuid (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ?
-                             p->uid32 : p->uid)))
-            strcpy (uname, pw->pw_name);
-          else
-            sprintf (uname, "%u", (unsigned)
-                    (p->version >= EXTERNAL_PINFO_VERSION_32_BIT ?
-                     p->uid32 : p->uid));
-        }
-
-       if (query == CW_GETPINFO) {
-               fields = "iiiiisiis";
-       } else {
-               fields = "iiiiisIis";
-       }
-
-       bless_into_proc(fields, Fields, 
-
-               p->version >= EXTERNAL_PINFO_VERSION_32_BIT ? p->uid32 : p->uid,
-               p->pid,
-               p->ppid,
-               p->pgid,
-               p->dwProcessId,
-               pname,
-               p->start_time,
-               p->ctty,
-               pstate
-       );
-
-    }
-  (void) cygwin_internal (CW_UNLOCK_PINFO);
-}
-
-char*
-OS_initialize()
-{
-       init_win_result = init_win();
-
-       return NULL;
-}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/os/cygwin.h 
new/Proc-ProcessTable-0.56/os/cygwin.h
--- old/Proc-ProcessTable-0.55/os/cygwin.h      2017-02-20 19:38:46.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/os/cygwin.h      1970-01-01 01:00:00.000000000 
+0100
@@ -1,11 +0,0 @@
-static char *Fields[] = {
-       "uid",
-       "pid",
-       "ppid",
-       "pgid",
-       "winpid",
-       "fname",
-       "start",
-       "ttynum",
-       "state",
-};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Proc-ProcessTable-0.55/t/process.t 
new/Proc-ProcessTable-0.56/t/process.t
--- old/Proc-ProcessTable-0.55/t/process.t      2017-02-21 01:03:40.000000000 
+0100
+++ new/Proc-ProcessTable-0.56/t/process.t      2019-02-07 23:32:07.000000000 
+0100
@@ -2,8 +2,8 @@
 # `make test'. After `make install' it should work as `perl test.pl'
 
 use strict;
-use Test;
-BEGIN { plan tests => 3 }
+use Test::More;
+use Config;
 
 # check wether ProcProcessTable is there
 use Proc::ProcessTable;
@@ -32,6 +32,9 @@
 
 }
 
+plan skip_all => 'This test needs real fork() implementation' if 
$Config{d_pseudofork} || !$Config{d_fork};
+plan tests => 3;
+
 # fork a child process
 my $child_pid = fork;
 


Reply via email to