Revbump with patch for bug #109744
authorGustavo Zacarias <gustavoz@gentoo.org>
Tue, 22 Nov 2005 17:25:00 +0000 (17:25 +0000)
committerGustavo Zacarias <gustavoz@gentoo.org>
Tue, 22 Nov 2005 17:25:00 +0000 (17:25 +0000)
Package-Manager: portage-2.0.53_rc7

net-irc/xchat/ChangeLog
net-irc/xchat/Manifest
net-irc/xchat/files/44_fix_alignment_endianess.dpatch [new file with mode: 0644]
net-irc/xchat/files/digest-xchat-2.4.5-r1 [new file with mode: 0644]
net-irc/xchat/xchat-2.4.5-r1.ebuild [new file with mode: 0644]

index e93359141dcb65a118b41640e2d79c87b32f44ee..1a1af6b84c57b7a48a6f5c85df18aa6ee007c73f 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for net-irc/xchat
 # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-irc/xchat/ChangeLog,v 1.182 2005/11/16 18:18:42 gustavoz Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-irc/xchat/ChangeLog,v 1.183 2005/11/22 17:25:00 gustavoz Exp $
+
+*xchat-2.4.5-r1 (22 Nov 2005)
+
+  22 Nov 2005; Gustavo Zacarias <gustavoz@gentoo.org>
+  +files/44_fix_alignment_endianess.dpatch, +xchat-2.4.5-r1.ebuild:
+  Revbump with patch for bug #109744
 
   16 Nov 2005; Gustavo Zacarias <gustavoz@gentoo.org> xchat-2.4.5.ebuild:
   -sparc wrt #109744
index 95910c75cc784a478d42855e88b93b296471ccff..82e7c1ce7cfc1da7df8e0af37190944baab6121c 100644 (file)
@@ -1,25 +1,28 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-MD5 f70fee92ab2e258ea7be208d0ddfa4b6 xchat-2.4.3.ebuild 2266
-MD5 35173b2dddf35bc467c4aa72d784a741 xchat-2.4.5.ebuild 2301
-MD5 4634f562e01b219d3bcfb0ae6acb8397 xchat-1.8.11-r1.ebuild 2264
-MD5 9f17701ead780ffcd7c34dc23b28e13b ChangeLog 27172
-MD5 fb5772136a872c08434566d4f0bcdc7f metadata.xml 179
-MD5 95d53db19acfbc8d85a8ac0c8d695133 xchat-2.6.0.ebuild 2261
+MD5 1b1f9b3d26d01239a54afc3c55060044 ChangeLog 27363
+MD5 6354e2efb6f0d1323ad8849be7303575 files/44_fix_alignment_endianess.dpatch 8676
+MD5 e2b99b2d2dfc54ba96e560c0ed8392df files/digest-xchat-1.8.11-r1 65
 MD5 21bc6820aa6d0c8722509a74c7fccb3d files/digest-xchat-2.4.3 134
 MD5 c5d53c24b3ebfec1f168930213f55fea files/digest-xchat-2.4.5 65
+MD5 c5d53c24b3ebfec1f168930213f55fea files/digest-xchat-2.4.5-r1 65
 MD5 02c31b272038e119a3ce2d4a79897f72 files/digest-xchat-2.6.0 64
 MD5 a8f607d224408d4a27777d2ffce8beac files/xc1811fixststint.diff 422
+MD5 31de685eff3d16d9466416434c9fd6c3 files/xc208-fixsocks5.diff 688
 MD5 17073299c8c2c65062ad2e77cd03b841 files/xc245-fix-te-notify.diff 403
 MD5 6bfc06df4986a7fb482525e1dfd8fa21 files/xc260-fix-fetext.diff 1123
-MD5 31de685eff3d16d9466416434c9fd6c3 files/xc208-fixsocks5.diff 688
 MD5 ee98eba7f1061680d8d0582a10d72cb7 files/xchat-dccserver-0.5.patch 11776
-MD5 e2b99b2d2dfc54ba96e560c0ed8392df files/digest-xchat-1.8.11-r1 65
+MD5 fb5772136a872c08434566d4f0bcdc7f metadata.xml 179
+MD5 4634f562e01b219d3bcfb0ae6acb8397 xchat-1.8.11-r1.ebuild 2264
+MD5 f70fee92ab2e258ea7be208d0ddfa4b6 xchat-2.4.3.ebuild 2266
+MD5 c10195648896ac34737461914cc96a6e xchat-2.4.5-r1.ebuild 2366
+MD5 35173b2dddf35bc467c4aa72d784a741 xchat-2.4.5.ebuild 2301
+MD5 95d53db19acfbc8d85a8ac0c8d695133 xchat-2.6.0.ebuild 2261
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.1 (GNU/Linux)
 
