]> source.dussan.org Git - tigervnc.git/commitdiff
Code improvements.
authorDennis Syrovatsky <dennis@tightvnc.com>
Thu, 10 Nov 2005 08:10:12 +0000 (08:10 +0000)
committerDennis Syrovatsky <dennis@tightvnc.com>
Thu, 10 Nov 2005 08:10:12 +0000 (08:10 +0000)
Added code for FTMsgWriter::writeFileListRqst(...) method.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@397 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/FTMsgWriter.cxx
vncviewer/FTMsgWriter.h

index 7f22390d75ca54b2691688890008f07a789f99fe..0a9f4dfa9ec051dc41248e5291bc5a22d95f7459 100644 (file)
@@ -36,10 +36,22 @@ FTMsgWriter::~FTMsgWriter()
 }
 
 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 @@ FTMsgWriter::writeFileDeleteRqst(unsigned short nameLen, char *pName)
 {
   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);
+}
index a7026f16f7f70457fb07b864922f1880657d485c..7c832dbd1778c02c7d15366f1534a2675fb5c2bc 100644 (file)
@@ -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 @@ namespace rfb {
       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 @@ namespace rfb {
 
     private:
       rdr::OutStream *m_pOutStream;
+
+      int convertToUnixPath(char *path);
     };
   }
 }