X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FUN%2FUNAddressing.cc;h=4af13c092583563fc8de8fd008429f660f7b642c;hb=1ad3873b372da6187b1fbc645bf276287d2efb54;hp=763d6674a41e0ff3adb0d04dd3f38057d3455e2e;hpb=f00a102138bcbabdaab1caab1db6a8876463dedc;p=senf.git diff --git a/Socket/Protocols/UN/UNAddressing.cc b/Socket/Protocols/UN/UNAddressing.cc index 763d667..4af13c0 100644 --- a/Socket/Protocols/UN/UNAddressing.cc +++ b/Socket/Protocols/UN/UNAddressing.cc @@ -27,70 +27,73 @@ // Custom includes #include #include -#include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -prefix_ senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path p) + +prefix_ senf::UNSocketAddress::UNSocketAddress() +{} + +prefix_ senf::UNSocketAddress::UNSocketAddress(std::string p) { - chdir(p.branch_path().string().c_str()); -//Check if the unix domain socket already exists... - if(!remove(p.leaf().c_str())) - printf("File already existed and therefore was deleted!\n"); - else - printf("File not found, will be created.\n"); - fflush(stdout); - - sockAddr.sun_family = AF_UNIX; - strcpy(sockAddr.sun_path, p.string().c_str()); + clear(); + ::strncpy(addr_.sun_path, p.c_str(), sizeof(addr_.sun_path)); + addr_.sun_path[sizeof(addr_.sun_path)-1] = 0; } - prefix_ senf::UNSocketAddress fromString(std::string s) +prefix_ senf::UNSocketAddress fromString(std::string s) { - return senf::UNSocketAddress::UNSocketAddress(boost::filesystem::path(s)); + return senf::UNSocketAddress::UNSocketAddress(s); } - prefix_ senf::UNSocketAddress fromPath(boost::filesystem::path p) +prefix_ bool senf::UNSocketAddress::operator==(UNSocketAddress const & other) + const { - return senf::UNSocketAddress::UNSocketAddress(p); + return path() == other.path(); } - prefix_ std::string senf::UNSocketAddress::path() + +prefix_ std::string senf::UNSocketAddress::path() const { - return std::string(sockAddr.sun_path); + return std::string(addr_.sun_path); } -prefix_ sockaddr_un senf::UNSocketAddress::sockaddr() +prefix_ bool senf::UNSocketAddress::boolean_test() + const { - struct sockaddr_un out; - out.sun_family = sockAddr.sun_family; - strcpy(out.sun_path, sockAddr.sun_path); - return out; + return addr_.sun_path[0] != 0; } -prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p() +prefix_ void senf::UNSocketAddress::clear() { - return reinterpret_cast (&sockAddr); + ::memset(&addr_, 0, sizeof(addr_)); + addr_.sun_family = AF_UNIX; } +prefix_ sockaddr * senf::UNSocketAddress::sockaddr_p() +{ + return reinterpret_cast (&addr_); +} prefix_ sockaddr const * senf::UNSocketAddress::sockaddr_p() const { - return reinterpret_cast (&sockAddr); + return reinterpret_cast (&addr_); } prefix_ unsigned senf::UNSocketAddress::sockaddr_len() + const { - return sizeof(sockAddr); + return sizeof(addr_); } -prefix_ std::ostream & operator<<(std::ostream & os, senf::UNSocketAddress::UNSocketAddress const & addr){ +prefix_ std::ostream & operator<<(std::ostream & os, + senf::UNSocketAddress::UNSocketAddress const & addr) +{ os << addr.path(); return os; } - ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ //#include "UNAddressing.mpp"