2008-07-09 Albert Lee <[email protected]>
authortrisk
Wed, 09 Jul 2008 04:12:07 +0000
changeset 1265 205cb8a210b5
parent 1264 d4ca7223d957
child 1266 3f7ba5b0fd2e
2008-07-09 Albert Lee <[email protected]> * SFEwine.spec: Bump to 1.1.0. Drop patch1, patch2 * patches/wine-01-getaddrinfo.diff: Delete upstreamed patch * patches/wine-02-xim-workaround.diff: Delete unnecessary patch * patches/wine-06-iphlpapi.diff: Update for 1.1.0 * patches/winetricks-01-sh.diff: Update for winetricks-20080627
ChangeLog
SFEwine.spec
patches/wine-01-getaddrinfo.diff
patches/wine-02-xim-workaround.diff
patches/wine-06-iphlpapi.diff
patches/winetricks-01-sh.diff
--- a/ChangeLog	Sun Jul 06 07:38:13 2008 +0000
+++ b/ChangeLog	Wed Jul 09 04:12:07 2008 +0000
@@ -1,3 +1,11 @@
+2008-07-09  Albert Lee  <[email protected]>
+
+	* SFEwine.spec: Bump to 1.1.0. Drop patch1, patch2
+	* patches/wine-01-getaddrinfo.diff: Delete upstreamed patch
+	* patches/wine-02-xim-workaround.diff: Delete unnecessary patch
+	* patches/wine-06-iphlpapi.diff: Update for 1.1.0
+	* patches/winetricks-01-sh.diff: Update for winetricks-20080627
+
 2008-07-06 Rafael Alfaro <[email protected]>
 
 	* SFEperl-crypt-idea: Initial Spec File.
--- a/SFEwine.spec	Sun Jul 06 07:38:13 2008 +0000
+++ b/SFEwine.spec	Wed Jul 09 04:12:07 2008 +0000
@@ -10,14 +10,14 @@
 
 Name:                   SFEwine
 Summary:                Windows Emulator
-Version:                1.0
+Version:                1.1.0
 URL:                    http://www.winehq.org/
 Source:                 %{src_url}/%{src_name}-%{version}.tar.bz2
-Source101:		http://trisk.acm.jhu.edu/winetricks-20080614
-Patch1:			wine-01-getaddrinfo.diff
+Source101:		http://trisk.acm.jhu.edu/winetricks-20080627
+#Patch1:			wine-01-getaddrinfo.diff
 # http://bugs.winehq.org/show_bug.cgi?id=12740
 # http://bugs.opensolaris.org/view_bug.do?bug_id=6698109
-Patch2:			wine-02-xim-workaround.diff
+#Patch2:			wine-02-xim-workaround.diff
 Patch3:			wine-03-shell.diff
 # http://bugs.winehq.org/show_bug.cgi?id=13227
 # https://sourceforge.net/tracker/index.php?func=detail&aid=1964949&group_id=125443&atid=865175
@@ -71,8 +71,8 @@
 
 %prep
 %setup -q -n %{src_name}-%{version}
