summaryrefslogtreecommitdiffstats
path: root/libvncserver/tightvnc-filetransfer/filelistinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvncserver/tightvnc-filetransfer/filelistinfo.c')
-rw-r--r--libvncserver/tightvnc-filetransfer/filelistinfo.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/libvncserver/tightvnc-filetransfer/filelistinfo.c b/libvncserver/tightvnc-filetransfer/filelistinfo.c
new file mode 100644
index 0000000..8b482a1
--- /dev/null
+++ b/libvncserver/tightvnc-filetransfer/filelistinfo.c
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2005 Novell, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, contact Novell, Inc.
+ *
+ * To contact Novell about this file by physical or electronic mail,
+ * you may find current contact information at www.novell.com
+ *
+ * Author : Rohit Kumar
+ * Email ID : rokumar@novell.com
+ * Date : 14th July 2005
+ */
+
+
+#include <stdio.h>
+#include "rfb/rfb.h"
+#include "filelistinfo.h"
+
+
+/* This method is used for debugging purpose */
+void
+DisplayFileList(FileListInfo fli)
+{
+ int i = 0;
+ if((fli.pEntries == NULL) || (fli.numEntries == 0)) return;
+
+ rfbLog("DISPLAYING FILE NAMES IN THE LIST ...START\n\n");
+ rfbLog("Numer of entries:: %d\n", fli.numEntries);
+ for(i = 0; i < fli.numEntries; i++)
+ rfbLog("file[%d]\t<%s>\n", i, fli.pEntries[i].name);
+ rfbLog("DISPLAYING FILE NAMES IN THE LIST ...END\n\n");
+}
+
+
+int
+AddFileListItemInfo(FileListInfoPtr fileListInfoPtr, char* name,
+ unsigned int size, unsigned int data)
+{
+ FileListItemInfoPtr fileListItemInfoPtr = (FileListItemInfoPtr)
+ calloc((fileListInfoPtr->numEntries + 1),
+ sizeof(FileListItemInfo));
+ if(fileListItemInfoPtr == NULL) {
+ rfbLog("File [%s]: Method [%s]: fileListItemInfoPtr is NULL\n",
+ __FILE__, __FUNCTION__);
+ return FAILURE;
+ }
+
+ if(fileListInfoPtr->numEntries != 0) {
+ memcpy(fileListItemInfoPtr, fileListInfoPtr->pEntries,
+ fileListInfoPtr->numEntries * sizeof(FileListItemInfo));
+ }
+
+ strcpy(fileListItemInfoPtr[fileListInfoPtr->numEntries].name, name);
+ fileListItemInfoPtr[fileListInfoPtr->numEntries].size = size;
+ fileListItemInfoPtr[fileListInfoPtr->numEntries].data = data;
+
+ if(fileListInfoPtr->pEntries != NULL) {
+ free(fileListInfoPtr->pEntries);
+ fileListInfoPtr->pEntries = NULL;
+ }
+
+ fileListInfoPtr->pEntries = fileListItemInfoPtr;
+ fileListItemInfoPtr = NULL;
+ fileListInfoPtr->numEntries++;
+
+ return SUCCESS;
+}
+
+
+char*
+GetFileNameAt(FileListInfo fileListInfo, int number)
+{
+ char* name = NULL;
+ if(number >= 0 && number < fileListInfo.numEntries)
+ name = fileListInfo.pEntries[number].name;
+ return name;
+}
+
+
+unsigned int
+GetFileSizeAt(FileListInfo fileListInfo, int number)
+{
+ unsigned int size = 0;
+ if(number >= 0 && number < fileListInfo.numEntries)
+ size = fileListInfo.pEntries[number].size;
+ return size;
+}
+
+
+unsigned int
+GetFileDataAt(FileListInfo fileListInfo, int number)
+{
+ unsigned int data = 0;
+ if(number >= 0 && number < fileListInfo.numEntries)
+ data = fileListInfo.pEntries[number].data;
+ return data;
+}
+
+
+unsigned int
+GetSumOfFileNamesLength(FileListInfo fileListInfo)
+{
+ int i = 0, sumLen = 0;
+ for(i = 0; i < fileListInfo.numEntries; i++)
+ sumLen += strlen(fileListInfo.pEntries[i].name);
+ return sumLen;
+}
+
+
+void
+FreeFileListInfo(FileListInfo fileListInfo)
+{
+ if(fileListInfo.pEntries != NULL) {
+ free(fileListInfo.pEntries);
+ fileListInfo.pEntries = NULL;
+ }
+ fileListInfo.numEntries = 0;
+}
+