Code improvements.
Added code for FTMsgWriter::writeFileListRqst(...) method.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@397 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/FTMsgWriter.cxx b/vncviewer/FTMsgWriter.cxx
index 7f22390..0a9f4df 100644
--- a/vncviewer/FTMsgWriter.cxx
+++ b/vncviewer/FTMsgWriter.cxx
@@ -36,10 +36,22 @@
}
bool
-FTMsgWriter::writeFileListRqst(unsigned short dirNameSize, char *pDirName,
- int dest, unsigned char flags)
+FTMsgWriter::writeFileListRqst(char *pDirName, bool bDirOnly)
{
- return false;
+ char dirName[FT_FILENAME_SIZE];
+ strcpy(dirName, pDirName);
+ int len = convertToUnixPath(dirName);
+ if (len <= 0) return false;
+
+ unsigned char flags = 0;
+ if (bDirOnly) flags = 0x10;
+
+ m_pOutStream->writeU8(msgTypeFileListRequest);
+ m_pOutStream->writeU8(flags);
+ m_pOutStream->writeU16(len);
+ m_pOutStream->writeBytes((void *)dirName, len);
+
+ return true;
}
@@ -105,3 +117,18 @@
{
return false;
}
+
+int
+FTMsgWriter::convertToUnixPath(char *path)
+{
+ int len = strlen(path);
+ if (len >= FT_FILENAME_SIZE) return -1;
+ if (len == 0) {strcpy(path, "/"); return 1;}
+ for (int i = (len - 1); i >= 0; i--) {
+ if (path[i] == '\\') path[i] = '/';
+ path[i+1] = path[i];
+ }
+ path[len + 1] = '\0';
+ path[0] = '/';
+ return strlen(path);
+}
diff --git a/vncviewer/FTMsgWriter.h b/vncviewer/FTMsgWriter.h
index a7026f1..7c832db 100644
--- a/vncviewer/FTMsgWriter.h
+++ b/vncviewer/FTMsgWriter.h
@@ -26,6 +26,8 @@
#include <rdr/types.h>
#include <rdr/OutStream.h>
+#include <rfb/msgTypes.h>
+#include <rfb/fttypes.h>
namespace rfb {
namespace win32 {
@@ -35,8 +37,7 @@
FTMsgWriter(rdr::OutStream *pOS);
~FTMsgWriter();
- bool writeFileListRqst(unsigned short dirNameSize, char *pDirName,
- int dest, unsigned char flags);
+ bool writeFileListRqst(char *pDirName, bool bDirOnly);
bool writeFileDownloadCancel(unsigned short reasonLen, char *pReason);
bool writeFileDownloadRqst(unsigned short filenameLen, char *pFilename,
@@ -57,6 +58,8 @@
private:
rdr::OutStream *m_pOutStream;
+
+ int convertToUnixPath(char *path);
};
}
}