-%patch1 -p1
-%patch2 -p1
+#%patch1 -p1
+#%patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
@@ -162,6 +162,9 @@
 %{_datadir}/aclocal/*
 
 %changelog
+* Wed Jul 09 2008 - [email protected]
+- Bump to 1.1.0
+- Drop patch1 (upstreamed), patch2 (unnecessary)
 * Thu Jun 19 2008 - [email protected]
 - Add patch7, remove mapfile hack
 * Tue Jun 17 2008 - [email protected]
--- a/patches/wine-01-getaddrinfo.diff	Sun Jul 06 07:38:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- wine-1.0-rc4.orig/dlls/ws2_32/socket.c	2008-06-06 11:24:30.000000000 -0400
-+++ wine-1.0-rc4/dlls/ws2_32/socket.c	2008-06-12 16:03:38.456042576 -0400
-@@ -3454,7 +3663,7 @@
-     /* getaddrinfo(3) is thread safe, no need to wrap in CS */
-     result = getaddrinfo(nodename, servname, punixhints, &unixaires);
- 
--    TRACE("%s, %s %p -> %p %d\n", nodename, servname, hints, res, result);
-+    TRACE("%s, %s %p -> %p %d\n", debugstr_a(nodename), debugstr_a(servname), hints, res, result);
- 
-     HeapFree(GetProcessHeap(), 0, node);
-     HeapFree(GetProcessHeap(), 0, serv);
--- a/patches/wine-02-xim-workaround.diff	Sun Jul 06 07:38:13 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
---- wine-1.0-rc1.orig/dlls/winex11.drv/xim.c	2008-05-09 13:42:56.000000000 -0400
-+++ wine-1.0-rc1/dlls/winex11.drv/xim.c	2008-05-13 21:25:42.864799751 -0400
-@@ -35,8 +35,21 @@
- WINE_DEFAULT_DEBUG_CHANNEL(x11drv);
- 
- #ifndef HAVE_XICCALLBACK_CALLBACK
--#define XICCallback XIMCallback
--#define XICProc XIMProc
-+typedef Bool (*XICProc)(
-+    XIC,
-+    XPointer,
-+    XPointer
-+);
-+
-+typedef struct {
-+    XPointer client_data;
-+    XICProc callback;
-+} XICCallback;
-+#endif
-+
-+#ifdef __sun
-+#include <dlfcn.h>
-+static int broken = 0;
- #endif
- 
- BOOL ximInComposeMode=FALSE;
-@@ -355,6 +368,17 @@
-         ret = FALSE;
-     }
-     wine_tsx11_unlock();
-+
-+#ifdef __sun
-+    if (ret)
-+    {
-+        /* Solaris i18n libraries prior to snv_85 have a broken
-+           XRegisterIMInstantiateCallback. Check for old symbols at runtime. */
-+        if (dlsym(RTLD_PROBE, "_XInitGenericIM"))
-+            broken = 1;
-+    }
-+#endif
-+
-     return ret;
- }
- 
-@@ -368,9 +392,16 @@
-     TRACE("xim = %p, p = %p\n", xim, p);
-     thread_data->xim = NULL;
-     ximStyle = 0;
-+#ifdef __sun
-+    if (!broken)
-+    {
-+#endif
-     wine_tsx11_lock();
--    XRegisterIMInstantiateCallback( thread_data->display, NULL, NULL, NULL, X11DRV_OpenIM, NULL );
-+    XRegisterIMInstantiateCallback(thread_data->display, NULL, NULL, NULL, X11DRV_OpenIM, NULL);
-     wine_tsx11_unlock();
-+#ifdef __sun
-+    }
-+#endif
- }
- 
- /***********************************************************************
-@@ -471,6 +502,9 @@
-     }
- 
-     thread_data->xim = xim;
-+#ifdef __sun
-+    if (!broken)
-+#endif
-     XUnregisterIMInstantiateCallback(display, NULL, NULL, NULL, X11DRV_OpenIM, NULL);
- 
-     wine_tsx11_unlock();
-@@ -481,9 +515,16 @@
- 
- void X11DRV_SetupXIM(void)
- {
-     wine_tsx11_lock();
-+#ifdef __sun
-+    if (!broken)
-+#endif
-     XRegisterIMInstantiateCallback(thread_display(), NULL, NULL, NULL, X11DRV_OpenIM, NULL);
-+#ifdef __sun
-+    else
-+        X11DRV_OpenIM(thread_display(), NULL, NULL);
-+#endif
-     wine_tsx11_unlock();
- }
- 
- static BOOL X11DRV_DestroyIC(XIC xic, XPointer p, XPointer data)
--- a/patches/wine-06-iphlpapi.diff	Sun Jul 06 07:38:13 2008 +0000
+++ b/patches/wine-06-iphlpapi.diff	Wed Jul 09 04:12:07 2008 +0000
@@ -88,16 +88,15 @@
  
  C_SRCS = \
  	ifenum.c \
-diff -ur wine-0.9.59.orig/dlls/iphlpapi/ipstats.c wine-0.9.59/dlls/iphlpapi/ipstats.c
---- wine-0.9.59.orig/dlls/iphlpapi/ipstats.c	Fri Apr  4 10:55:13 2008
-+++ wine-0.9.59/dlls/iphlpapi/ipstats.c	Thu Apr 10 12:39:48 2008
-@@ -1,6 +1,22 @@
+--- wine-1.1.0.orig/dlls/iphlpapi/ipstats.c	2008-06-27 10:24:42.000000000 -0400
++++ wine-1.1.0/dlls/iphlpapi/ipstats.c	2008-07-08 23:55:20.355580812 -0400
+@@ -1,5 +1,21 @@
  /* Copyright (C) 2003,2006 Juan Lang
   * Copyright (C) 2007 TransGaming Technologies Inc.
 + * Copyright (c) 2008 Albert Lee <[email protected]>
 + * Portions derived from netstat.c with the following copyright:
 + * Copyright (c) Sun Microsystems, Inc.  1994. All rights reserved.
-  *
++ *
 + * License is granted to copy, to use, and to make and to use derivative works
 + * for research and evaluation purposes, provided that Sun Microsystems is
 + * acknowledged in all documentation pertaining to any such copy or
@@ -110,10 +109,9 @@
 + * without express or implied warranty of any kind.
 + *
 + * These notices must be retained in any copies of any part of this software.
-+ *
+  *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
-  * License as published by the Free Software Foundation; either
 @@ -16,10 +32,11 @@
   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
   *
@@ -127,7 +125,7 @@
  #include "wine/port.h"
  #include "wine/debug.h"
  
-@@ -70,6 +87,32 @@
+@@ -99,6 +116,32 @@
  #include <sys/sysctl.h>
  #endif
  
@@ -160,7 +158,7 @@
  #ifndef ROUNDUP
  #define ROUNDUP(a) \
  	((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
-@@ -100,9 +143,200 @@
+@@ -129,6 +172,180 @@
  
  WINE_DEFAULT_DEBUG_CHANNEL(iphlpapi);
  
@@ -340,7 +338,13 @@
 +
  DWORD getInterfaceStatsByName(const char *name, PMIB_IFROW entry)
  {
-+#if defined(HAVE_KSTAT)
+ #if defined(HAVE_SYS_SYSCTL_H) && defined(NET_RT_IFLIST)
+@@ -178,7 +395,73 @@
+       }
+       HeapFree (GetProcessHeap (), 0, buf);
+       return ERROR_NOT_SUPPORTED;
+-#else
++#elif defined(HAVE_KSTAT)
 +  static const struct kstat_mib_map ifrow_map[] =
 +  {
 +    { "rbytes", offsetof(MIB_IFROW, dwInOctets) },
@@ -352,20 +356,14 @@
 +    { "oerrors", offsetof(MIB_IFROW, dwOutErrors) },
 +    { NULL, 0 },
 +  };
++
 +  kstat_ctl_t *kc;
 +  kstat_t *ksp, *mac_ksp;
 +  kstat_named_t *knp;
-+#elif defined(__linux__)
-   FILE *fp;
-+#endif
- 
-   if (!name)
-     return ERROR_INVALID_PARAMETER;
-@@ -109,6 +343,48 @@
-   if (!entry)
-     return ERROR_INVALID_PARAMETER;
- 
-+#if defined(HAVE_KSTAT)
++
++  if (!name || !entry)
++    return ERROR_INVALID_PARAMETER;
++
 +  /* get interface stats from driver or mac module
 +     no outQLen */
 +  kc = kstat_open();
