aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rfsv.cc
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2000-08-07 23:42:40 +0000
committerFritz Elfert <felfert@to.com>2000-08-07 23:42:40 +0000
commit68d5fd192fee358ad195c32b47333f8f87ae13f2 (patch)
tree59f865b9679830a006c5c35fb13dcf8f81b85099 /lib/rfsv.cc
parent50dee0db8d5117ed3b9691140ceb02d8aac292d1 (diff)
downloadplptools-68d5fd192fee358ad195c32b47333f8f87ae13f2.tar.gz
plptools-68d5fd192fee358ad195c32b47333f8f87ae13f2.tar.bz2
plptools-68d5fd192fee358ad195c32b47333f8f87ae13f2.zip
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)
Diffstat (limited to 'lib/rfsv.cc')
-rw-r--r--lib/rfsv.cc65
1 files changed, 65 insertions, 0 deletions
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::errs> 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);
+}
+