aboutsummaryrefslogtreecommitdiff
path: root/net/libsocket++
diff options
context:
space:
mode:
authorTilman Keskinoz <arved@FreeBSD.org>2003-03-23 16:23:42 +0000
committerTilman Keskinoz <arved@FreeBSD.org>2003-03-23 16:23:42 +0000
commitda69133c723d24d702010a1d8a9dc0479fb7e573 (patch)
tree24c1dae2efa9e92e83387fbfda5d16f5d072fd93 /net/libsocket++
parente72fccab33b004a1f75ac0bef5482913e4a9e40e (diff)
downloadports-da69133c723d24d702010a1d8a9dc0479fb7e573.tar.gz
ports-da69133c723d24d702010a1d8a9dc0479fb7e573.zip
Notes
Diffstat (limited to 'net/libsocket++')
-rw-r--r--net/libsocket++/Makefile9
-rw-r--r--net/libsocket++/distinfo2
-rw-r--r--net/libsocket++/files/patch-named-sockbuf1347
-rw-r--r--net/libsocket++/pkg-plist2
4 files changed, 1351 insertions, 9 deletions
diff --git a/net/libsocket++/Makefile b/net/libsocket++/Makefile
index 982be4f09187..6dd35aafdf96 100644
--- a/net/libsocket++/Makefile
+++ b/net/libsocket++/Makefile
@@ -7,19 +7,14 @@
#
PORTNAME= libsocket++
-PORTVERSION= 1.12.7
+PORTVERSION= 1.12.8
CATEGORIES= net
-MASTER_SITES= http://members.aon.at/~hstraub/linux/socket++/ \
- ftp://ftp.umsicht.fhg.de/pub/unix/language/C++/class-libraries/ \
- ftp://ftp.par.univie.ac.at/pub/unix/c++/ \
- ftp://jungfrau.ptf.hro.nl/pub/socket/
+MASTER_SITES= http://www.hstraub.at/linux/downloads/src/
DISTNAME= socket++-${PORTVERSION}
MAINTAINER= narvi@haldjas.folklore.ee
COMMENT= A C++ wrapper library to the sockets
-BUILD_DEPENDS= autoconf:${PORTSDIR}/devel/autoconf
-
GNU_CONFIGURE= yes
INSTALLS_SHLIB= yes
USE_AUTOMAKE= yes
diff --git a/net/libsocket++/distinfo b/net/libsocket++/distinfo
index 6d4d5b6473f8..2e2c97eaa244 100644
--- a/net/libsocket++/distinfo
+++ b/net/libsocket++/distinfo
@@ -1 +1 @@
-MD5 (socket++-1.12.7.tar.gz) = 3e0c78862185044d9db43bac537a3aea
+MD5 (socket++-1.12.8.tar.gz) = 5434a145193927f330ddaf7f068cfd43
diff --git a/net/libsocket++/files/patch-named-sockbuf b/net/libsocket++/files/patch-named-sockbuf
new file mode 100644
index 000000000000..605b6dcf5f75
--- /dev/null
+++ b/net/libsocket++/files/patch-named-sockbuf
@@ -0,0 +1,1347 @@
+Index: ChangeLog
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/ChangeLog,v
+retrieving revision 1.12
+diff -u -r1.12 ChangeLog
+--- ChangeLog 6 Dec 2002 17:02:33 -0000 1.12
++++ ChangeLog 6 Mar 2003 16:37:19 -0000
+@@ -1,3 +1,9 @@
++2003-03-06 Herbert Straub <h.straub@aon.at>
++ * Feature: class sockbuf new methods: setname(sockname), getname
++
++ * Feature: all methods of class sockbuf throw error description:
++ method name and sockname
++
+ 2002-12-06 Herbert Straub <h.straub@aon.at>
+ * Bugfix: correcting the COPYING, NEWS and README3 file
+
+Index: configure.in
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/configure.in,v
+retrieving revision 1.6
+diff -u -r1.6 configure.in
+--- configure.in 6 Dec 2002 17:02:33 -0000 1.6
++++ configure.in 6 Mar 2003 15:39:52 -0000
+@@ -12,7 +12,7 @@
+ # ? :+1 : ? == just some internal changes, nothing breaks but might work
+ # better
+ # CURRENT : REVISION : AGE
+-LIBSOCKET_SO_VERSION=0:0:0
++LIBSOCKET_SO_VERSION=1:0:0
+
+ SOCKET_VERSION=1.12.8
+ AC_SUBST(SOCKET_VERSION)
+@@ -48,7 +48,7 @@
+ dnl check for header files
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+-AC_CHECK_HEADERS(string.h memory.h)
++AC_CHECK_HEADERS(string.h memory.h sstream string)
+ AC_CHECK_HEADER(_G_config.h, AC_DEFINE(_S_LIBGXX))
+ AC_LANG_RESTORE
+ AC_HEADER_SYS_WAIT
+Index: socket++/ftp.h
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/ftp.h,v
+retrieving revision 1.1
+diff -u -r1.1 ftp.h
+--- socket++/ftp.h 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/ftp.h 9 Mar 2003 12:18:34 -0000
+@@ -11,7 +11,7 @@
+ #ifndef FTP_H
+ #define FTP_H
+
+-#include <protocol.h>
++#include <socket++/protocol.h>
+ #ifndef WIN32
+ # include <sys/param.h>
+ #else
+Index: socket++/pipestream.h
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/pipestream.h,v
+retrieving revision 1.1
+diff -u -r1.1 pipestream.h
+--- socket++/pipestream.h 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/pipestream.h 9 Mar 2003 12:09:53 -0000
+@@ -11,7 +11,7 @@
+ #ifndef _PIPESTREAM_H
+ #define _PIPESTREAM_H
+
+-#include <sockstream.h>
++#include <socket++/sockstream.h>
+
+ class ipipestream: public isockstream {
+ protected:
+Index: socket++/protocol.h
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/protocol.h,v
+retrieving revision 1.1
+diff -u -r1.1 protocol.h
+--- socket++/protocol.h 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/protocol.h 9 Mar 2003 12:16:57 -0000
+@@ -11,7 +11,7 @@
+ #ifndef PROTOCOL_H
+ #define PROTOCOL_H
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+
+ class protocol: public iosockstream {
+ public:
+Index: socket++/sockstream.cpp
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/sockstream.cpp,v
+retrieving revision 1.1
+diff -u -r1.1 sockstream.cpp
+--- socket++/sockstream.cpp 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/sockstream.cpp 11 Mar 2003 15:40:21 -0000
+@@ -62,6 +62,12 @@
+
+ #include <config.h>
+ #include <socket++/sockstream.h>
++#ifdef HAVE_SSTREAM
++#include <sstream>
++#else
++#include <strstream>
++#endif
++#include <string>
+
+ #ifndef WIN32
+ EXTERN_C_BEGIN
+@@ -317,9 +323,9 @@
+ delete rep;
+ if (c == SOCKET_ERROR)
+ #ifndef WIN32
+- throw sockerr (errno, "sockbuf::~sockbuf");
++ throw sockerr (errno, "sockbuf::~sockbuf", sockname.c_str());
+ #else
+- throw sockerr(WSAGetLastError(), "sockbuf::~sockbuf");
++ throw sockerr(WSAGetLastError(), "sockbuf::~sockbuf", sockname.c_str());
+ #endif
+ }
+ }
+@@ -342,6 +348,13 @@
+ }
+ catch (int wlen) {
+ // write was not completely successful
++#ifdef HAVE_SSTREAM
++ stringstream sb;
++#else
++ strstream sb;
++#endif
++ string err ("sockbuf::sync");
++ err += "(" + sockname + ")";
+ if (wlen) {
+ // reposition unwritten chars
+ char* pto = pbase ();
+@@ -350,8 +363,10 @@
+ while (pfrom < pptr ()) *pto++ = *pfrom++;
+ setp (pbase (), (char_type*) rep->pend);
+ pbump (len);
++ sb << " wlen=(" << wlen << ")";
++ err += sb.rdbuf()->str();
+ }
+- throw sockerr (errno, "sockbuf::sync");
++ throw sockerr (errno, err.c_str ());
+ }
+
+ setp (pbase (), (char_type*) rep->pend);
+@@ -463,19 +478,19 @@
+ void sockbuf::bind (sockAddr& sa)
+ {
+ if (::bind (rep->sock, sa.addr (), sa.size ()) == -1)
+- throw sockerr (errno, "sockbuf::bind");
++ throw sockerr (errno, "sockbuf::bind", sockname.c_str());
+ }
+
+ void sockbuf::connect (sockAddr& sa)
+ {
+ if (::connect(rep->sock, sa.addr (), sa.size()) == -1)
+- throw sockerr (errno, "sockbuf::connect");
++ throw sockerr (errno, "sockbuf::connect", sockname.c_str());
+ }
+
+ void sockbuf::listen (int num)
+ {
+ if (::listen (rep->sock, num) == -1)
+- throw sockerr (errno, "sockbuf::listen");
++ throw sockerr (errno, "sockbuf::listen", sockname.c_str());
+ }
+
+ sockbuf::sockdesc sockbuf::accept (sockAddr& sa)
+@@ -484,7 +499,7 @@
+ int soc = -1;
+ if ((soc = ::accept (rep->sock, sa.addr (), (socklen_t*) // LN
+ &len)) == -1)
+- throw sockerr (errno, "sockbuf::sockdesc");
++ throw sockerr (errno, "sockbuf::sockdesc", sockname.c_str());
+ return sockdesc (soc);
+ }
+
+@@ -492,42 +507,43 @@
+ {
+ int soc = -1;
+ if ((soc = ::accept (rep->sock, 0, 0)) == -1)
+- throw sockerr (errno, "sockbuf::sockdesc");
++ throw sockerr (errno, "sockbuf::sockdesc", sockname.c_str());
+ return sockdesc (soc);
+ }
+
+ int sockbuf::read (void* buf, int len)
+ {
+- if (rep->rtmo != -1 && is_readready (rep->rtmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::read");
++ if (rep->rtmo != -1 && is_readready (rep->rtmo)==0) {
++ throw sockerr (ETIMEDOUT, "sockbuf::read", sockname.c_str());
++ }
+
+ if (rep->oob && atmark ())
+ throw sockoob ();
+
+ int rval = 0;
+ if ((rval = ::read (rep->sock, (char*) buf, len)) == -1)
+- throw sockerr (errno, "sockbuf::read");
++ throw sockerr (errno, "sockbuf::read", sockname.c_str());
+ return rval;
+ }
+
+ int sockbuf::recv (void* buf, int len, int msgf)
+ {
+ if (rep->rtmo != -1 && is_readready (rep->rtmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::recv");
++ throw sockerr (ETIMEDOUT, "sockbuf::recv", sockname.c_str());
+
+ if (rep->oob && atmark ())
+ throw sockoob ();
+
+ int rval = 0;
+ if ((rval = ::recv (rep->sock, (char*) buf, len, msgf)) == -1)
+- throw sockerr (errno, "sockbuf::recv");
++ throw sockerr (errno, "sockbuf::recv", sockname.c_str());
+ return rval;
+ }
+
+ int sockbuf::recvfrom (sockAddr& sa, void* buf, int len, int msgf)
+ {
+ if (rep->rtmo != -1 && is_readready (rep->rtmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::recvfrom");
++ throw sockerr (ETIMEDOUT, "sockbuf::recvfrom", sockname.c_str());
+
+ if (rep->oob && atmark ())
+ throw sockoob ();
+@@ -538,7 +554,7 @@
+ if ((rval = ::recvfrom (rep->sock, (char*) buf, len,
+ msgf, sa.addr (), (socklen_t*) // LN
+ &sa_len)) == -1)
+- throw sockerr (errno, "sockbuf::recvfrom");
++ throw sockerr (errno, "sockbuf::recvfrom", sockname.c_str());
+ return rval;
+ }
+
+@@ -547,7 +563,7 @@
+ // of sockerr.
+ {
+ if (rep->stmo != -1 && is_writeready (rep->stmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::write");
++ throw sockerr (ETIMEDOUT, "sockbuf::write", sockname.c_str());
+
+ int wlen=0;
+ while(len>0) {
+@@ -564,7 +580,7 @@
+ // of sockerr.
+ {
+ if (rep->stmo != -1 && is_writeready (rep->stmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::send");
++ throw sockerr (ETIMEDOUT, "sockbuf::send", sockname.c_str());
+
+ int wlen=0;
+ while(len>0) {
+@@ -581,7 +597,7 @@
+ // of sockerr.
+ {
+ if (rep->stmo != -1 && is_writeready (rep->stmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::sendto");
++ throw sockerr (ETIMEDOUT, "sockbuf::sendto", sockname.c_str());
+
+ int wlen=0;
+ while(len>0) {
+@@ -600,13 +616,13 @@
+ int sockbuf::recvmsg (msghdr* msg, int msgf)
+ {
+ if (rep->rtmo != -1 && is_readready (rep->rtmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::recvmsg");
++ throw sockerr (ETIMEDOUT, "sockbuf::recvmsg", sockname.c_str());
+
+ if (rep->oob && atmark ())
+ throw sockoob ();
+
+ int rval = ::recvmsg(rep->sock, msg, msgf);
+- if (rval == -1) throw sockerr (errno, "sockbuf::recvmsg");
++ if (rval == -1) throw sockerr (errno, "sockbuf::recvmsg", sockname.c_str());
+ return rval;
+ }
+
+@@ -615,7 +631,7 @@
+ // of sockerr.
+ {
+ if (rep->stmo != -1 && is_writeready (rep->stmo)==0)
+- throw sockerr (ETIMEDOUT, "sockbuf::sendmsg");
++ throw sockerr (ETIMEDOUT, "sockbuf::sendmsg", sockname.c_str());
+
+ int wlen = ::sendmsg (rep->sock, msg, msgf);
+ if (wlen == -1) throw 0;
+@@ -648,7 +664,7 @@
+ tv.tv_usec = wp_usec;
+
+ int ret = select (rep->sock+1, &fds, 0, 0, (wp_sec == -1) ? 0: &tv);
+- if (ret == -1) throw sockerr (errno, "sockbuf::is_readready");
++ if (ret == -1) throw sockerr (errno, "sockbuf::is_readready", sockname.c_str());
+ return ret;
+ }
+
+@@ -663,7 +679,7 @@
+ tv.tv_usec = wp_usec;
+
+ int ret = select (rep->sock+1, 0, &fds, 0, (wp_sec == -1) ? 0: &tv);
+- if (ret == -1) throw sockerr (errno, "sockbuf::is_writeready");
++ if (ret == -1) throw sockerr (errno, "sockbuf::is_writeready", sockname.c_str());
+ return ret;
+ }
+
+@@ -678,7 +694,7 @@
+ tv.tv_usec = wp_usec;
+
+ int ret = select (rep->sock+1, 0, 0, &fds, (wp_sec == -1) ? 0: &tv);
+- if (ret == -1) throw sockerr (errno, "sockbuf::is_exceptionpending");
++ if (ret == -1) throw sockerr (errno, "sockbuf::is_exceptionpending", sockname.c_str());
+ return ret;
+ }
+
+@@ -698,21 +714,21 @@
+ shutdown (shut_write);
+ break;
+ }
+- if (::shutdown(rep->sock, sh) == -1) throw sockerr (errno, "sockbuf::shutdown");
++ if (::shutdown(rep->sock, sh) == -1) throw sockerr (errno, "sockbuf::shutdown", sockname.c_str());
+ }
+
+ int sockbuf::getopt (int op, void* buf, int len, int level) const
+ {
+ if (::getsockopt (rep->sock, level, op, (char*) buf, (socklen_t*) // LN
+ &len) == -1)
+- throw sockerr (errno, "sockbuf::getopt");
++ throw sockerr (errno, "sockbuf::getopt", sockname.c_str());
+ return len;
+ }
+
+ void sockbuf::setopt (int op, void* buf, int len, int level) const
+ {
+ if (::setsockopt (rep->sock, level, op, (char*) buf, len) == -1)
+- throw sockerr (errno, "sockbuf::setopt");
++ throw sockerr (errno, "sockbuf::setopt", sockname.c_str());
+ }
+
+ sockbuf::type sockbuf::gettype () const
+@@ -884,11 +900,11 @@
+ #ifndef WIN32
+ int arg;
+ if (::ioctl (rep->sock, SIOCATMARK, &arg) == -1)
+- throw sockerr (errno, "sockbuf::atmark");
++ throw sockerr (errno, "sockbuf::atmark", sockname.c_str());
+ #else
+ unsigned long arg = 0;
+ if (::ioctlsocket(rep->sock, SIOCATMARK, &arg) == SOCKET_ERROR)
+- throw sockerr (WSAGetLastError(), "sockbuf::atmark");
++ throw sockerr (WSAGetLastError(), "sockbuf::atmark", sockname.c_str());
+ #endif // !WIN32
+ return arg!=0;
+ }
+@@ -900,7 +916,7 @@
+ {
+ int arg;
+ if (::ioctl (rep->sock, SIOCGPGRP, &arg) == -1)
+- throw sockerr (errno, "sockbuf::pgrp");
++ throw sockerr (errno, "sockbuf::pgrp", sockname.c_str());
+ return arg;
+ }
+
+@@ -910,7 +926,7 @@
+ {
+ int old = pgrp ();
+ if (::ioctl (rep->sock, SIOCSPGRP, &new_pgrp) == -1)
+- throw sockerr (errno, "sockbuf::pgrp");
++ throw sockerr (errno, "sockbuf::pgrp", sockname.c_str());
+ return old;
+ }
+
+@@ -920,10 +936,10 @@
+ {
+ if (set) {
+ if (::ioctl (rep->sock, FIOCLEX, 0) == -1)
+- throw sockerr (errno, "sockbuf::closeonexec");
++ throw sockerr (errno, "sockbuf::closeonexec", sockname.c_str());
+ } else {
+ if (::ioctl (rep->sock, FIONCLEX, 0) == -1)
+- throw sockerr (errno, "sockbuf::closeonexec");
++ throw sockerr (errno, "sockbuf::closeonexec", sockname.c_str());
+ }
+ }
+ #endif // !WIN32
+@@ -935,10 +951,10 @@
+ long arg;
+ #ifndef WIN32
+ if (::ioctl (rep->sock, FIONREAD, &arg) == -1)
+- throw sockerr (errno, "sockbuf::nread");
++ throw sockerr (errno, "sockbuf::nread", sockname.c_str());
+ #else
+ if (::ioctlsocket (rep->sock, FIONREAD, (unsigned long *) &arg) == SOCKET_ERROR)
+- throw sockerr (WSAGetLastError(), "sockbuf::nread");
++ throw sockerr (WSAGetLastError(), "sockbuf::nread", sockname.c_str());
+ #endif // !WIN32
+ return arg;
+ }
+@@ -959,11 +975,11 @@
+ #ifndef WIN32
+ int arg = set;
+ if (::ioctl (rep->sock, FIONBIO, &arg) == -1)
+- throw sockerr (errno, "sockbuf::nbio");
++ throw sockerr (errno, "sockbuf::nbio", sockname.c_str());
+ #else
+ unsigned long arg = (set)?1:0;
+ if (::ioctlsocket (rep->sock, FIONBIO, &arg) == -1)
+- throw sockerr (WSAGetLastError(), "sockbuf::nbio");
++ throw sockerr (WSAGetLastError(), "sockbuf::nbio", sockname.c_str());
+ #endif // !WIN32
+ }
+
+@@ -974,7 +990,7 @@
+ {
+ int arg = set;
+ if (::ioctl (rep->sock, FIOASYNC, &arg) == -1)
+- throw sockerr (errno, "sockbuf::async");
++ throw sockerr (errno, "sockbuf::async", sockname.c_str());
+ }
+ #endif // !WIN32
+
+Index: socket++/sockstream.h
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/sockstream.h,v
+retrieving revision 1.1
+diff -u -r1.1 sockstream.h
+--- socket++/sockstream.h 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/sockstream.h 11 Mar 2003 15:42:14 -0000
+@@ -26,6 +26,9 @@
+ //
+ // Version: 1.2 2002-07-25 Herbert Straub
+ // Improved Error Handling - extending the sockerr class by cOperation
++// 2003-03-06 Herbert Straub
++// adding sockbuf::getname und setname (sockname)
++// sockbuf methods throw method name + sockname
+
+ #ifndef _SOCKSTREAM_H
+ #define _SOCKSTREAM_H
+@@ -35,6 +38,7 @@
+ #include <ctype.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <string>
+ #include <cstdio>
+ #ifndef WIN32
+ # include <sys/types.h>
+@@ -47,8 +51,6 @@
+ # pragma comment(lib, "Wininet")
+ #endif
+
+-#define ERRTXT_LENGTH 50
+-
+ using namespace std;
+
+ #ifdef __linux__
+@@ -58,22 +60,32 @@
+ // socket exception classes
+ class sockerr {
+ int err;
+- char cOperation[ERRTXT_LENGTH];
++ string text;
+ public:
+ sockerr (int e, const char *operation = NULL): err (e) {
+- if (operation == NULL) {
+- cOperation[0] = '\0';
+- } else if (strlen (operation) < sizeof (cOperation)-1) {
+- strcpy (cOperation, operation);
+- } else {
+- strncpy (cOperation, operation, sizeof(cOperation)-1);
+- cOperation[sizeof(cOperation)-1] = '\0';
++ if (operation != NULL) {
++ text = operation;
++ }
++ }
++ sockerr (int e, const char *operation, const char *specification) {
++ if (operation != NULL)
++ text = operation;
++ if (specification != NULL) {
++ text += "(";
++ text += specification;
++ text += ")";
+ }
+-
++ }
++ sockerr (int e, const string &operation): err (e) {
++ text = operation;
++ }
++ sockerr (const sockerr &O) {
++ err = O.err;
++ text = O.text;
+ }
+
+ const char* what () const { return "sockerr"; }
+- const char* operation () const { return cOperation; }
++ const char* operation () const { return text.c_str(); }
+
+ // int errno () const { return err; }
+ int serrno () const { return err; } // LN
+@@ -187,6 +199,7 @@
+ };
+
+ sockcnt* rep; // counts the # refs to sock
++ string sockname; // name of sockbuf - Herbert Straub
+
+ #if 0
+ virtual sockbuf* setbuf (char_type* s, int_type* n);
+@@ -283,7 +296,11 @@
+ bool atmark () const;
+ long nread () const;
+ long howmanyc () const;
+- void nbio (bool set=true) const;
++ void nbio (bool set=true) const;
++ inline void setname (const char *name);
++ inline void setname (const string &name);
++ inline const string& getname ();
++
+ #ifndef WIN32
+ void async (bool set=true) const;
+ int pgrp () const;
+@@ -328,5 +345,20 @@
+ // manipulators
+ extern osockstream& crlf (osockstream&);
+ extern osockstream& lfcr (osockstream&);
++
++// inline
++
++void sockbuf::setname (const char *name)
++{
++ sockname = name;
++}
++void sockbuf::setname (const string &name)
++{
++ sockname = name;
++}
++const string& sockbuf::getname ()
++{
++ return sockname;
++}
+
+ #endif // _SOCKSTREAM_H
+Index: socket++/sockunix.h
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/socket++/sockunix.h,v
+retrieving revision 1.1
+diff -u -r1.1 sockunix.h
+--- socket++/sockunix.h 25 Nov 2002 11:47:51 -0000 1.1
++++ socket++/sockunix.h 9 Mar 2003 12:02:36 -0000
+@@ -11,7 +11,7 @@
+ #ifndef _SOCKUNIX_H
+ #define _SOCKUNIX_H
+
+-#include <sockstream.h>
++#include <socket++/sockstream.h>
+ #include <sys/un.h>
+
+ class sockunixaddr: public sockAddr, public sockaddr_un {
+Index: test/Makefile.in
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/Makefile.in,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 Makefile.in
+--- test/Makefile.in 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/Makefile.in 11 Mar 2003 16:45:06 -0000
+@@ -7,7 +7,7 @@
+ CXXFLAGS = @CXXFLAGS@
+ LDFLAGS = @LDFLAGS@
+
+-LIBS = -L$(srcdir)/.. -lsocket++ @NETWORK_LIBS@
++LIBS = -L$(srcdir)/.. -L$(srcdir)/../socket++/.libs -lsocket++ @NETWORK_LIBS@
+
+ TESTSRCS = tdunread.C tdunwrite.C \
+ tdinread.C tdinwrite.C \
+@@ -29,7 +29,8 @@
+ tcftp.C \
+ tbind-0.C tbind-1.C \
+ tsig-0.C \
+- test_sockerr.C
++ test_sockerr.C \
++ simple_httpd.C
+
+ TESTOBJS = $(TESTSRCS:.C=.o)
+ TESTS = $(TESTSRCS:.C=)
+@@ -39,7 +40,7 @@
+ .SUFFIXES: .o .C .cc
+
+ .cc.o .C.o:
+- $(CXX) -c $(CXXFLAGS) -I$(srcdir) -I$(srcdir)/.. $<
++ $(CXX) -c $(CXXFLAGS) -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/socket++ $<
+
+ .PHONY: check
+ check: testall.out
+Index: test/simple_httpd.C
+===================================================================
+RCS file: test/simple_httpd.C
+diff -N test/simple_httpd.C
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ test/simple_httpd.C 11 Mar 2003 16:39:54 -0000
+@@ -0,0 +1,150 @@
++/* simple_httpd.C
++ * -- Copyright (C) 2003 by Herbert Straub
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <config.h>
++#include <socket++/fork.h>
++#include <socket++/sig.h>
++#include <socket++/sockinet.h>
++#include <sys/stat.h>
++#include <iostream>
++#include <fstream>
++#ifdef HAVE_SSTREAM
++#include <sstream>
++#else
++#include <strstream>
++#endif
++
++int process_request (iosockinet *sock);
++void get_filesize (const char *name, string &buffer);
++
++int main (int argc, char **argv)
++{
++ class hnd: public sig::hnd {
++ public:
++ int id;
++ hnd (int signo): sig::hnd (signo), id (signo) {};
++ hnd (int signo, int i): sig::hnd (signo), id (1) {};
++ void operator () (int s) {
++ cout << "handler for " << id << endl;
++ }
++ };
++ sockinetbuf sin (sockbuf::sock_stream);
++ Fork *pF;
++
++ sin.bind ();
++
++ cout << "localhost = " << sin.localhost() << endl;
++ cout << "localport = " << sin.localport() << endl;
++
++ sin.listen ();
++
++ for (;;) {
++ iosockinet *sock;
++ sock = new iosockinet (sin.accept ());
++ pF = new Fork (0, 1);
++ if (pF->is_child ()) {
++ sock->rdbuf()->keepalive (1);
++ process_request (sock);
++ return (0);
++ }
++ }
++}
++
++int process_request (iosockinet *sock)
++{
++ string buffer;
++ string filename;
++ ifstream file;
++
++ try {
++ while (1) {
++ getline (*sock, buffer);
++ buffer[buffer.length()-1] = '\n';
++ cout << "buffer: " << buffer << endl;
++ if (sock->eof())
++ break;
++ if (buffer.compare (0, 4, "quit") == 0)
++ break;
++ if (buffer.length() == 0)
++ break;
++ if (buffer[0] == '\n')
++ break;
++ if (buffer.compare (0, 3, "GET") == 0)
++ filename.assign (buffer, 4, buffer.rfind (" HTTP")-3);
++ }
++ }
++ catch (sockerr s) {
++ cout << "catched " << endl;
++ goto END;
++ }
++
++ //filename.insert (0, ".");
++ filename.replace (filename.length()-1, 1, "");
++ cout << "Filename: " << filename << endl;
++ file.open (filename.c_str());
++ if (file.bad() || !file.is_open() || !file.good()) {
++ cout << "Error opening file: " << filename << endl;
++ goto END;
++ }
++ *sock << "HTTP/1.1 200 OK\r\n";
++ *sock << "Server: socket++ Testserver\r\n";
++ get_filesize (filename.c_str(), buffer);
++ *sock << "Content-Length: " << buffer << "\r\n";
++ *sock << "Connection: close\r\n";
++ *sock << "Content-Type: plain/text; charset=iso-8859-1\r\n";
++ *sock << "\r\n";
++ sock->flush();
++ try {
++ for (getline(file, buffer); !file.eof(); getline(file,buffer)) {
++ cout << "Sending Buffer: " << buffer << endl;
++ *sock << buffer << "\r\n";
++ }
++ sock->flush();
++ }
++ catch (sockerr e) {
++ cout << "Catched sockerr" << endl;
++ }
++ file.close ();
++END:
++ try {
++ sock->rdbuf()->shutdown(sockbuf::shut_readwrite);
++ }
++ catch (...)
++ {
++ // if the client break the connection, then
++ // the shutdown method throws sockerr
++ }
++ delete sock;
++
++ return 0;
++}
++
++void get_filesize (const char *name, string &buffer)
++{
++ struct stat buf;
++#ifdef HAVE_SSTREAM
++ stringstream sb;
++#else
++ strstream sb;
++#endif
++
++ if (stat (name, &buf) == -1)
++ buf.st_size = 0;
++ sb << buf.st_size;
++ buffer = sb.rdbuf()->str();
++}
+Index: test/tbind-0.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tbind-0.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tbind-0.C
+--- test/tbind-0.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tbind-0.C 9 Mar 2003 12:19:06 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+
+ int main ()
+ {
+Index: test/tbind-1.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tbind-1.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tbind-1.C
+--- test/tbind-1.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tbind-1.C 9 Mar 2003 12:19:25 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+
+ int main ()
+ {
+Index: test/tcecho.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tcecho.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tcecho.C
+--- test/tcecho.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tcecho.C 9 Mar 2003 12:17:17 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <echo.h>
++#include <socket++/echo.h>
+ #include <stdlib.h>
+
+ int main (int ac, char** av)
+Index: test/tcftp.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tcftp.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tcftp.C
+--- test/tcftp.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tcftp.C 9 Mar 2003 12:18:10 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <ftp.h>
++#include <socket++/ftp.h>
+
+ // sunos does not prototype this in stdio.h
+ extern "C" char* getpass (char* prompt);
+Index: test/tcsmtp.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tcsmtp.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tcsmtp.C
+--- test/tcsmtp.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tcsmtp.C 9 Mar 2003 12:17:43 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <smtp.h>
++#include <socket++/smtp.h>
+ #include <stdio.h>
+ #include <pwd.h>
+ #include <unistd.h>
+Index: test/tdinread.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tdinread.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tdinread.C
+--- test/tdinread.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tdinread.C 9 Mar 2003 12:03:13 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+
+ int main(int ac, char** av)
+ {
+Index: test/tdinwrite.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tdinwrite.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tdinwrite.C
+--- test/tdinwrite.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tdinwrite.C 9 Mar 2003 12:03:35 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+
+Index: test/tdunread.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tdunread.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tdunread.C
+--- test/tdunread.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tdunread.C 9 Mar 2003 12:05:21 -0000
+@@ -8,7 +8,8 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockunix.h>
++#include <iostream>
++#include <socket++/sockunix.h>
+ #include <unistd.h>
+ #include <stdio.h> // solaris2.3 perror is here
+ #include <sys/stat.h> // solaris 2.3 chmod is here
+Index: test/tdunwrite.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tdunwrite.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tdunwrite.C
+--- test/tdunwrite.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tdunwrite.C 9 Mar 2003 12:02:55 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockunix.h>
++#include <socket++/sockunix.h>
+ #include <stdlib.h>
+
+ void terminate (void) { exit (1); }
+Index: test/test_sockerr.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/test_sockerr.C,v
+retrieving revision 1.1
+diff -u -r1.1 test_sockerr.C
+--- test/test_sockerr.C 8 Oct 2002 12:37:31 -0000 1.1
++++ test/test_sockerr.C 9 Mar 2003 12:20:20 -0000
+@@ -17,7 +17,9 @@
+ */
+
+
+-#include <sockstream.h>
++#include <socket++/sockstream.h>
++
++void f1 ();
+
+ main ()
+ {
+@@ -31,4 +33,18 @@
+ } catch (...) {
+ cout << "Catching void" << endl;
+ }
++
++ try {
++ f1();
++ } catch (sockerr e) {
++ cout << "Catching sockeer with " << e.serrno () << " and "
++ << e.operation () << endl;
++ } catch (...) {
++ cout << "Catching void" << endl;
++ }
++}
++
++void f1 ()
++{
++ throw (sockerr (311, "Test Error", "f1"));
+ }
+Index: test/testall.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/testall.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 testall.C
+--- test/testall.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/testall.C 9 Mar 2003 12:12:19 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
+ #include <unistd.h>
+ #include <stdio.h>
+
+Index: test/tfork.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tfork.C,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 tfork.C
+--- test/tfork.C 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/tfork.C 9 Mar 2003 12:14:58 -0000
+@@ -8,7 +8,7 @@
+ // Version: 12Jan97 1.11
+
+ #include <iostream>
+-#include <Fork.h>
++#include <socket++/fork.h>
+
+ using namespace std;
+
+Index: test/tfork0.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tfork0.C,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 tfork0.C
+--- test/tfork0.C 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/tfork0.C 9 Mar 2003 12:15:26 -0000
+@@ -8,7 +8,7 @@
+ // Version: 12Jan97 1.11
+
+ #include <iostream>
+-#include <Fork.h>
++#include <socket++/fork.h>
+
+ using namespace std;
+
+Index: test/thostnames.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/thostnames.C,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 thostnames.C
+--- test/thostnames.C 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/thostnames.C 9 Mar 2003 12:14:05 -0000
+@@ -26,7 +26,7 @@
+ // Test bind and improved Error Handling
+
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <ctype.h>
+ #include <string.h>
+
+@@ -51,7 +51,9 @@
+ return 1;
+ }
+
++ sio.rdbuf()->setname ("Testsocket");
+ cout << "rdbuf: " << (unsigned int) sio.rdbuf() << "\n";
++ cout << "socketname: " << sio.rdbuf()->getname() << endl;
+
+ try {
+ sockinetaddr addrInterface (av[3]);
+Index: test/tnntp.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tnntp.C,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 tnntp.C
+--- test/tnntp.C 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/tnntp.C 9 Mar 2003 12:13:04 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <stdlib.h>
+
+ static int send_cmd(const char*, iosockstream&);
+@@ -16,7 +16,7 @@
+ int main()
+ {
+ iosockinet sio(sockbuf::sock_stream);
+- sio->connect("news.xund.magwien.gv.at", "nntp", "tcp");
++ sio->connect("localhost", "nntp", "tcp");
+
+ send_cmd(0, sio);
+
+Index: test/tpipe.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tpipe.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tpipe.C
+--- test/tpipe.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tpipe.C 9 Mar 2003 12:09:24 -0000
+@@ -8,7 +8,8 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
++#include <iostream>
+
+
+ int main(int ac, char** av)
+Index: test/tpopen-ftp.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tpopen-ftp.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tpopen-ftp.C
+--- test/tpopen-ftp.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tpopen-ftp.C 9 Mar 2003 12:11:49 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
+
+ int main()
+ {
+Index: test/tpopen-lpc.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tpopen-lpc.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tpopen-lpc.C
+--- test/tpopen-lpc.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tpopen-lpc.C 9 Mar 2003 12:11:01 -0000
+@@ -7,7 +7,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
+
+ int main()
+ {
+Index: test/tpopen.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tpopen.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tpopen.C
+--- test/tpopen.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tpopen.C 9 Mar 2003 12:10:39 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
+ #include <unistd.h>
+
+ int main()
+Index: test/tsecho.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsecho.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsecho.C
+--- test/tsecho.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsecho.C 9 Mar 2003 12:15:59 -0000
+@@ -11,7 +11,7 @@
+ // Version: 12Jan97 1.11
+
+
+-#include <echo.h>
++#include <socket++/echo.h>
+ #include <stdlib.h>
+
+ int main (int ac, char** av)
+Index: test/tsendfiles.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsendfiles.C,v
+retrieving revision 1.1.1.2
+diff -u -r1.1.1.2 tsendfiles.C
+--- test/tsendfiles.C 8 Oct 2002 11:47:58 -0000 1.1.1.2
++++ test/tsendfiles.C 9 Mar 2003 12:13:45 -0000
+@@ -9,7 +9,7 @@
+
+
+ #include <fstream>
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <pwd.h>
+ #include <stdio.h>
+ #include <unistd.h>
+Index: test/tsig-0.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsig-0.C,v
+retrieving revision 1.3
+diff -u -r1.3 tsig-0.C
+--- test/tsig-0.C 15 Nov 2002 21:32:22 -0000 1.3
++++ test/tsig-0.C 9 Mar 2003 13:44:59 -0000
+@@ -7,7 +7,7 @@
+ // with no express or implied warranty.
+
+ #include <iostream>
+-#include <sig.h>
++#include <socket++/sig.h>
+ #include <unistd.h>
+
+ using namespace std;
+Index: test/tsinread.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsinread.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsinread.C
+--- test/tsinread.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsinread.C 9 Mar 2003 12:07:28 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <unistd.h>
+
+ static void process_input (iosockinet& s);
+Index: test/tsinwrite.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsinwrite.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsinwrite.C
+--- test/tsinwrite.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsinwrite.C 9 Mar 2003 12:08:17 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <errno.h>
+Index: test/tsmtp.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsmtp.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsmtp.C
+--- test/tsmtp.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsmtp.C 11 Mar 2003 15:46:52 -0000
+@@ -7,38 +7,45 @@
+ // with no express or implied warranty.
+ //
+ // Version: 12Jan97 1.11
++// 2003-03-06 Herbert Straub: variable from and to
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+ #include <stdio.h>
++#include <string>
+
+ static void send_cmd(iosockstream&, const char* cmd=0);
+ static void get_text(iosockstream&);
+
+ int main(int ac, char** av)
+ {
+- if (ac != 3) {
+- cerr << "USAGE: " << av[0] << " hostname userid\n";
++ if (ac != 4) {
++ cerr << "USAGE: " << av[0] << " hostname from to\n";
+ return 1;
+ }
+
++ try {
+ iosockinet sio (sockbuf::sock_stream);
++ sio.rdbuf()->setname ("smtp socket");
++ string buffer;
+
+ sio->connect(av[1], "smtp", "tcp");
+
+- send_cmd(sio, 0);
++ //send_cmd(sio, 0);
+ send_cmd(sio, "HELO kelvin.seas.virginia.edu");
+ send_cmd(sio, "HELP");
+- send_cmd(sio, "MAIL FROM:<test@test>");
+-
+- char buf[512];
+- sprintf(buf, "RCPT TO:%s", av[2]);
+- send_cmd(sio, buf);
++ buffer = "MAIL FROM: ";
++ buffer += av[2];
++ send_cmd(sio, buffer.c_str());
++
++ buffer = "RCPT TO: ";
++ buffer += av[3];
++ send_cmd(sio, buffer.c_str());
+
+ send_cmd(sio, "DATA");
+ cout << "terminate your input with cntrl-D\n\n";
+- while(cin.getline(buf, 511)) {
+- if (buf[0] == '.') sio << '.';
+- sio << buf << "\r\n";
++ while(getline(cin, buffer)) {
++ if (buffer[0] == '.') sio << '.';
++ sio << buffer << "\r\n";
+ }
+ sio << "\r\n.\r\n" << flush;
+ send_cmd(sio, 0);
+@@ -47,6 +54,16 @@
+ send_cmd(sio, "HELP");
+
+ send_cmd(sio, "QUIT");
++ }
++ catch (sockerr err) {
++ cout << "catched"<< endl;
++ cout << "catched sockerr: " << err.serrno()
++ << " : " << err.operation ()
++ << endl;
++ }
++ catch (...) {
++ cout << "unknown exception" << endl;
++ }
+
+ return 0;
+ }
+@@ -61,11 +78,17 @@
+
+ void get_text(iosockstream& s)
+ {
+- char buf[256];
+- int tmo = s->recvtimeout(1); // wait for 1 sec before timing out
+- while ( s.getline(buf, 255) ) {
+- if (buf[0] == '.' && buf[1] == '\r' && buf[2] == '\n') break;
+- cout << buf << endl;
++ string buffer;
++ int tmo = s->recvtimeout(2); // wait for 1 sec before timing out
++ try { // FIXME: Straub debug
++ while ( getline(s, buffer) ) {
++ if (buffer[0] == '.' && buffer[1] == '\r' && buffer[2] == '\n')
++ break;
++ cout << buffer << endl;
++ }
++ }
++ catch (sockerr e) {
++ cout << "catched sockerr" << endl;
+ }
+ if ( !s.eof() ) s.clear();
+ s->recvtimeout(tmo); //reset timeout to the previous value
+Index: test/tsockpair.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsockpair.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsockpair.C
+--- test/tsockpair.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsockpair.C 9 Mar 2003 12:10:18 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <pipestream.h>
++#include <socket++/pipestream.h>
+
+ int main(int ac, char** av)
+ {
+Index: test/tsunread.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsunread.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsunread.C
+--- test/tsunread.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsunread.C 9 Mar 2003 12:06:46 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockunix.h>
++#include <socket++/sockunix.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <sys/stat.h>
+Index: test/tsunwrite.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/tsunwrite.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 tsunwrite.C
+--- test/tsunwrite.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/tsunwrite.C 9 Mar 2003 12:07:04 -0000
+@@ -8,7 +8,7 @@
+ //
+ // Version: 12Jan97 1.11
+
+-#include <sockunix.h>
++#include <socket++/sockunix.h>
+
+ int main(int ac, char** av)
+ {
+Index: test/twhois.C
+===================================================================
+RCS file: /home/stb/products/socket++/my_cvs/socket++/test/twhois.C,v
+retrieving revision 1.1.1.1
+diff -u -r1.1.1.1 twhois.C
+--- test/twhois.C 8 Oct 2002 11:43:30 -0000 1.1.1.1
++++ test/twhois.C 9 Mar 2003 12:14:27 -0000
+@@ -8,7 +8,7 @@
+ // Version: 12Jan97 1.11
+
+
+-#include <sockinet.h>
++#include <socket++/sockinet.h>
+
+ int main(int ac, char** av)
+ {
diff --git a/net/libsocket++/pkg-plist b/net/libsocket++/pkg-plist
index ed534ed687e8..7e2c5412aa8d 100644
--- a/net/libsocket++/pkg-plist
+++ b/net/libsocket++/pkg-plist
@@ -1,5 +1,5 @@
lib/libsocket++.a
-lib/libsocket++.so.0
+lib/libsocket++.so.1
lib/libsocket++.so
include/socket++/fork.h
include/socket++/echo.h