@@ -406,27 +404,22 @@
 +    kstat_close(kc);
 +  }
 +  else
++  {
++    kstat_close(kc);
++    return ERROR_NOT_SUPPORTED;
++  }
++
++  return NO_ERROR;
 +#elif defined(__linux__)
    /* get interface stats from /proc/net/dev, no error if can't
       no inUnknownProtos, outNUcastPkts, outQLen */
-   fp = fopen("/proc/net/dev", "r");
-@@ -182,7 +458,11 @@
-     fclose(fp);
-   }
-   else
-+#endif
-   {
-+#ifdef HAVE_KSTAT
-+     kstat_close(kc);
-+#endif
-      ERR ("unimplemented!\n");
-      return ERROR_NOT_SUPPORTED;
-   }
-@@ -192,12 +472,64 @@
+   FILE *fp;
+@@ -325,7 +608,68 @@
+   stats->stats.icmpOutStats.dwAddrMaskReps = icmp_stat.icps_outhist[ICMP_MASKREPLY];
  
- DWORD getICMPStats(MIB_ICMP *stats)
- {
-+#if defined(HAVE_KSTAT)
+   return NO_ERROR;
+-#else
++#elif defined(HAVE_KSTAT)
 +  static const struct kstat_mib_map icmp_map[] =
 +  {
 +    { "inMsgs", offsetof(MIB_ICMP, stats.icmpInStats.dwMsgs) },
@@ -457,19 +450,17 @@
 +    { "outAddrMaskReps", offsetof(MIB_ICMP, stats.icmpOutStats.dwAddrMaskReps) },
 +    { NULL, 0 }
 +  };
++
 +  kstat_ctl_t *kc;
 +  kstat_t *ksp;
 +  kstat_named_t *knp;
 +  int i;
-+#elif defined(__linux__)
-   FILE *fp;
-+#endif
- 
-   if (!stats)
-     return ERROR_INVALID_PARAMETER;
- 
-   memset(stats, 0, sizeof(MIB_ICMP));
-+#if defined(HAVE_KSTAT)
++
++  if (!stats)
++    return ERROR_INVALID_PARAMETER;
++  
++  memset(stats, 0, sizeof(MIB_ICMP));
++
 +  kc = kstat_open();
 +  ksp = kstat_lookup(kc, (char *)"ip", 0, (char *)"icmp");
 +  if (ksp)
@@ -483,27 +474,22 @@
 +    kstat_close(kc);
 +  }
 +  else
