// Copyright (c) 2002 David Muse
// See the COPYING file for more information

#include <rudiments/unixsocketutil.h>
#include <rudiments/rawbuffer.h>

// for NULL
#include <stdlib.h>

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class unixsocketutilprivate {
	friend class unixsocketutil;
	private:
		const char	*_filename;
		sockaddr_un	_sun;
};

unixsocketutil::unixsocketutil() {
	pvt=new unixsocketutilprivate;
	initialize(NULL);
}

unixsocketutil::unixsocketutil(const unixsocketutil &u) {
	pvt=new unixsocketutilprivate;
	pvt->_filename=u.pvt->_filename;
	pvt->_sun=u.pvt->_sun;
}

unixsocketutil &unixsocketutil::operator=(const unixsocketutil &u) {
	if (this!=&u) {
		pvt->_filename=u.pvt->_filename;
		pvt->_sun=u.pvt->_sun;
	}
	return *this;
}

unixsocketutil::~unixsocketutil() {
	delete pvt;
}

void unixsocketutil::initialize(const char *filename) {
	pvt->_filename=filename;
	rawbuffer::zero(&pvt->_sun,sizeof(pvt->_sun));
}

const char *unixsocketutil::_filename() {
	return pvt->_filename;
}

sockaddr_un *unixsocketutil::_sun() {
	return &pvt->_sun;
}

#ifdef RUDIMENTS_NAMESPACE
}
#endif


syntax highlighted by Code2HTML, v. 0.9.1