-iD8DBQFDe3gTKRy60XGEcJIRAvc1AJ0SXqgZTn+R6wB2DGbYdY6eyFmm+gCdF7cH
-jMwXRd+P2nP9CeiCEgT4biU=
-=E/T3
+iD8DBQFDg1SfKRy60XGEcJIRAlOQAJ9T5W+jf96hjVLQj9diTNjdPEYRlQCggcsm
+UfgAoXvWEuzqYiXv0L+r7P4=
+=1W7H
 -----END PGP SIGNATURE-----
diff --git a/net-irc/xchat/files/44_fix_alignment_endianess.dpatch b/net-irc/xchat/files/44_fix_alignment_endianess.dpatch
new file mode 100644 (file)
index 0000000..4e2b377
--- /dev/null
@@ -0,0 +1,319 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 44_fix_alignment_endianess.dpatch by evo
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixed alignment and Endianess issues, doesn't affect x86.
+
+@DPATCH@
+diff -Naur xchat-2.4.5uno/src/common/outbound.c xchat-2.4.5/src/common/outbound.c
+--- xchat-2.4.5uno/src/common/outbound.c       2005-10-01 12:32:53.000000000 +0200
++++ xchat-2.4.5/src/common/outbound.c  2005-09-30 21:52:42.000000000 +0200
+@@ -1498,7 +1498,7 @@
+                                       k = 0;
+                               } else
+                               {
+-                                      if (isdigit (buf[i]) && k < (sizeof (numb) - 1))
++                                      if (isdigit ((unsigned char) buf[i]) && k < (sizeof (numb) - 1))
+                                       {
+                                               numb[k] = buf[i];
+                                               k++;
+@@ -1899,7 +1899,7 @@
+       p = name;
+       while (*p)
+       {
+-              hl->buf[len] = toupper (*p);
++              hl->buf[len] = toupper ((unsigned char) *p);
+               len++;
+               p++;
+       }
+@@ -2136,7 +2136,7 @@
+ 
+               user = find_name (sess, nick);
+ 
+-              if (isdigit (reason[0]) && reason[1] == 0)
++              if (isdigit ((unsigned char) reason[0]) && reason[1] == 0)
+               {
+                       ban (sess, tbuf, nick, reason, (user && user->op));
+                       reason[0] = 0;
+@@ -3287,9 +3287,9 @@
+       {
+               if (src[0] == '%' || src[0] == '&')
+               {
+-                      if (isdigit (src[1]))
++                      if (isdigit ((unsigned char) src[1]))
+                       {
+-                              if (isdigit (src[2]) && isdigit (src[3]))
++                              if (isdigit ((unsigned char) src[2]) && isdigit ((unsigned char) src[3]))
+                               {
+                                       buf[0] = src[1];
+                                       buf[1] = src[2];
+@@ -3442,8 +3442,8 @@
+                               occur++;
+                               if (    do_ascii &&
+                                               j + 3 < len &&
+-                                              (isdigit (cmd[j + 1]) && isdigit (cmd[j + 2]) &&
+-                                              isdigit (cmd[j + 3])))
++                                              (isdigit ((unsigned char) cmd[j + 1]) && isdigit ((unsigned char) cmd[j + 2]) &&
++                                              isdigit ((unsigned char) cmd[j + 3])))
+                               {
+                                       tbuf[0] = cmd[j + 1];
+                                       tbuf[1] = cmd[j + 2];
+diff -Naur xchat-2.4.5uno/src/common/proto-irc.c xchat-2.4.5/src/common/proto-irc.c
+--- xchat-2.4.5uno/src/common/proto-irc.c      2005-10-01 12:32:53.000000000 +0200
++++ xchat-2.4.5/src/common/proto-irc.c 2005-09-30 22:31:11.000000000 +0200
+@@ -761,8 +761,12 @@
+ 
+       if (len == 4)
+       {
++              guint32 t;
++       
++              t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2],
++ (guint8)type[3]);
+               /* this should compile to a bunch of: CMP.L, JE ... nice & fast */
+-              switch (*((guint32 *)type))
++              switch (t)
+               {
+               case WORDL('J','O','I','N'):
+                       {
+@@ -838,8 +842,12 @@
+ 
+       else if (len >= 5)
+       {
++              guint32 t;
++       
++              t = WORDL((guint8)type[0], (guint8)type[1], (guint8)type[2],
++ (guint8)type[3]);
+               /* this should compile to a bunch of: CMP.L, JE ... nice & fast */
+-              switch (*((guint32 *)type))
++              switch (t)
+               {
+               case WORDL('I','N','V','I'):
+                       if (ignore_check (word[1], IG_INVI))
+@@ -1022,7 +1030,7 @@
+       }
+ 
+       /* see if the second word is a numeric */
+-      if (isdigit (word[2][0]))
++      if (isdigit ((unsigned char) word[2][0]))
+       {
+               text = word_eol[4];
+               if (*text == ':')
+diff -Naur xchat-2.4.5uno/src/common/url.c xchat-2.4.5/src/common/url.c
+--- xchat-2.4.5uno/src/common/url.c    2005-10-01 12:32:53.000000000 +0200
++++ xchat-2.4.5/src/common/url.c       2005-10-01 12:26:33.000000000 +0200
+@@ -124,65 +124,60 @@
+ int
+ url_check_word (char *word, int len)
+ {
+-      char *at, *dot;
++#define D(x) (x), ((sizeof (x)) - 1)
++      static const struct {
++              const char *s;
++              int len;
++      }
++      prefix[] = {
++              { D("irc.") },
++              { D("ftp.") },
++              { D("www.") },
++              { D("irc://") },
++              { D("ftp://") },
++              { D("http://") },
++              { D("https://") },
++              { D("file://") },
++              { D("rtsp://") },
++              { D("gopher://") },
++      },
++      suffix[] = {
++              { D(".org") },
++              { D(".net") },
++              { D(".com") },
++              { D(".edu") },
++              { D(".html") },
++              { D(".info") },
++              { D(".name") },
++      };
++#undef D
++      const char *at, *dot;
+       int i, dots;
+-      char temp[4];
+-      guint32 pre;
+ 
+-      if ((word[0] == '@' || word[0] == '+' || word[0] == '^' || word[0] == '%' || word[0] == '*' ) && word[1] == '#')
++      if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0]))
+               return WORD_CHANNEL;
+ 
+       if ((word[0] == '#' || word[0] == '&') && word[1] != '#' && word[1] != 0)
+               return WORD_CHANNEL;
+ 
+-      if (len > 4 && word[4] != '.')
++      for (i = 0; i < G_N_ELEMENTS(prefix); i++)
+       {
+-              temp[0] = tolower (word[0]);
+-              temp[1] = tolower (word[1]);
+-              temp[2] = tolower (word[2]);
+-              temp[3] = tolower (word[3]);
+-
+-              pre = *((guint32 *)temp);
+-
+-              if (CMPL (pre, 'i','r','c','.'))
+-                      return WORD_URL;
+-              if (CMPL (pre, 'f','t','p','.'))
+-                      return WORD_URL;
+-              if (CMPL (pre, 'w','w','w','.'))
+-                      return WORD_URL;
++              int l;
+ 
+-              if (len > 7 && word[4] == '/' && word[5] == '/')
++              l = prefix[i].len;
++              if (len > l)
+               {
+-                      if (CMPL (pre, 'i','r','c',':'))        /* irc:// */
+-                              return WORD_URL;
+-                      if (CMPL (pre, 'f','t','p',':'))        /* ftp:// */
+-                              return WORD_URL;
+-              }
++                      int j;
+ 
+-              /* check for ABCD://... */
+-              if (len > 8 && word[4] == ':' && word[5] == '/' && word[6] == '/')
+-              {
+-                      if (CMPL (pre, 'h','t','t','p'))                /* http:// */
+-                              return WORD_URL;
+-                      if (CMPL (pre, 'f','i','l','e'))                /* file:// */
+-                              return WORD_URL;
+-                      if (CMPL (pre, 'r','t','s','p'))                /* rtsp:// */
+-                              return WORD_URL;
+-              }
+-
+-              /* check for https:// */
+-              if (len > 9 && word[5] == ':' && word[6] == '/' && word[7] == '/')
+-              {
+-                      if (CMPL (pre, 'h','t','t','p') && (word[4] == 's' || word[4] == 'S'))
+-                              return WORD_URL;
+-              }
+-
+-              /* check for gopher:// */
+-              if (len > 10 && word[6] == ':' && word[7] == '/' && word[8] == '/')
+-              {
+-                      if (CMPL (pre, 'g','o','p','h'))
+-                              if (CMPW (word + 4, 'e','r') || CMPW (word + 4, 'E','R'))
+-                                      return WORD_URL;
++                      /* This is pretty much strncasecmp(). */
++                      for (j = 0; j < l; j++)
++                      {
++                              unsigned char c = word[j];
++                              if (tolower(c) != prefix[i].s[j])
++                                      break;
++                      }
++                      if (j == l)
++                              return WORD_URL;                
+               }
+       }
+ 
+@@ -205,7 +200,7 @@
+       {
+               if (word[i] == '.' && i > 1)
+                       dots++; /* allow 127.0.0.1:80 */
+-              else if (!isdigit (word[i]) && word[i] != ':')
++              else if (!isdigit ((unsigned char) word[i]) && word[i] != ':')
+               {
+                       dots = 0;
+                       break;
+@@ -216,35 +211,29 @@
+ 
+       if (len > 5)
+       {
+-              /* create a lowercase version of the last 4 letters */
+-              temp[0] = tolower (word[len - 4]);
+-              temp[1] = tolower (word[len - 3]);
+-              temp[2] = tolower (word[len - 2]);
+-              temp[3] = tolower (word[len - 1]);
++              for (i = 0; i < G_N_ELEMENTS(suffix); i++)
++              {
++                      int l;
+ 
+-              pre = *((guint32 *)temp);
++                      l = suffix[i].len;
++                      if (len > l)
++                      {
++                              const unsigned char *p = &word[len - l];
++                              int j;
+ 
+-              if (word[len - 5] == '.')
+-              {
+-                      if (CMPL (pre, 'h','t','m','l'))
+-                              return WORD_HOST;
+-                      if (CMPL (pre, 'i','n','f','o'))
+-                              return WORD_HOST;
+-                      if (CMPL (pre, 'n','a','m','e'))
+-                              return WORD_HOST;
++                              /* This is pretty much strncasecmp(). */
++                              for (j = 0; j < l; j++)
++                              {
++                                      if (tolower(p[j]) != suffix[i].s[j])
++                                              break;
++                              }
++                              if (j == l)                     
++                                      return WORD_HOST;
++                      }
+               }
+ 
+-              if (CMPL (pre, '.','o','r','g'))
+-                      return WORD_HOST;
+-              if (CMPL (pre, '.','n','e','t'))
+-                      return WORD_HOST;
+-              if (CMPL (pre, '.','c','o','m'))
+-                      return WORD_HOST;
+-              if (CMPL (pre, '.','e','d','u'))
+-                      return WORD_HOST;
+-
+               if (word[len - 3] == '.' &&
+-                       isalpha (word[len - 2]) && isalpha (word[len - 1]))
++                       isalpha ((unsigned char) word[len - 2]) && isalpha ((unsigned char) word[len - 1]))
+                       return WORD_HOST;
+       }
+ 
+diff -Naur xchat-2.4.5uno/src/common/util.c xchat-2.4.5/src/common/util.c
+--- xchat-2.4.5uno/src/common/util.c   2005-10-01 12:32:53.000000000 +0200
++++ xchat-2.4.5/src/common/util.c      2005-10-01 11:49:08.000000000 +0200
+@@ -435,8 +435,8 @@
+ 
+       while (len > 0)
+       {
+-              if ((col && isdigit (*text) && nc < 2) ||
+-                       (col && *text == ',' && isdigit (*(text+1)) && nc < 3))
++              if ((col && isdigit ((unsigned char) *text) && nc < 2) ||
++                       (col && *text == ',' && isdigit ((unsigned char) *(text+1)) && nc < 3))
+               {
+                       nc++;
+                       if (*text == ',')
+@@ -1084,7 +1084,7 @@
+       char *p;
+       domain_t *dom;
+ 
+-      if (!hostname || !*hostname || isdigit (hostname[strlen (hostname) - 1]))
++      if (!hostname || !*hostname || isdigit ((unsigned char) hostname[strlen (hostname) - 1]))
+               return _("Unknown");
+       if ((p = strrchr (hostname, '.')))
+               p++;
+@@ -1156,7 +1156,7 @@
+               if (*src != quote) *buf++ = '\\';
+           }
+           *buf++ = *src;
+-      } else if (isspace(*src)) {
++      } else if (isspace((unsigned char) *src)) {
+           if (*argv[argc]) {
+               buf++, argc++;
+               if (argc == argvAlloced) {
+diff -Naur xchat-2.4.5uno/src/fe-gtk/maingui.c xchat-2.4.5/src/fe-gtk/maingui.c
+--- xchat-2.4.5uno/src/fe-gtk/maingui.c        2005-10-01 12:32:53.000000000 +0200
++++ xchat-2.4.5/src/fe-gtk/maingui.c   2005-10-01 11:53:56.000000000 +0200
+@@ -1608,7 +1608,7 @@
+               return;
+ 
+       sess = current_sess;
+-      mode = tolower (flag[0]);
++      mode = tolower ((unsigned char) flag[0]);
+ 
+       switch (mode)
+       {
diff --git a/net-irc/xchat/files/digest-xchat-2.4.5-r1 b/net-irc/xchat/files/digest-xchat-2.4.5-r1
new file mode 100644 (file)
index 0000000..f968fef
--- /dev/null
@@ -0,0 +1 @@
+MD5 9107a92693e6c62ff2008030e698b92b xchat-2.4.5.tar.bz2 1324626
diff --git a/net-irc/xchat/xchat-2.4.5-r1.ebuild b/net-irc/xchat/xchat-2.4.5-r1.ebuild
new file mode 100644 (file)
index 0000000..a7f4b51
--- /dev/null
@@ -0,0 +1,87 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-irc/xchat/xchat-2.4.5-r1.ebuild,v 1.1 2005/11/22 17:25:00 gustavoz Exp $
+
+inherit flag-o-matic eutils versionator
+
+DESCRIPTION="Graphical IRC client"
+SRC_URI="http://www.xchat.org/files/source/$(get_version_component_range 1-2)/${P}.tar.bz2
+       mirror://sourceforge/${PN}/${P}.tar.bz2"
+HOMEPAGE="http://www.xchat.org/"
+
+LICENSE="GPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+IUSE="perl tcltk python ssl mmx ipv6 nls xchattext xchatnogtk xchatdccserver"
+
+# Added for to fix a sparc seg fault issue by Jason Wever <weeve@gentoo.org>
+if [ ${ARCH} = "sparc" ]
+then
+       replace-flags "-O[3-9]" "-O2"
+fi
+
+RDEPEND=">=dev-libs/glib-2.0.3
+       !xchatnogtk? ( >=x11-libs/gtk+-2.0.3 )
+       ssl? ( >=dev-libs/openssl-0.9.6d )
+       perl? ( >=dev-lang/perl-5.6.1 )
+       python? ( >=dev-lang/python-2.2 )
+       tcltk? ( dev-lang/tcl )
+       !net-irc/xchat-gnome"
+
+DEPEND="${RDEPEND}
+       >=dev-util/pkgconfig-0.7
+       >=sys-apps/sed-4
+       nls? ( sys-devel/gettext )"
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       epatch "${FILESDIR}"/xc245-fix-te-notify.diff
+       epatch "${FILESDIR}"/44_fix_alignment_endianess.dpatch
+
+       use xchatdccserver && epatch "${FILESDIR}"/xchat-dccserver-0.5.patch
+
+       # use libdir/xchat/plugins as the plugin directory
+       if [ $(get_libdir) != "lib" ] ; then
+               sed -i -e 's:${prefix}/lib/xchat:${libdir}/xchat:' \
+                       "${S}"/configure{,.in} || die
+       fi
+}
+
+src_compile() {
+       # xchat's configure script uses sys.path to find library path
+       # instead of python-config (#25943)
+       unset PYTHONPATH
+
+       econf \
+               $(use_enable ssl openssl) \
+               $(use_enable perl) \
+               $(use_enable python) \
+               $(use_enable tcltk tcl) \
+               $(use_enable mmx) \
+               $(use_enable ipv6) \
+               $(use_enable nls) \
+               $(use_enable xchattext textfe) \
+               $(use_enable !xchatnogtk gtkfe) \
+               --program-suffix=-2 \
+               || die "Configure failed"
+
+       emake || die "Compile failed"
+}
+
+src_install() {
+       # some magic to create a menu entry for xchat 2
+       sed -i \
+               -e "s:^Exec=xchat$:Exec=xchat-2:" \
+               -e "s:Name=XChat IRC:Name=XChat 2 IRC:" \
+               xchat.desktop
+
+       make DESTDIR="${D}" install || die "Install failed"
+
+       # install plugin development header
+       insinto /usr/include/xchat
+       doins src/common/xchat-plugin.h || die "doins failed"
+
+       dodoc ChangeLog README* || die "dodoc failed"
+}