++  {
++    kstat_close(kc);
++    return ERROR_NOT_SUPPORTED;
++  }
++
++  return NO_ERROR;
 +#elif defined(__linux__)
-   /* get most of these stats from /proc/net/snmp, no error if can't */
-   fp = fopen("/proc/net/snmp", "r");
-   if (fp) {
-@@ -315,7 +647,11 @@
-     fclose(fp);
-   }
-   else
-+#endif
-   {
-+#ifdef HAVE_KSTAT
-+     kstat_close(kc);
-+#endif
-      ERR ("unimplemented!\n");
-      return ERROR_NOT_SUPPORTED;
-   }
-@@ -325,7 +661,38 @@
+   FILE *fp;
  
- DWORD getIPStats(PMIB_IPSTATS stats)
- {
-+#if defined(HAVE_KSTAT)
+   if (!stats)
+@@ -510,7 +854,62 @@
+   stats->dwReasmReqds = ip_stat.ips_fragments;
+ 
+   return NO_ERROR;
+-#else
++#elif defined(HAVE_KSTAT)
 +  static const struct kstat_mib_map ipstats_map[] =
 +  {
 +    { "forwarding", offsetof(MIB_IPSTATS, dwForwarding) },
@@ -528,21 +514,17 @@
 +    { "fragCreates", offsetof(MIB_IPSTATS, dwFragCreates) },
 +    { NULL, 0 }
 +  };
++
 +  kstat_ctl_t *kc;
 +  kstat_t *ksp;
 +  kstat_named_t *knp;
 +  int i;
-+#elif defined(__linux__)
-   FILE *fp;
-+#endif
- 
-   if (!stats)
-     return ERROR_INVALID_PARAMETER;
-@@ -334,6 +701,21 @@
-   stats->dwNumIf = stats->dwNumAddr = getNumInterfaces();
-   stats->dwNumRoutes = getNumRoutes();
- 
-+#if defined(HAVE_KSTAT)
++
++  if (!stats)
++    return ERROR_INVALID_PARAMETER;
++
++  memset(stats, 0, sizeof(MIB_IPSTATS));
++
 +  kc = kstat_open();
 +  ksp = kstat_lookup(kc, (char *)"ip", 0, (char *)"ip");
 +  if (ksp)
@@ -556,27 +538,22 @@
 +    kstat_close(kc);
 +  }
 +  else
++  {
++    kstat_close(kc);
++    return ERROR_NOT_SUPPORTED;
++  }
++
++  return NO_ERROR;
 +#elif defined(__linux__)
-   /* get most of these stats from /proc/net/snmp, no error if can't */
-   fp = fopen("/proc/net/snmp", "r");
-   if (fp) {
-@@ -432,7 +814,11 @@
-     fclose(fp);
-   }
-   else
-+#endif
-   {
-+#ifdef HAVE_KSTAT
-+     kstat_close(kc);
-+#endif
-      ERR ("unimplemented!\n");
-      return ERROR_NOT_SUPPORTED;
-   }
-@@ -442,7 +828,32 @@
+   FILE *fp;
+ 
+   if (!stats)
+@@ -668,7 +1067,55 @@
  
