Subject: [alpine-devel] [PATCH] testing/mtr: new aport

From: John Keith Hohm <[email-masked]>
Date: Mon, 11 Jul 2011 16:21:37 -0500

Full screen ncurses traceroute tool
http://www.bitwizard.nl/mtr/
---
 testing/mtr/APKBUILD              |   48 +++++
 testing/mtr/mtr-res_mkquery.patch |  374 +++++++++++++++++++++++++++++++++++++
 2 files changed, 422 insertions(+), 0 deletions(-)
 create mode 100644 testing/mtr/APKBUILD
 create mode 100644 testing/mtr/mtr-res_mkquery.patch

diff --git a/testing/mtr/APKBUILD b/testing/mtr/APKBUILD
new file mode 100644
index 0000000..d2c1559
--- /dev/null
+++ b/testing/mtr/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: John Keith Hohm <[email-masked]>
+# Maintainer:
+pkgname=mtr
+pkgver=0.80
+pkgrel=0
+pkgdesc="Full screen ncurses traceroute tool"
+url="http://www.bitwizard.nl/mtr/"
+arch="all"
+license="GPL"
+depends="ncurses"
+depends_dev="ncurses-dev"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-doc"
+source="ftp://ftp.bitwizard.nl/$pkgname/$pkgname-$pkgver.tar.gz
+	mtr-res_mkquery.patch
+	"
+
+_builddir="src/$pkgname-$pkgver"
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+	./configure --prefix=/usr \
+		--sysconfdir=/etc \
+		--mandir=/usr/share/man \
+		--infodir=/usr/share/info \
+		--localstatedir=/var \
+		--without-gtk \
+		|| return 1
+	make || return 1
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install || return 1
+}
+
+md5sums="fa68528eaec1757f52bacf9fea8c68a9  mtr-0.80.tar.gz
+f5982bdacddd8c1ea26d578b62bf810c  mtr-res_mkquery.patch"
diff --git a/testing/mtr/mtr-res_mkquery.patch b/testing/mtr/mtr-res_mkquery.patch
new file mode 100644
index 0000000..c761e97
--- /dev/null
+++ b/testing/mtr/mtr-res_mkquery.patch
@@ -0,0 +1,374 @@
+--- a/mtr-0.80/configure
++++ b/mtr-0.80/configure
+@@ -7165,317 +7165,6 @@
+ 
+ #  AC_CHECK_FUNC(setuid, , AC_MSG_ERROR (I Need either seteuid or setuid))
+ 
+-{ echo "$as_me:$LINENO: checking for res_mkquery" >&5
+-echo $ECHO_N "checking for res_mkquery... $ECHO_C" >&6; }
+-if test "${ac_cv_func_res_mkquery+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-/* Define res_mkquery to an innocuous variant, in case <limits.h> declares res_mkquery.
+-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+-#define res_mkquery innocuous_res_mkquery
+-
+-/* System header to define __stub macros and hopefully few prototypes,
+-    which can conflict with char res_mkquery (); below.
+-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+-    <limits.h> exists even on freestanding compilers.  */
+-
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+-
+-#undef res_mkquery
+-
+-/* Override any GCC internal prototype to avoid an error.
+-   Use char because int might match the return type of a GCC
+-   builtin and then its argument prototype would still apply.  */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char res_mkquery ();
+-/* The GNU C library defines this for functions which it implements
+-    to always fail with ENOSYS.  Some functions are actually named
+-    something starting with __ and the normal name is an alias.  */
+-#if defined __stub_res_mkquery || defined __stub___res_mkquery
+-choke me
+-#endif
+-
+-int
+-main ()
+-{
+-return res_mkquery ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+-  *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+-  (eval "$ac_link") 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && {
+-	 test -z "$ac_c_werror_flag" ||
+-	 test ! -s conftest.err
+-       } && test -s conftest$ac_exeext &&
+-       $as_test_x conftest$ac_exeext; then
+-  ac_cv_func_res_mkquery=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-	ac_cv_func_res_mkquery=no
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+-      conftest$ac_exeext conftest.$ac_ext
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_func_res_mkquery" >&5
+-echo "${ECHO_T}$ac_cv_func_res_mkquery" >&6; }
+-if test $ac_cv_func_res_mkquery = yes; then
+-  :
+-else
+-
+-{ echo "$as_me:$LINENO: checking for res_mkquery in -lbind" >&5
+-echo $ECHO_N "checking for res_mkquery in -lbind... $ECHO_C" >&6; }
+-if test "${ac_cv_lib_bind_res_mkquery+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lbind  $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-/* Override any GCC internal prototype to avoid an error.
+-   Use char because int might match the return type of a GCC
+-   builtin and then its argument prototype would still apply.  */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char res_mkquery ();
+-int
+-main ()
+-{
+-return res_mkquery ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+-  *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+-  (eval "$ac_link") 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && {
+-	 test -z "$ac_c_werror_flag" ||
+-	 test ! -s conftest.err
+-       } && test -s conftest$ac_exeext &&
+-       $as_test_x conftest$ac_exeext; then
+-  ac_cv_lib_bind_res_mkquery=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-	ac_cv_lib_bind_res_mkquery=no
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+-      conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bind_res_mkquery" >&5
+-echo "${ECHO_T}$ac_cv_lib_bind_res_mkquery" >&6; }
+-if test $ac_cv_lib_bind_res_mkquery = yes; then
+-  cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBBIND 1
+-_ACEOF
+-
+-  LIBS="-lbind $LIBS"
+-
+-else
+-
+-{ echo "$as_me:$LINENO: checking for res_mkquery in -lresolv" >&5
+-echo $ECHO_N "checking for res_mkquery in -lresolv... $ECHO_C" >&6; }
+-if test "${ac_cv_lib_resolv_res_mkquery+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lresolv  $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-/* Override any GCC internal prototype to avoid an error.
+-   Use char because int might match the return type of a GCC
+-   builtin and then its argument prototype would still apply.  */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char res_mkquery ();
+-int
+-main ()
+-{
+-return res_mkquery ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+-  *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+-  (eval "$ac_link") 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && {
+-	 test -z "$ac_c_werror_flag" ||
+-	 test ! -s conftest.err
+-       } && test -s conftest$ac_exeext &&
+-       $as_test_x conftest$ac_exeext; then
+-  ac_cv_lib_resolv_res_mkquery=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-	ac_cv_lib_resolv_res_mkquery=no
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+-      conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_mkquery" >&5
+-echo "${ECHO_T}$ac_cv_lib_resolv_res_mkquery" >&6; }
+-if test $ac_cv_lib_resolv_res_mkquery = yes; then
+-  cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBRESOLV 1
+-_ACEOF
+-
+-  LIBS="-lresolv $LIBS"
+-
+-else
+-
+-{ echo "$as_me:$LINENO: checking for __res_mkquery in -lresolv" >&5
+-echo $ECHO_N "checking for __res_mkquery in -lresolv... $ECHO_C" >&6; }
+-if test "${ac_cv_lib_resolv___res_mkquery+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lresolv  $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h.  */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h.  */
+-
+-/* Override any GCC internal prototype to avoid an error.
+-   Use char because int might match the return type of a GCC
+-   builtin and then its argument prototype would still apply.  */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char __res_mkquery ();
+-int
+-main ()
+-{
+-return __res_mkquery ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+-  *) ac_try_echo=$ac_try;;
+-esac
+-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+-  (eval "$ac_link") 2>conftest.er1
+-  ac_status=$?
+-  grep -v '^ *+' conftest.er1 >conftest.err
+-  rm -f conftest.er1
+-  cat conftest.err >&5
+-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+-  (exit $ac_status); } && {
+-	 test -z "$ac_c_werror_flag" ||
+-	 test ! -s conftest.err
+-       } && test -s conftest$ac_exeext &&
+-       $as_test_x conftest$ac_exeext; then
+-  ac_cv_lib_resolv___res_mkquery=yes
+-else
+-  echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-	ac_cv_lib_resolv___res_mkquery=no
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+-      conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_resolv___res_mkquery" >&5
+-echo "${ECHO_T}$ac_cv_lib_resolv___res_mkquery" >&6; }
+-if test $ac_cv_lib_resolv___res_mkquery = yes; then
+-  cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBRESOLV 1
+-_ACEOF
+-
+-  LIBS="-lresolv $LIBS"
+-
+-else
+-  { { echo "$as_me:$LINENO: error: No resolver library found" >&5
+-echo "$as_me: error: No resolver library found" >&2;}
+-   { (exit 1); exit 1; }; }
+-fi
+-
+-fi
+-
+-fi
+-
+-fi
+-
+-# This next line would override the just detected-or-not -lresolv.
+-# This apparently hurts BSD. And it's bad practise. So it should go.
+-# However, it probably didn't get added for nothing..... Holler if
+-# removing it hurts your OS.... -- REW
+-#LIBS="$LIBS -lresolv"
+-
+ { echo "$as_me:$LINENO: checking for herror" >&5
+ echo $ECHO_N "checking for herror... $ECHO_C" >&6; }
+ if test "${ac_cv_func_herror+set}" = set; then
+--- a/mtr-0.80/dns.c
++++ b/mtr-0.80/dns.c
+@@ -881,6 +881,51 @@
+ }
+ 
+ 
++ /* res_mkquery from dietlibc libcruft http://www.fefe.de/dietlibc/ */
++
++static char dnspacket[]="\xfe\xfe\001\000\000\001\000\000\000\000\000\000";
++
++static int res_mkquery(int op, const char *dname, int class, int type, char* data,
++		int datalen, const unsigned char* newrr, char* buf, int buflen) {
++  unsigned char packet[512];
++  unsigned long len;
++
++  memcpy(packet,dnspacket,12);
++  len=rand();
++  packet[0]=len;
++  packet[1]=len>>8;
++  len=0;
++  if ((_res.options&RES_RECURSE)==0) packet[2]=0;
++  {
++    unsigned char* x;
++    const char* y,* tmp;
++    x=packet+12; y=dname;
++    while (*y) {
++      while (*y=='.') ++y;
++      for (tmp=y; *tmp && *tmp!='.'; ++tmp) ;
++      if (tmp-y > 63) return -1;
++      *x=tmp-y;
++      if (!(tmp-y)) break;
++      if ((len+=*x+1) > 254) return -1;
++      ++x;
++      memmove(x,y,tmp-y);
++      x+=tmp-y;
++      if (!*tmp) {
++	*x=0;
++	break;
++      }
++      y=tmp;
++    }
++    *++x= 0; *++x= type;	/* A */
++    *++x= 0; *++x= class;	/* IN */
++    ++x;
++    if (x-packet>buflen) return -1;
++    memmove(buf,packet,x-packet);
++    return x-packet;
++  }
++}
++
++
+ void dorequest(char *s,int type,word id)
+ {
+   packetheader *hp;
-- 
1.7.4.5

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---