summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRenat Lumpau <rl03@gentoo.org>2006-05-01 13:42:02 +0000
committerRenat Lumpau <rl03@gentoo.org>2006-05-01 13:42:02 +0000
commit11ca2c8313f0d7df097f3c06873d6659573736ed (patch)
treeab54e216f32ca59893d6f205ced837818ef2882b /www-misc/htdig
parentversion bump (diff)
downloadgentoo-2-11ca2c8313f0d7df097f3c06873d6659573736ed.tar.gz
gentoo-2-11ca2c8313f0d7df097f3c06873d6659573736ed.tar.bz2
gentoo-2-11ca2c8313f0d7df097f3c06873d6659573736ed.zip
Bye bye webapp.eclass: should fix #28049 , #107062 , #110528 , #125136 ; also
see #120830. Added https patch ( bug #52613 ). Misc housekeeping. (Portage version: 2.1_pre9-r5)
Diffstat (limited to 'www-misc/htdig')
-rw-r--r--www-misc/htdig/ChangeLog11
-rw-r--r--www-misc/htdig/files/3.1.6-ssl.patch653
-rw-r--r--www-misc/htdig/files/digest-htdig-3.1.6-r72
-rw-r--r--www-misc/htdig/files/digest-htdig-3.1.6-r83
-rw-r--r--www-misc/htdig/files/digest-htdig-3.2.0_beta62
-rw-r--r--www-misc/htdig/files/digest-htdig-3.2.0_beta6-r13
-rw-r--r--www-misc/htdig/htdig-3.1.6-r8.ebuild63
-rw-r--r--www-misc/htdig/htdig-3.2.0_beta6-r1.ebuild53
8 files changed, 789 insertions, 1 deletions
diff --git a/www-misc/htdig/ChangeLog b/www-misc/htdig/ChangeLog
index 3f8ae272cb61..b7c17a8d6c6b 100644
--- a/www-misc/htdig/ChangeLog
+++ b/www-misc/htdig/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for www-misc/htdig
# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/www-misc/htdig/ChangeLog,v 1.15 2006/03/22 19:45:58 eradicator Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-misc/htdig/ChangeLog,v 1.16 2006/05/01 13:42:02 rl03 Exp $
+
+*htdig-3.2.0_beta6-r1 (01 May 2006)
+*htdig-3.1.6-r8 (01 May 2006)
+
+ 01 May 2006; Renat Lumpau <rl03@gentoo.org> -files/htdig-3.2.0-fpic.patch,
+ +files/3.1.6-ssl.patch, -files/CONFIG.in, +htdig-3.1.6-r8.ebuild,
+ +htdig-3.2.0_beta6-r1.ebuild:
+ Bye bye webapp.eclass: should fix #28049 , #107062 , #110528 , #125136 ; also
+ see #120830. Added https patch ( bug #52613 ). Misc housekeeping.
22 Mar 2006; Jeremy Huddleston <eradicator@gentoo.org>
+files/htdig-3.2.0_beta6-gcc4.patch, htdig-3.2.0_beta6.ebuild:
diff --git a/www-misc/htdig/files/3.1.6-ssl.patch b/www-misc/htdig/files/3.1.6-ssl.patch
new file mode 100644
index 000000000000..5a3ac2fd6437
--- /dev/null
+++ b/www-misc/htdig/files/3.1.6-ssl.patch
@@ -0,0 +1,653 @@
+diff -urd htdig-3.1.6/Makefile.config.in htdig-3.1.6-ssl/Makefile.config.in
+--- htdig-3.1.6/Makefile.config.in Fri Feb 1 00:47:14 2002
++++ htdig-3.1.6-ssl/Makefile.config.in Mon Oct 21 17:30:40 2002
+@@ -23,14 +23,15 @@
+ PDF_PARSER= @PDF_PARSER@
+ SENDMAIL= @SENDMAIL@
+
+-DEFINES= -DDEFAULT_CONFIG_FILE=\"$(DEFAULT_CONFIG_FILE)\"
++DEFINES= @DEFS@ -DDEFAULT_CONFIG_FILE=\"$(DEFAULT_CONFIG_FILE)\" -DHAVE_SSL
++LIBDIRS= -L../htlib -L../htcommon -L../db/dist -L/usr/lib -L$(OPENSSL)/lib
+ LIBDIRS= -L../htlib -L../htcommon -L../db/dist -L/usr/lib
+ INCS= -I$(top_srcdir)/htlib -I$(top_srcdir)/htcommon \
+- -I../db/dist -I../include
++ -I../db/dist -I../include -I$(OPENSSL)/include
+ HTLIBS= ../htcommon/libcommon.a \
+ ../htlib/libht.a \
+ ../db/dist/libdb.a
+-LIBS= $(HTLIBS) @LIBS@
++LIBS= $(HTLIBS) @LIBS@ -lssl -lcrypto
+
+ DIST= @PACKAGE@-@VERSION@
+ DISTDIR= $(top_srcdir)/../$(DIST)
+diff -urd htdig-3.1.6/htcommon/DocumentDB.cc htdig-3.1.6-ssl/htcommon/DocumentDB.cc
+--- htdig-3.1.6/htcommon/DocumentDB.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htcommon/DocumentDB.cc Mon Oct 21 04:40:54 2002
+@@ -231,7 +231,11 @@
+ while ((key = dbf->Get_Next()))
+ {
+ dbf->Get(key, data);
++#ifndef HAVE_SSL
+ if (strncmp(HtURLCodec::instance()->decode(key), "http:", 5) == 0)
++#else /* HAVE_SSL */
++ if (strncmp(HtURLCodec::instance()->decode(key), "http:", 5) == 0 || strncmp(HtURLCodec::instance()->decode(key), "https:", 6) == 0)
++#endif /* HAVE_SSL */
+ {
+ ref = new DocumentRef;
+ ref->Deserialize(data);
+@@ -419,7 +423,11 @@
+ while ((coded_key = dbf->Get_Next()))
+ {
+ String key = HtURLCodec::instance()->decode(coded_key);
++#ifndef HAVE_SSL
+ if (mystrncasecmp(key, "http:", 5) == 0)
++#else /* HAVE_SSL */
++ if (mystrncasecmp(key, "http:", 5) == 0 || mystrncasecmp(key, "https:", 6) == 0)
++#endif /* HAVE_SSL */
+ {
+ DocumentRef *ref = (*this)[key];
+ if (ref)
+diff -urd htdig-3.1.6/htcommon/defaults.cc htdig-3.1.6-ssl/htcommon/defaults.cc
+--- htdig-3.1.6/htcommon/defaults.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htcommon/defaults.cc Mon Oct 21 04:40:54 2002
+@@ -43,7 +43,11 @@
+ {"boolean_syntax_errors", "Expected 'a search word' 'at the end' 'instead of' 'end of expression'"},
+ {"build_select_lists", ""},
+ {"case_sensitive", "true"},
++#ifndef HAVE_SSL
+ {"common_url_parts", "http:// http://www. ftp:// ftp://ftp. /pub/ .html .htm .gif .jpg .jpeg /index.html /index.htm .com/ .com mailto:"},
++#else /* HAVE_SSL */
++ {"common_url_parts", "https:// https://www. http:// http://www. ftp:// ftp://ftp. /pub/ .html .htm .gif .jpg .jpeg /index.html /index.htm .com/ .com mailto:"},
++#endif /* HAVE_SSL */
+ {"create_image_list", "false"},
+ {"create_url_list", "false"},
+ {"compression_level", "0"},
+diff -urd htdig-3.1.6/htdig/Document.cc htdig-3.1.6-ssl/htdig/Document.cc
+--- htdig-3.1.6/htdig/Document.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/Document.cc Mon Oct 21 17:37:56 2002
+@@ -474,7 +474,10 @@
+ return Document_no_host;
+ }
+ }
+-
++
++#ifdef HAVE_SSL
++ c.assign_ssl(strcmp(url->service(), "https") == 0);
++#endif /* HAVE_SSL */
+ if (c.connect(1) == NOTOK)
+ {
+ if (debug)
+@@ -484,6 +487,10 @@
+ {
+ cout << "(Via proxy " << proxy->host() << ':' << proxy->port() << ')' << endl;
+ }
++#ifdef HAVE_SSL
++ if (strcmp(url->service(), "https") == 0)
++ cout << c.ssl_error_message() << endl;
++#endif /* HAVE_SSL */
+ }
+ c.close();
+ return Document_no_server;
+diff -urd htdig-3.1.6/htdig/Images.cc htdig-3.1.6-ssl/htdig/Images.cc
+--- htdig-3.1.6/htdig/Images.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/Images.cc Mon Oct 21 04:40:54 2002
+@@ -61,7 +61,11 @@
+ {
+ String u = url;
+ URL Url(url);
++#ifndef HAVE_SSL
+ if (strcmp(Url.service(), "http") != 0)
++#else /* HAVE_SSL */
++ if (strcmp(Url.service(), "http") != 0 && strcmp(Url.service(), "https") != 0)
++#endif /* HAVE_SSL */
+ return 0;
+
+ u.lowercase();
+@@ -81,6 +85,9 @@
+ return 0;
+ if (c.assign_server(Url.host()) == NOTOK)
+ return 0;
++#ifdef HAVE_SSL
++ c.assign_ssl(strcmp(Url.service(), "https") == 0);
++#endif /* HAVE_SSL */
+
+ if (c.connect(1) == NOTOK)
+ {
+diff -urd htdig-3.1.6/htdig/Retriever.cc htdig-3.1.6-ssl/htdig/Retriever.cc
+--- htdig-3.1.6/htdig/Retriever.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/Retriever.cc Tue Oct 22 06:44:31 2002
+@@ -137,10 +137,14 @@
+ cout << "\t" << from << ":" << (int) log << ":" << url;
+ if (!server)
+ {
+- String robotsURL = "http://";
+- robotsURL << u.host() << "/robots.txt";
++ String robotsURL = u.service();
++ robotsURL << "://" << u.host() << "/robots.txt";
+ StringList *localRobotsFiles = GetLocal(robotsURL.get());
++#ifndef HAVE_SSL
+ server = new Server(u.host(), u.port(), localRobotsFiles);
++#else /* HAVE_SSL */
++ server = new Server(u.host(), u.port(), strcmp(u.service(), "https") == 0, localRobotsFiles);
++#endif /* HAVE_SSL */
+ servers.Add(u.signature(), server);
+ delete localRobotsFiles;
+ }
+@@ -679,10 +683,18 @@
+ // Currently, we only deal with HTTP URLs. Gopher and ftp will
+ // come later... ***FIX***
+ //
++#ifndef HAVE_SSL
+ if (strstr(u, "/../") || strncmp(u, "http://", 7) != 0)
++#else /* HAVE_SSL */
++ if (strstr(u, "/../") || (strncmp(u, "http://", 7) != 0 && strncmp(u, "https://", 8) != 0))
++#endif /* HAVE_SSL */
+ {
+ if (debug > 2)
++#ifndef HAVE_SSL
+ cout << endl <<" Rejected: Not an http or relative link!";
++#else /* HAVE_SSL */
++ cout << endl <<" Rejected: Not an http, https or relative link!";
++#endif /* HAVE_SSL */
+ return FALSE;
+ }
+
+@@ -1365,10 +1377,14 @@
+ //
+ // Hadn't seen this server, yet. Register it
+ //
+- String robotsURL = "http://";
+- robotsURL << url.host() << "/robots.txt";
++ String robotsURL = url.service();
++ robotsURL << "://" << url.host() << "/robots.txt";
+ StringList *localRobotsFile = GetLocal(robotsURL.get());
++#ifndef HAVE_SSL
+ server = new Server(url.host(), url.port(), localRobotsFile);
++#else /* HAVE_SSL */
++ server = new Server(url.host(), url.port(), strcmp(url.service(), "https") == 0, localRobotsFile);
++#endif /* HAVE_SSL */
+ servers.Add(url.signature(), server);
+ delete localRobotsFile;
+ }
+@@ -1509,10 +1525,14 @@
+ //
+ // Hadn't seen this server, yet. Register it
+ //
+- String robotsURL = "http://";
+- robotsURL << url.host() << "/robots.txt";
++ String robotsURL = url.service();
++ robotsURL << "://" << url.host() << "/robots.txt";
+ StringList *localRobotsFile = GetLocal(robotsURL.get());
++#ifndef HAVE_SSL
+ server = new Server(url.host(), url.port(), localRobotsFile);
++#else /* HAVE_SSL */
++ server = new Server(url.host(), url.port(), strcmp(url.service(), "https") == 0, localRobotsFile);
++#endif /* HAVE_SSL */
+ servers.Add(url.signature(), server);
+ delete localRobotsFile;
+ }
+diff -urd htdig-3.1.6/htdig/Server.cc htdig-3.1.6-ssl/htdig/Server.cc
+--- htdig-3.1.6/htdig/Server.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/Server.cc Mon Oct 21 19:57:02 2002
+@@ -20,9 +20,17 @@
+
+
+ //*****************************************************************************
+-// Server::Server(char *host, int port, StringList *local_robots_files)
++//#ifndef HAVE_SSL
++// Server::Server(char *host, int port, StringList *local_robots_files)
++//#else /* HAVE_SSL */
++// Server::Server(char *host, int port, int ssl, StringList *local_robots_files)
++//#endif /* HAVE_SSL */
+ //
+-Server::Server(char *host, int port, StringList *local_robots_files)
++#ifndef HAVE_SSL
++Server::Server(char *host, int port, StringList *local_robots_files)
++#else /* HAVE_SSL */
++Server::Server(char *host, int port, int ssl, StringList *local_robots_files)
++#endif /* HAVE_SSL */
+ {
+ if (debug > 0)
+ cout << endl << "New server: " << host << ", " << port << endl;
+@@ -41,6 +49,9 @@
+ // Attempt to get a robots.txt file from the specified server
+ //
+ String url = "http://";
++#ifdef HAVE_SSL
++ if (ssl) url = "https://";
++#endif /* HAVE_SSL */
+ url << host << ':' << port << "/robots.txt";
+ Document doc(url, 0);
+
+diff -urd htdig-3.1.6/htdig/Server.h htdig-3.1.6-ssl/htdig/Server.h
+--- htdig-3.1.6/htdig/Server.h Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/Server.h Mon Oct 21 19:57:02 2002
+@@ -26,7 +26,11 @@
+ //
+ // Construction/Destruction
+ //
+- Server(char *host, int port, StringList *local_robots_files = NULL);
++#ifndef HAVE_SSL
++ Server(char *host, int port, StringList *local_robots_files = NULL);
++#else /* HAVE_SSL */
++ Server(char *host, int port, int ssl, StringList *local_robots_files = NULL);
++#endif /* HAVE_SSL */
+ ~Server();
+
+ //
+diff -urd htdig-3.1.6/htdig/htdig.cc htdig-3.1.6-ssl/htdig/htdig.cc
+--- htdig-3.1.6/htdig/htdig.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htdig/htdig.cc Mon Oct 21 05:35:33 2002
+@@ -386,7 +386,11 @@
+ {
+ cout << "usage: htdig [-v][-i][-c configfile][-t][-h hopcount][-s] \\\n";
+ cout << " [-u username:password][-a][-m minimalfile][file]\n";
+- cout << "This program is part of ht://Dig " << VERSION << "\n\n";
++ cout << "This program is part of ht://Dig " << VERSION;
++#ifdef HAVE_SSL
++ cout << "/SSL";
++#endif /* HAVE_SSL */
++ cout << "\n\n";
+ cout << "Options:\n";
+
+ cout << "\t-v\tVerbose mode. This increases the verbosity of the\n";
+diff -urd htdig-3.1.6/htlib/Connection.cc htdig-3.1.6-ssl/htlib/Connection.cc
+--- htdig-3.1.6/htlib/Connection.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htlib/Connection.cc Tue Oct 22 06:44:31 2002
+@@ -42,6 +42,10 @@
+ int rresvport(int *);
+ }
+
++#ifdef HAVE_SSL
++SSL_CTX *Connection::ctx = NULL;
++SSL_METHOD *Connection::meth = NULL;
++#endif /* HAVE_SSL */
+ List all_connections;
+
+ Connection::Connection()
+@@ -54,7 +58,47 @@
+ timeout_value = 0;
+ retry_value = 1;
+ wait_time = 5; // wait 5 seconds after a failed connection
++#ifdef HAVE_SSL
++ ssl = NULL;
++ m_ssl_on = 0;
++#endif /* HAVE_SSL */
++}
++
++#ifdef HAVE_SSL
++void Connection::initSSL()
++{
++ static int init = 0;
++
++ if (! init)
++ {
++ init = 1;
++
++ SSL_library_init();
++ SSL_load_error_strings();
++#ifdef SSL_NEED_RANDFILE
++ char buffer[200];
++ RAND_load_file(RAND_file_name(buffer, sizeof buffer), -1);
++#endif /* SSL_NEED_RANDFILE */
++#ifdef SSL_NEEDS_EGD_SOCKET
++ if (getenv("EGD_SOCKET") != NULL)
++ {
++ RAND_egd(getenv("EGD_SOCKET"));
++ }
++#endif /* SSL_NEEDS_EGD_SOCKET */
++ meth = SSLv23_client_method();
++ }
++
++ if (ctx == NULL)
++ {
++ ctx = SSL_CTX_new(meth);
++ if (ctx == NULL)
++ {
++ cout << ssl_error_message() << endl;
++ exit(1);
++ }
++ }
+ }
++#endif /* HAVE_SSL */
+
+
+ //*************************************************************************
+@@ -79,6 +117,10 @@
+ timeout_value = 0;
+ retry_value = 1;
+ wait_time = 5;
++#ifdef HAVE_SSL
++ ssl = NULL;
++ m_ssl_on = 0;
++#endif /* HAVE_SSL */
+ }
+
+
+@@ -91,6 +133,13 @@
+ this->close();
+ delete peer;
+ delete server_name;
++#ifdef HAVE_SSL
++ if (ctx != NULL)
++ {
++ SSL_CTX_free(ctx);
++ ctx = NULL;
++ }
++#endif
+ }
+
+
+@@ -164,7 +213,15 @@
+ connected = 0;
+ if (sock >= 0)
+ {
++#ifdef HAVE_SSL
++ if (m_ssl_on)
++ SSL_shutdown(ssl);
++#endif /* HAVE_SSL */
+ int ret = ::close(sock);
++#ifdef HAVE_SSL
++ SSL_free(ssl);
++ ssl = NULL;
++#endif /* HAVE_SSL */
+ sock = -1;
+ return ret;
+ }
+@@ -245,6 +302,27 @@
+ static void handler_timeout(int) {
+ }
+
++
++#ifdef HAVE_SSL
++//*****************************************************************************
++// int Connection::assign_ssl(int ssl_on)
++//
++int Connection::assign_ssl(int ssl_on)
++{
++ m_ssl_on = ssl_on;
++ return OK;
++}
++
++//*****************************************************************************
++// char* Connection::ssl_error_message(void)
++//
++char* Connection::ssl_error_message(void)
++{
++ return ERR_error_string(ERR_get_error(), NULL);
++}
++#endif /* HAVE_SSL */
++
++
+ //*****************************************************************************
+ // int Connection::connect(int allow_EINTR)
+ //
+@@ -253,6 +331,11 @@
+ int status;
+ int retries = retry_value;
+
++#ifdef HAVE_SSL
++ if (m_ssl_on)
++ initSSL();
++#endif
++
+ while (retries--)
+ {
+ //
+@@ -278,8 +361,29 @@
+
+ if (status == 0 || errno == EALREADY || errno == EISCONN)
+ {
++#ifndef HAVE_SSL
+ connected = 1;
+ return OK;
++#else /* HAVE_SSL */
++ if (m_ssl_on)
++ {
++ ssl = SSL_new(ctx);
++ if (ssl != NULL)
++ {
++ SSL_set_fd(ssl, sock);
++ if (SSL_connect(ssl) > 0)
++ {
++ connected = 1;
++ return OK;
++ }
++ }
++ }
++ else
++ {
++ connected = 1;
++ return OK;
++ }
++#endif /* HAVE_SSL */
+ }
+
+ //
+@@ -441,7 +545,16 @@
+ }
+
+ if (!need_io_stop)
++ {
++#ifndef HAVE_SSL
+ count = ::read(sock, buffer, maxlength);
++#else /* HAVE_SSL */
++ if (ssl != NULL)
++ count = SSL_read(ssl, buffer, maxlength);
++ else
++ count = ::read(sock, buffer, maxlength);
++#endif /* HAVE_SSL */
++ }
+ else
+ count = -1; // Input timed out
+ }
+@@ -461,7 +574,14 @@
+
+ do
+ {
++#ifndef HAVE_SSL
+ count = ::write(sock, buffer, maxlength);
++#else /* HAVE_SSL */
++ if (ssl != NULL)
++ count = SSL_write(ssl, buffer, maxlength);
++ else
++ count = ::write(sock, buffer, maxlength);
++#endif /* HAVE_SSL */
+ }
+ while (count < 0 && errno == EINTR && !need_io_stop);
+ need_io_stop = 0;
+diff -urd htdig-3.1.6/htlib/Connection.h htdig-3.1.6-ssl/htlib/Connection.h
+--- htdig-3.1.6/htlib/Connection.h Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htlib/Connection.h Mon Oct 21 05:57:32 2002
+@@ -44,6 +44,16 @@
+ #include <netinet/in.h>
+ #include <netdb.h>
+
++#ifdef HAVE_SSL
++#include <openssl/rsa.h>
++#include <openssl/crypto.h>
++#include <openssl/x509.h>
++#include <openssl/pem.h>
++#include <openssl/ssl.h>
++#include <openssl/err.h>
++#include <openssl/rand.h>
++#endif /* HAVE_SSL */
++
+ class String;
+
+ class Connection : public io
+@@ -73,6 +83,13 @@
+ int assign_server(unsigned int addr = INADDR_ANY);
+ char *get_server() {return server_name;}
+
++#ifdef HAVE_SSL
++ // SLL stuff
++ void initSSL();
++ int assign_ssl(int ssl_on);
++ char *ssl_error_message(void);
++#endif /* HAVE_SSL */
++
+ // Connection establishment
+ int connect(int allow_EINTR = 0);
+ Connection *accept(int priv = 0);
+@@ -99,6 +116,12 @@
+
+ private:
+ int sock;
++#ifdef HAVE_SSL
++ int m_ssl_on;
++ SSL *ssl;
++ static SSL_CTX *ctx;
++ static SSL_METHOD *meth;
++#endif /* HAVE_SSL */
+ struct sockaddr_in server;
+ int connected;
+ char *peer;
+diff -urd htdig-3.1.6/htlib/URL.cc htdig-3.1.6-ssl/htlib/URL.cc
+--- htdig-3.1.6/htlib/URL.cc Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htlib/URL.cc Tue Oct 22 06:44:31 2002
+@@ -131,9 +131,21 @@
+ while (isalpha(*p))
+ p++;
+ int hasService = (*p == ':');
++#ifndef HAVE_SSL
+ if ((hasService && ((strncmp(ref, "http://", 7) == 0) ||
+ (strncmp(ref, "http:", 5) != 0)))
+ || strncmp(ref, "//", 2) == 0)
++#else /* HAVE_SSL */
++
++ if ((hasService &&
++ ( (strncmp(ref, "http://", 7) == 0) ||
++ (strncmp(ref, "http:", 5) != 0) ||
++ (strncmp(ref, "https://", 8) == 0) ||
++ (strncmp(ref, "https:", 6) != 0)
++ )
++ )
++ || (strncmp(ref, "//", 2) == 0))
++#endif /* HAVE_SSL */
+ {
+ //
+ // No need to look at the parent url since this is a complete url...
+@@ -218,7 +230,14 @@
+ _url << ":";
+ if (_host.length())
+ _url << "//" << _host;
++ // Add on the port if its not one of the standard ones
++#ifndef HAVE_SSL
+ if (_port != 80 && strcmp(_service, "http") == 0)
++#else /* HAVE_SSL */
++ if ((strcmp(_service, "https") == 0 && _port != 443)||
++ (strcmp(_service, "http" ) == 0 && _port != 80)
++ )
++#endif /* HAVE_SSL */
+ _url << ':' << _port;
+ _url << _path;
+ }
+@@ -292,13 +311,29 @@
+ if (p)
+ _port = atoi(p);
+ if (!p || _port <= 0)
++#ifndef HAVE_SSL
+ _port = 80;
++#else /* HAVE_SSL */
++ {
++ if( strcmp( _service, "https" ) == 0 )
++ _port = 443;
++ else
++ _port = 80;
++ }
++#endif /* HAVE_SSL */
+ }
+ else
+ {
+ _host = strtok(p, "/");
+ _host.chop(" \t");
++#ifndef HAVE_SSL
+ _port = 80;
++#else /* HAVE_SSL */
++ if( strcmp( _service, "https" ) == 0 )
++ _port = 443;
++ else
++ _port = 80;
++#endif /* HAVE_SSL */
+ }
+
+ //
+@@ -317,7 +352,12 @@
+ //
+ _url = _service;
+ _url << "://" << _host;
++#ifndef HAVE_SSL
+ if (_port != 80)
++#else /* HAVE_SSL */
++ if ((strcmp(_service, "https") == 0 && _port != 443)||
++ (strcmp(_service, "http" ) == 0 && _port != 80))
++#endif /* HAVE_SSL */
+ _url << ':' << _port;
+ _url << _path;
+ }
+@@ -446,7 +486,12 @@
+ _path.lowercase();
+ _url = _service;
+ _url << "://" << _host;
++#ifndef HAVE_SSL
+ if (_port != 80)
++#else /* HAVE_SSL */
++ if ((strcmp(_service, "https") == 0 && _port != 443)||
++ (strcmp(_service, "http" ) == 0 && _port != 80))
++#endif /* HAVE_SSL */
+ _url << ':' << _port;
+ _url << _path;
+ }
+@@ -496,7 +541,12 @@
+ if (_service.length() == 0 || _normal)
+ return;
+
++#ifndef HAVE_SSL
+ if (strcmp(_service, "http") != 0)
++#else /* HAVE_SSL */
++ if (strcmp(_service, "http") != 0 &&
++ strcmp(_service, "https") != 0)
++#endif /* HAVE_SSL */
+ return;
+
+ removeIndex(_path);
+@@ -553,7 +603,12 @@
+ _url << ":";
+ if (_host.length())
+ _url << "//" << _host;
++#ifndef HAVE_SSL
+ if (_port != 80 && strcmp(_service, "http") == 0)
++#else /* HAVE_SSL */
++ if ((strcmp(_service, "https") == 0 && _port != 443)||
++ (strcmp(_service, "http" ) == 0 && _port != 80))
++#endif /* HAVE_SSL */
+ _url << ':' << _port;
+ _url << _path;
+ _normal = 1;
+diff -urd htdig-3.1.6/htlib/URL.h htdig-3.1.6-ssl/htlib/URL.h
+--- htdig-3.1.6/htlib/URL.h Fri Feb 1 00:47:17 2002
++++ htdig-3.1.6-ssl/htlib/URL.h Mon Oct 21 19:57:02 2002
+@@ -59,18 +59,18 @@
+
+ void parse(char *url);
+
+- char *host() {return _host;}
++ char *host() {return _host.get();}
+ void host(char *h) {_host = h;}
+ int port() {return _port;}
+ void port(int p) {_port = p;}
+- char *service() {return _service;}
++ char *service() {return _service.get();}
+ void service(char *s) {_service = s;}
+- char *path() {return _path;}
++ char *path() {return _path.get();}
+ void path(char *p);
+ int hopcount() {return _hopcount;}
+ void hopcount(int h) {_hopcount = h;}
+
+- char *get() {return _url;}
++ char *get() {return _url.get();}
+ void dump();
+ void normalize();
+ void rewrite();
diff --git a/www-misc/htdig/files/digest-htdig-3.1.6-r7 b/www-misc/htdig/files/digest-htdig-3.1.6-r7
index a44fa14c97b5..6d02069e8b26 100644
--- a/www-misc/htdig/files/digest-htdig-3.1.6-r7
+++ b/www-misc/htdig/files/digest-htdig-3.1.6-r7
@@ -1 +1,3 @@
MD5 7a2f20d8d6149efd8d119bb2ebf55f23 htdig-3.1.6.tar.gz 2068675
+RMD160 1414943255f16cd278a31b8014a5bfe6c4400ead htdig-3.1.6.tar.gz 2068675
+SHA256 c50aae9beeeb4525901f19319350631bc16a501855f1e6f918209ba44c19638b htdig-3.1.6.tar.gz 2068675
diff --git a/www-misc/htdig/files/digest-htdig-3.1.6-r8 b/www-misc/htdig/files/digest-htdig-3.1.6-r8
new file mode 100644
index 000000000000..6d02069e8b26
--- /dev/null
+++ b/www-misc/htdig/files/digest-htdig-3.1.6-r8
@@ -0,0 +1,3 @@
+MD5 7a2f20d8d6149efd8d119bb2ebf55f23 htdig-3.1.6.tar.gz 2068675
+RMD160 1414943255f16cd278a31b8014a5bfe6c4400ead htdig-3.1.6.tar.gz 2068675
+SHA256 c50aae9beeeb4525901f19319350631bc16a501855f1e6f918209ba44c19638b htdig-3.1.6.tar.gz 2068675
diff --git a/www-misc/htdig/files/digest-htdig-3.2.0_beta6 b/www-misc/htdig/files/digest-htdig-3.2.0_beta6
index 5dd337f83bf4..71d425d06977 100644
--- a/www-misc/htdig/files/digest-htdig-3.2.0_beta6
+++ b/www-misc/htdig/files/digest-htdig-3.2.0_beta6
@@ -1 +1,3 @@
MD5 8a6952f5b97e305dbb7489045bad220f htdig-3.2.0b6.tar.gz 3104936
+RMD160 621e85920f3452bc1a28a61cf7f8b3e08808bc55 htdig-3.2.0b6.tar.gz 3104936
+SHA256 6da9e0ee8627d5302f5685a1b3e5de5f1e6e8df4c0a92c0ca00796bca9e546c8 htdig-3.2.0b6.tar.gz 3104936
diff --git a/www-misc/htdig/files/digest-htdig-3.2.0_beta6-r1 b/www-misc/htdig/files/digest-htdig-3.2.0_beta6-r1
new file mode 100644
index 000000000000..71d425d06977
--- /dev/null
+++ b/www-misc/htdig/files/digest-htdig-3.2.0_beta6-r1
@@ -0,0 +1,3 @@
+MD5 8a6952f5b97e305dbb7489045bad220f htdig-3.2.0b6.tar.gz 3104936
+RMD160 621e85920f3452bc1a28a61cf7f8b3e08808bc55 htdig-3.2.0b6.tar.gz 3104936
+SHA256 6da9e0ee8627d5302f5685a1b3e5de5f1e6e8df4c0a92c0ca00796bca9e546c8 htdig-3.2.0b6.tar.gz 3104936
diff --git a/www-misc/htdig/htdig-3.1.6-r8.ebuild b/www-misc/htdig/htdig-3.1.6-r8.ebuild
new file mode 100644
index 000000000000..25e5ea76c2fd
--- /dev/null
+++ b/www-misc/htdig/htdig-3.1.6-r8.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-misc/htdig/htdig-3.1.6-r8.ebuild,v 1.1 2006/05/01 13:42:02 rl03 Exp $
+
+inherit eutils flag-o-matic
+
+DESCRIPTION="HTTP/HTML indexing and searching system"
+SRC_URI="http://www.htdig.org/files/${P}.tar.gz"
+HOMEPAGE="http://www.htdig.org"
+KEYWORDS="~x86 ~sparc ~ppc ~mips ~amd64"
+LICENSE="GPL-2"
+
+DEPEND=">=sys-libs/zlib-1.1.3
+ app-arch/unzip"
+
+SLOT="0"
+
+IUSE="ssl"
+
+export CPPFLAGS="${CPPFLAGS} -Wno-deprecated"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ # security bug 80602
+ epatch ${FILESDIR}/${P}-unescaped-output.diff
+
+ use ssl && epatch ${FILESDIR}/${PV}-ssl.patch
+}
+
+src_compile() {
+ append-flags -Wno-deprecated
+
+ econf \
+ --with-config-dir=/etc/${PN} \
+ --with-default-config-file=/etc/${PN}/${PN}.conf \
+ --with-database-dir=/var/lib/${PN}/db \
+ --with-cgi-bin-dir=/var/www/localhost/cgi-bin \
+ --with-search-dir=/var/www/localhost/htdocs/${PN} \
+ --with-image-dir=/var/www/localhost/htdocs/${PN} \
+ --with-image-url-prefix=file:///var/www/localhost/htdocs/${PN} \
+ || die "configure failed"
+
+ emake || die "emake failed"
+}
+
+src_install () {
+ # einstall is required here
+ einstall \
+ SEARCH_DIR="${D}/var/www/localhost/htdocs/${PN}" \
+ CGIBIN_DIR="${D}/var/www/localhost/cgi-bin" \
+ IMAGE_DIR="${D}/var/www/localhost/htdocs/${PN}"
+
+ dodoc ChangeLog COPYING README
+ dohtml -r htdoc
+
+ dosed /etc/${PN}/${PN}.conf
+ dosed /usr/bin/rundig
+
+ # symlink htsearch so it can be easily found. see bug #62087
+ dosym /var/www/localhost/cgi-bin/htsearch /usr/bin/htsearch
+}
diff --git a/www-misc/htdig/htdig-3.2.0_beta6-r1.ebuild b/www-misc/htdig/htdig-3.2.0_beta6-r1.ebuild
new file mode 100644
index 000000000000..a59afaef0477
--- /dev/null
+++ b/www-misc/htdig/htdig-3.2.0_beta6-r1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-misc/htdig/htdig-3.2.0_beta6-r1.ebuild,v 1.1 2006/05/01 13:42:02 rl03 Exp $
+
+inherit eutils flag-o-matic
+
+MY_PV=${PV/_beta/b}
+S=${WORKDIR}/${PN}-${MY_PV}
+
+DESCRIPTION="HTTP/HTML indexing and searching system"
+SRC_URI="http://www.htdig.org/files/${PN}-${MY_PV}.tar.gz"
+HOMEPAGE="http://www.htdig.org"
+KEYWORDS="~x86 ~sparc ~ppc ~mips ~amd64"
+LICENSE="GPL-2"
+
+DEPEND=">=sys-libs/zlib-1.1.3
+ app-arch/unzip"
+
+SLOT="0"
+
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+ epatch ${FILESDIR}/${P}-gcc4.patch
+}
+
+src_compile() {
+ econf \
+ --with-config-dir=/etc/${PN} \
+ --with-default-config-file=/etc/${PN}/${PN}.conf \
+ --with-database-dir=/var/lib/${PN}/db \
+ --with-cgi-bin-dir=/var/www/localhost/cgi-bin \
+ --with-search-dir=/var/www/localhost/htdocs/${PN} \
+ --with-image-dir=/var/www/localhost/htdocs/${PN} \
+ --with-image-url-prefix=file:///var/www/localhost/htdocs/${PN} \
+ || die "configure failed"
+
+ emake || die "emake failed"
+}
+
+src_install () {
+ make DESTDIR=${D} install || die "make install failed"
+
+ dodoc ChangeLog COPYING README
+ dohtml -r htdoc
+
+ dosed /etc/${PN}/${PN}.conf
+ dosed /usr/bin/rundig
+
+ # symlink htsearch so it can be easily found. see bug #62087
+ dosym /var/www/localhost/cgi-bin/htsearch /usr/bin/htsearch
+}