- DWORD getTCPStats(MIB_TCPSTATS *stats)
- {
-+#if defined(HAVE_KSTAT)
+   return NO_ERROR;
+ 
+-#else
++#elif defined(HAVE_KSTAT)
 +  static const struct kstat_mib_map tcpstats_map[] =
 +  {
 +    { "rtoAlgorithm", offsetof(MIB_TCPSTATS, dwRtoAlgorithm) },
@@ -599,17 +576,12 @@
 +  kstat_t *ksp;
 +  kstat_named_t *knp;
 +  int i;
-+#elif defined(__linux__)
-   FILE *fp;
-+#endif
- 
-   if (!stats)
-     return ERROR_INVALID_PARAMETER;
-@@ -449,6 +860,21 @@
- 
-   memset(stats, 0, sizeof(MIB_TCPSTATS));
- 
-+#if defined(HAVE_KSTAT)
++
++  if (!stats)
++    return ERROR_INVALID_PARAMETER;
++
++  memset(stats, 0, sizeof(MIB_TCPSTATS));
++
 +  kc = kstat_open();
 +  ksp = kstat_lookup(kc, (char *)"tcp", 0, (char *)"tcp");
 +  if (ksp)
@@ -623,41 +595,31 @@
 +    kstat_close(kc);
 +  }
 +  else
++  {
++    kstat_close(kc);
++    return ERROR_NOT_SUPPORTED;
++  }
++
++  return NO_ERROR;
 +#elif defined(__linux__)
-   /* get from /proc/net/snmp, no error if can't */
-   fp = fopen("/proc/net/snmp", "r");
-   if (fp) {
-@@ -528,7 +954,11 @@
-     fclose(fp);
-   }
-   else
-+#endif
-   {
-+#ifdef HAVE_KSTAT
-+     kstat_close(kc);
-+#endif
-      ERR ("unimplemented!\n");
-      return ERROR_NOT_SUPPORTED;
-   }
-@@ -538,7 +968,13 @@
+   FILE *fp;
  
- DWORD getUDPStats(MIB_UDPSTATS *stats)
- {
-+#if defined(HAVE_KSTAT)
+   if (!stats)
+@@ -789,7 +1236,37 @@
+   stats->dwNumAddrs = getNumUdpEntries();
+ 
+   return NO_ERROR;
+-#else
++#elif defined(HAVE_KSTAT)
 +  kstat_ctl_t *kc;
 +  kstat_t *ksp;
 +  kstat_named_t *knp;
-+#elif defined(__linux__)
-   FILE *fp;
-+#endif
- 
-   if (!stats)
-     return ERROR_INVALID_PARAMETER;
-@@ -545,6 +981,22 @@
- 
-   memset(stats, 0, sizeof(MIB_UDPSTATS));
- 
-+#if defined(HAVE_KSTAT)
++
++  if (!stats)
++    return ERROR_INVALID_PARAMETER;
++
++  memset(stats, 0, sizeof(MIB_UDPSTATS));
++
 +  kc = kstat_open();
 +  ksp = kstat_lookup(kc, (char *)"udp", 0, (char *)"udp");
 +  if (ksp)
@@ -672,31 +634,25 @@
 +    kstat_close(kc);
 +  }
 +  else
++  {
++    kstat_close(kc);
++    return ERROR_NOT_SUPPORTED;
++  }
++
++  return NO_ERROR;
 +#elif defined(__linux__)
-   /* get from /proc/net/snmp, no error if can't */
-   fp = fopen("/proc/net/snmp", "r");
-   if (fp) {
-@@ -587,7 +1039,11 @@
-     fclose(fp);
-   }
-   else
-+#endif
-   {
-+#ifdef HAVE_KSTAT
-+     kstat_close(kc);
-+#endif
-      ERR ("unimplemented!\n");
-      return ERROR_NOT_SUPPORTED;
-   }
-@@ -595,6 +1051,7 @@
-   return NO_ERROR;
+   FILE *fp;
+ 
+   if (!stats)
+@@ -848,6 +1325,7 @@
+ #endif
  }
  
 +#if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H) || defined(__linux__)
  static DWORD getNumWithOneHeader(const char *filename)
  {
  #if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H)
-@@ -715,6 +1172,7 @@
+@@ -968,6 +1446,7 @@
    return ret;
  #endif
  }
@@ -704,7 +660,7 @@
  
  DWORD getNumRoutes(void)
  {
-@@ -763,8 +1221,46 @@
+@@ -1016,8 +1495,46 @@
  
     HeapFree (GetProcessHeap (), 0, buf);
     return RouteCount;
@@ -752,7 +708,7 @@
  #endif
  }
  
-@@ -793,7 +1289,7 @@
+@@ -1046,21 +1563,21 @@
         if (sysctl (mib, 6, NULL, &needed, NULL, 0) < 0)
         {
            ERR ("sysctl 1 failed!\n");
@@ -761,7 +717,6 @@
            return NO_ERROR;
         }
  
-@@ -800,7 +1296,7 @@
         buf = HeapAlloc (GetProcessHeap (), 0, needed);
         if (!buf)
         {
@@ -770,7 +725,6 @@
            return ERROR_OUTOFMEMORY;
         }
  
-@@ -807,7 +1303,7 @@
         if (sysctl (mib, 6, buf, &needed, NULL, 0) < 0)
         {
            ERR ("sysctl 2 failed!\n");
@@ -779,7 +733,7 @@
            HeapFree (GetProcessHeap (), 0, buf);
            return NO_ERROR;
         }
-@@ -898,7 +1394,76 @@
+@@ -1151,7 +1668,76 @@
  
         HeapFree (GetProcessHeap (), 0, buf);
         ret = NO_ERROR;
@@ -857,7 +811,7 @@
        FILE *fp;
  
        ret = NO_ERROR;
-@@ -983,6 +1548,9 @@
+@@ -1236,6 +1822,9 @@
          ERR ("unimplemented!\n");
          return ERROR_NOT_SUPPORTED;
        }
@@ -867,11 +821,12 @@
  #endif
      }
      else
