From 68d5fd192fee358ad195c32b47333f8f87ae13f2 Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Mon, 7 Aug 2000 23:42:40 +0000 Subject: General cleanup: - Corrected some operators of bufferArray - Added more constructors to PsiTime - Added one more fallback for Timezone calculation in PsiTime - Use PsiTime in rfsv - Moved some common methods from rfsv16/32 to rfsv - Added more kdoc comments. - Made interface more robust (added const whereever possible, changed pointer arguments to references) --- lib/rfsv.cc | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'lib/rfsv.cc') diff --git a/lib/rfsv.cc b/lib/rfsv.cc index 0b7fd42..cd13cb3 100644 --- a/lib/rfsv.cc +++ b/lib/rfsv.cc @@ -1,4 +1,6 @@ #include "rfsv.h" +#include "ppsocket.h" +#include "bufferstore.h" #include "Enum.h" ENUM_DEFINITION(rfsv::errs, rfsv::E_PSI_GEN_NONE) { @@ -78,3 +80,66 @@ ENUM_DEFINITION(rfsv::errs, rfsv::E_PSI_GEN_NONE) { stringRep.add(rfsv::E_PSI_INTERNAL, "libplp internal error"); } +const char *rfsv::getConnectName(void) { + return "SYS$RFSV"; +} + +rfsv::~rfsv() { + bufferStore a; + a.addStringT("Close"); + if (status == E_PSI_GEN_NONE) + skt->sendBufferStore(a); + skt->closeSocket(); +} + +void rfsv::reconnect(void) +{ + skt->closeSocket(); + skt->reconnect(); + serNum = 0; + reset(); +} + +void rfsv::reset(void) { + bufferStore a; + status = E_PSI_FILE_DISC; + a.addStringT(getConnectName()); + if (skt->sendBufferStore(a)) { + if (skt->getBufferStore(a) == 1) { + if (!strcmp(a.getString(0), "Ok")) + status = E_PSI_GEN_NONE; + } + } +} + +Enum rfsv::getStatus(void) { + return status; +} + +// beware this returns static data +const char * const rfsv:: +attr2String(const long attr) +{ + static char buf[11]; + buf[0] = ((attr & PSI_A_DIR) ? 'd' : '-'); + buf[1] = ((attr & PSI_A_READ) ? 'r' : '-'); + buf[2] = ((attr & PSI_A_RDONLY) ? '-' : 'w'); + buf[3] = ((attr & PSI_A_HIDDEN) ? 'h' : '-'); + buf[4] = ((attr & PSI_A_SYSTEM) ? 's' : '-'); + buf[5] = ((attr & PSI_A_ARCHIVE) ? 'a' : '-'); + buf[6] = ((attr & PSI_A_VOLUME) ? 'v' : '-'); + + // EPOC + buf[7] = ((attr & PSI_A_NORMAL) ? 'n' : '-'); + buf[8] = ((attr & PSI_A_TEMP) ? 't' : '-'); + buf[9] = ((attr & PSI_A_COMPRESSED) ? 'c' : '-'); + + // SIBO + buf[7] = ((attr & PSI_A_EXEC) ? 'x' : buf[7]); + buf[8] = ((attr & PSI_A_STREAM) ? 'b' : buf[8]); + buf[9] = ((attr & PSI_A_TEXT) ? 't' : buf[9]); + + buf[10] = '\0'; + return (char *) (&buf); +} + -- cgit v1.2.3