aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rfsv16.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rfsv16.cc')
-rw-r--r--lib/rfsv16.cc33
1 files changed, 15 insertions, 18 deletions
diff --git a/lib/rfsv16.cc b/lib/rfsv16.cc
index fdec2e7..26a153b 100644
--- a/lib/rfsv16.cc
+++ b/lib/rfsv16.cc
@@ -34,7 +34,6 @@
#include <time.h>
#include <string>
-#include "bool.h"
#include "rfsv16.h"
#include "bufferstore.h"
#include "ppsocket.h"
@@ -181,7 +180,7 @@ closedir(rfsvDirhandle &dH) {
}
Enum<rfsv::errs> rfsv16::
-readdir(rfsvDirhandle &dH, bufferStore &s) {
+readdir(rfsvDirhandle &dH, PlpDirent &e) {
Enum<rfsv::errs> res = E_PSI_GEN_NONE;
if (dH.b.getLen() < 17) {
@@ -198,32 +197,30 @@ readdir(rfsvDirhandle &dH, bufferStore &s) {
cerr << "dir: not version 2" << endl;
return E_PSI_GEN_FAIL;
}
- long attr = attr2std((long)dH.b.getWord(2));
- long size = dH.b.getDWord(4);
- PsiTime *date = new PsiTime((time_t)dH.b.getDWord(8));
- const char *name = dH.b.getString(16);
-
- dH.b.discardFirstBytes(17+strlen(name));
-
- s.init();
- s.addDWord((unsigned long)date);
- s.addDWord(size);
- s.addDWord(attr);
- s.addStringT(name);
+ e.attr = attr2std((long)dH.b.getWord(2));
+ e.size = dH.b.getDWord(4);
+ e.time = PsiTime((time_t)dH.b.getDWord(8));
+ e.name = dH.b.getString(16);
+ e.uid[0] = e.uid[1] = e.uid[2] = 0;
+ e.attrstr = attr2String(e.attr);
+
+ dH.b.discardFirstBytes(17 + e.name.length());
+
}
return res;
}
Enum<rfsv::errs> rfsv16::
-dir(const char *name, bufferArray &files)
+dir(const char *name, PlpDir &files)
{
rfsvDirhandle h;
+ files.clear();
Enum<rfsv::errs> res = opendir(PSI_A_HIDDEN | PSI_A_SYSTEM | PSI_A_DIR, name, h);
while (res == E_PSI_GEN_NONE) {
- bufferStore b;
- res = readdir(h, b);
+ PlpDirent e;
+ res = readdir(h, e);
if (res == E_PSI_GEN_NONE)
- files += b;
+ files.push_back(e);
}
closedir(h);
if (res == E_PSI_FILE_EOF)