-@@ -993,7 +1561,41 @@
- 
- DWORD getNumArpEntries(void)
- {
-+#ifdef HAVE_STREAMS_TPI
+@@ -1285,8 +1874,42 @@
+   }
+   HeapFree (GetProcessHeap (), 0, buf);
+   return arpEntries;
+-#endif
++#elif defined(HAVE_STREAMS_TPI)
 +   DWORD ArpCount = 0;
 +   int sd;
 +   mib_item_t *head, *item;
@@ -904,37 +859,25 @@
 +#elif defined(__linux__)
    return getNumWithOneHeader("/proc/net/arp");
 +#else
-+  return 0;
++  ERR ("unimplemented!\n");
++  return ERROR_NOT_SUPPORTED;
 +#endif
  }
  
  DWORD getArpTable(PMIB_IPNETTABLE *ppIpNetTable, HANDLE heap, DWORD flags)
-@@ -1000,11 +1602,87 @@
- {
-   DWORD ret;
- 
--#if defined(HAVE_SYS_SYSCTL_H) && defined(NET_RT_DUMP)
--  ERR ("unimplemented!\n");
--  return ERROR_NOT_SUPPORTED;
+@@ -1368,8 +1991,76 @@
+     else
+         ret = ERROR_OUTOFMEMORY;
+   return ret;
 -#endif
-+#ifdef HAVE_STREAMS_TPI
-+  if (!ppIpNetTable)
-+    ret = ERROR_INVALID_PARAMETER;
-+  else {
-+    DWORD numEntries = getNumArpEntries();
-+    DWORD size = sizeof(MIB_IPNETTABLE);
-+    PMIB_IPNETTABLE table;
- 
-+    if (numEntries > 1)
-+      size += (numEntries - 1) * sizeof(MIB_IPNETROW);
-+    table = HeapAlloc(heap, flags, size);
++#elif defined(HAVE_STREAMS_TPI)
 +    if (table)
 +    {
 +      DWORD ArpCount = 0;
 +      int sd;
 +      mib_item_t *head, *item;
 +      mib2_ipNetToMediaEntry_t *np;
-+
+ 
 +      if ((sd = mibopen()) < 0)
 +      {
 +        ERR ("Unable to open %s to count ARP entries!\n", mib_dev);
@@ -997,11 +940,10 @@
 +  }
 +  return ret;
 +#elif defined(__linux__)
-+
-   if (!ppIpNetTable)
-     ret = ERROR_INVALID_PARAMETER;
-   else {
-@@ -1092,11 +1770,53 @@
+     if (table) {
+       FILE *fp;
+       *ppIpNetTable = table;
+@@ -1445,14 +2136,52 @@
        ret = ERROR_OUTOFMEMORY;
    }
    return ret;
@@ -1013,9 +955,9 @@
  
  DWORD getNumUdpEntries(void)
  {
--  return getNumWithOneHeader("/proc/net/udp");
-+#if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H)
-+   return getNumWithOneHeader ("net.inet.udp.pcblist");
+ #if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H)
+    return getNumWithOneHeader ("net.inet.udp.pcblist");
+-#else
 +#elif defined(HAVE_STREAMS_TPI)
 +   DWORD UdpCount = 0;
 +   int sd;
@@ -1049,14 +991,13 @@
 +   close(sd);
 +   return UdpCount;
 +#elif defined(__linux__)
-+   return getNumWithOneHeader("/proc/net/udp");
+   return getNumWithOneHeader("/proc/net/udp");
 +#else
-+   return 0;
-+#endif
++  return 0;
+ #endif
  }
  
- DWORD getUdpTable(PMIB_UDPTABLE *ppUdpTable, HANDLE heap, DWORD flags)
-@@ -1103,11 +1823,71 @@
+@@ -1460,10 +2189,70 @@
  {
    DWORD ret;
  
@@ -1071,7 +1012,7 @@
 +    DWORD numEntries = getNumUdpEntries();
 +    DWORD size = sizeof(MIB_UDPTABLE);
 +    PMIB_UDPTABLE table;
- 
++
 +    if (numEntries > 1)
 +      size += (numEntries - 1) * sizeof(MIB_IPNETROW);
 +    table = HeapAlloc(heap, flags, size);
@@ -1128,11 +1069,10 @@
 +  }
 +  return ret;
 +#elif defined(__linux__)
-+
+ 
    if (!ppUdpTable)
      ret = ERROR_INVALID_PARAMETER;
-   else {
-@@ -1165,6 +1945,10 @@
+@@ -1522,6 +2311,10 @@
        ret = ERROR_OUTOFMEMORY;
    }
    return ret;
@@ -1143,7 +1083,7 @@
  }
  
  
-@@ -1172,8 +1956,41 @@
+@@ -1529,14 +2322,48 @@
  {
  #if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_NETINET_IN_PCB_H)
     return getNumWithOneHeader ("net.inet.tcp.pcblist");
@@ -1186,7 +1126,6 @@
  #endif
  }
  
-@@ -1180,6 +1997,7 @@
  
  /* Why not a lookup table? Because the TCPS_* constants are different
     on different platforms */
@@ -1194,7 +1133,7 @@
  static DWORD TCPStateToMIBState (int state)
  {
     switch (state)
-@@ -1198,6 +2016,7 @@
+@@ -1555,6 +2382,7 @@
        case TCPS_CLOSED: return MIB_TCP_STATE_CLOSED;
     }
  }
@@ -1202,7 +1141,7 @@
  
  
  DWORD getTcpTable(PMIB_TCPTABLE *ppTcpTable, DWORD maxEntries, HANDLE heap,
-@@ -1209,7 +2028,12 @@
+@@ -1566,7 +2394,12 @@
     size_t Len = 0;
     char *Buf;
     struct xinpgen *pXIG, *pOrigXIG;
@@ -1216,7 +1155,7 @@
     FILE *fp;
     char buf[512] = { 0 }, *ptr;
  #endif
-@@ -1320,7 +2144,47 @@
+@@ -1677,7 +2510,47 @@
     }
  
     HeapFree (GetProcessHeap (), 0, Buf);
@@ -1265,7 +1204,7 @@
     /* get from /proc/net/tcp, no error if can't */
     fp = fopen("/proc/net/tcp", "r");
     if (!fp)
-@@ -1371,6 +2235,9 @@
+@@ -1728,6 +2601,9 @@
        }
     }
     fclose(fp);
--- a/patches/winetricks-01-sh.diff	Sun Jul 06 07:38:13 2008 +0000
+++ b/patches/winetricks-01-sh.diff	Wed Jul 09 04:12:07 2008 +0000
@@ -1,6 +1,6 @@
---- blah/winetricks.orig	2008-06-17 14:59:41.706757206 -0400
-+++ blah/winetricks	2008-06-17 15:00:48.104439734 -0400
-@@ -48,13 +48,13 @@
+--- wine-1.1.0/winetricks.orig	2008-07-08 23:44:33.427595183 -0400
++++ wine-1.1.0/winetricks	2008-07-08 23:45:21.040336336 -0400
+@@ -47,7 +47,7 @@
  }
  
  which "$WINE" > /dev/null
@@ -9,14 +9,7 @@
  then
    die "Cannot find wine ($WINE)"
  fi
- 
- which "$WINEPREFIXCREATE" > /dev/null
--if test "$?" -ne "0"
-+if [ "$?" -ne "0" ]
- then
-   die "Cannot find wineprefixcreate ($WINEPREFIXCREATE)"
- fi
-@@ -173,7 +173,7 @@
+@@ -167,7 +167,7 @@
      shift
      col2name="$1"
      shift
@@ -25,7 +18,7 @@
      do
          args="$args $1 $1 off"
          shift
-@@ -190,12 +190,12 @@
+@@ -184,12 +184,12 @@
      shift
      col2name="$1"
      shift
@@ -40,7 +33,7 @@
      do
          args="$args,$1"
          shift
-@@ -225,10 +225,11 @@
+@@ -219,10 +219,11 @@
      export todo="`sh $WINETRICKS_TMP/zenity.sh | tr '|' ' '`"
    else
      packages=`usage | awk '/^ [a-z]/ {print $1}'`
@@ -54,7 +47,7 @@
    then
       exit 0
    fi
-@@ -252,7 +253,7 @@
+@@ -246,7 +247,7 @@
  programfilesdir_unix=`$WINE winepath -u "$programfilesdir_win"`
  
  # Did the user rename Fonts to fonts?
@@ -63,7 +56,7 @@
  then
      winefontsdir="$WINEPREFIX"/drive_c/windows/fonts
  else
-@@ -268,7 +269,7 @@
+@@ -262,7 +263,7 @@
  fi
  
  which cabextract > /dev/null
@@ -72,7 +65,7 @@
  then
    echo "Cannot find cabextract.  Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')."
  fi
-@@ -284,7 +285,7 @@
+@@ -278,7 +279,7 @@
      echo Executing "$@"
      "$@"
      status=$?
@@ -81,7 +74,7 @@
      then
          die "Note: command '$@' returned status $status.  Aborting."
      fi
-@@ -314,7 +315,7 @@
+@@ -308,7 +309,7 @@
      fi
      cache="$WINETRICKS_CACHE/$1"
      mkdir -p "$cache"
@@ -90,7 +83,7 @@
      then
          cd "$cache"
          # Mac folks tend to have curl rather than wget
-@@ -376,7 +377,7 @@
+@@ -370,7 +371,7 @@
  
  [HKEY_CURRENT_USER\Software\Wine\DllOverrides]
  _EOF_
@@ -99,7 +92,7 @@
      do
          case "$1" in
          comctl32)
-@@ -403,7 +404,7 @@
+@@ -397,7 +398,7 @@
      echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$app\\DllOverrides]" 
      ) > "$WINETRICKS_TMP"/override-dll.reg 
  
@@ -108,7 +101,7 @@
      do
          case "$1" in
          comctl32)
-@@ -754,7 +755,7 @@
+@@ -762,7 +763,7 @@
      # some versions of ukai.ttf and uming.ttf crash .net and picasa
      # See http://bugs.winehq.org/show_bug.cgi?id=7098#c9
      # Could fix globally, but that needs root, so just fix for wine
@@ -117,7 +110,7 @@
      then
          gotsum=`$SHA1SUM < /usr/share/fonts/truetype/arphic/ukai.ttf | sed 's/ .*//'`
          # FIXME: do all affected versions of the font have same sha1sum as Gutsy?  Seems unlikely.
-@@ -768,7 +769,7 @@
+@@ -776,7 +777,7 @@
          fi
      fi
  
@@ -126,7 +119,7 @@
      then
          gotsum=`$SHA1SUM < /usr/share/fonts/truetype/arphic/uming.ttf | sed 's/ .*//'`
          if [ "$gotsum"x = "2a4f4a69e343c21c24d044b2cb19fd4f0decc82c"x ]
-@@ -793,7 +794,7 @@
+@@ -801,7 +802,7 @@
      # so we're adding a maintenance burden here.)
      GECKO_VERSION=0.1.0
  
@@ -135,16 +128,7 @@
      then
         # FIXME: busted if using curl!
         download . "http://source.winehq.org/winegecko.php?v=$GECKO_VERSION" c16f1072dc6b0ced20935662138dcf019a38cd56 wine_gecko-$GECKO_VERSION.cab
-@@ -973,7 +974,7 @@
- load_msls31() {
-     # Install native Microsoft Line Services (needed by e-Sword, possibly only when using native riched20)
-     # http://www.microsoft.com/reader/downloads/pc.mspx
--    if ! test -f "$programfilesdir_unix/Microsoft Reader"/msls31.dll
-+    if [ ! -f "$programfilesdir_unix/Microsoft Reader"/msls31.dll ]
-     then
-         echo "Installing Microsoft Reader (which includes a copy of msls31.dll)"
-         download . http://download.microsoft.com/download/d/0/9/d099ad62-41d1-4e92-9935-67955a437460/MSReaderSetupUSA.exe 055af1f589e2ae9896f17dbf33d8a3f156d10282
-@@ -999,13 +1000,13 @@
+@@ -1001,13 +1002,13 @@
  
  load_msxml4() {
      # http://www.microsoft.com/downloads/details.aspx?familyid=24B7D141-6CDF-4FC4-A91B-6F18FE6921D4
@@ -160,7 +144,7 @@
         then
            die msxml.msi not found
         fi
-@@ -1039,14 +1040,14 @@
+@@ -1041,14 +1042,14 @@
      # http://www.apple.com/support/downloads/quicktime72forwindows.html
      download quicktime72 'http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=14402&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe' bb89981f10cf21de57b9453e53cf81b9194271a9
      unset QUICKTIME_QUIET
@@ -177,7 +161,7 @@
      then
          echo "You probably want to select Advanced / Safe Mode in the Quicktime control panel"
          try $WINE control ${programfilesdir_win}'\QuickTime\QTSystem\QuickTime.cpl'
-@@ -1073,7 +1074,7 @@
+@@ -1075,7 +1076,7 @@
      # You may be able to work around this by using the installer's /x or /extract switch,
      # but renaming drive_c to "harddiskvolume0" lets you just run the installer as normal.
  
@@ -186,7 +170,7 @@
      then
  	ln -s drive_c "$WINEPREFIX"/harddiskvolume0
  	rm "$WINEPREFIX"/dosdevices/c:
-@@ -1167,19 +1168,19 @@
+@@ -1169,19 +1170,19 @@
  
  load_vcrun6() {
      # Load the Visual C++ 6 runtime libraries, including the elusive mfc42u.dll
@@ -209,7 +193,7 @@
         then
            die vcredist.exe not found
         fi
-@@ -1347,7 +1348,7 @@
+@@ -1358,7 +1359,7 @@
  #----------------------------------------------------------------