1//server struct 2#include<time.h> 3#include <dirent.h> 4#define MAX_LENGTH 128 5#define MIN_LENGTH 64 6#define MAX_CONTENT 256 7#define MAXDATASIZE 1024 8#define MINSIZE 64 9 10typedef struct node{ 11 char *href; 12 long long int size; 13 int isFolder; 14 char tmptime[MIN_LENGTH]; 15 char *name; 16 struct node *next; 17 time_t mtime; 18}CloudFile; 19//CloudFile *FolderList; 20//CloudFile *FileList; 21//CloudFile *FolderTail; 22//CloudFile *FileTail; 23CloudFile *FolderCurrent; 24CloudFile *FolderTmp; 25//CloudFile *OldFolderList; 26//CloudFile *OldFileList; 27CloudFile *FileList_one; 28CloudFile *FileTail_one; 29CloudFile *FileTmp_one; 30CloudFile *TreeFolderList; 31CloudFile *TreeFileList; 32CloudFile *TreeFolderTail; 33CloudFile *TreeFileTail; 34 35typedef struct BROWSE 36{ 37 int foldernumber; 38 int filenumber; 39 CloudFile *folderlist; 40 CloudFile *filelist; 41}Browse; 42 43struct ServerTreeNode 44{ 45 int level; 46 char *parenthref; 47 Browse *browse; 48 struct ServerTreeNode *Child; 49 struct ServerTreeNode *NextBrother; 50}; 51 52typedef struct ServerTreeNode Server_TreeNode; 53 54//Server_TreeNode *ServerRootNode; 55//Server_TreeNode *OldServerRootNode; 56 57 58/*Local item struct and function of every floor*/ 59typedef struct LOCALFOLDER{ 60 char *path; 61 char name[MAX_CONTENT]; 62 struct LOCALFOLDER *next; 63}LocalFolder; 64 65typedef struct LOCALFILE{ 66 char *path; 67 char name[MAX_CONTENT]; 68 char creationtime[MINSIZE]; 69 char lastaccesstime[MINSIZE]; 70 char lastwritetime[MINSIZE]; 71 long long size; 72 struct LOCALFILE *next; 73}LocalFile; 74 75//LocalFile *LocalFileList; 76//LocalFolder *LocalFolderList; 77//LocalFolder *LocalFolderTmp; 78//LocalFile *LocalFileTmp; 79//LocalFolder *LocalFolderTail; 80//LocalFile *LocalFileTail; 81//LocalFolder *LocalFolderCurrent; 82//LocalFile *SavedLocalFileList; 83 84 85typedef struct LOCAL 86{ 87 int foldernumber; 88 int filenumber; 89 LocalFolder *folderlist; 90 LocalFile *filelist; 91}Local; 92 93 94 95Server_TreeNode *create_server_treeroot(); 96int browse_to_tree(char *parenthref,Server_TreeNode *node); 97void free_server_tree(Server_TreeNode *node); 98void SearchServerTree(Server_TreeNode* treeRoot); 99int create_sync_list(); 100int initMyLocalFolder(Server_TreeNode *servertreenode,int index); 101char *serverpath_to_localpath(char *from_serverpath,int index); 102int is_local_space_enough(CloudFile *do_file,int index); 103long long int get_local_freespace(int index); 104int test_if_dir(const char *dir); 105Local *Find_Floor_Dir(const char *path); 106void free_LocalFolder_item(LocalFolder *head); 107void free_LocalFile_item(LocalFile *head); 108void free_localfloor_node(Local *local); 109int sync_local_with_server_init(Server_TreeNode *treenode,Browse *perform_br,Local *perform_lo,int index); 110char *localpath_to_serverpath(char *from_localpath,int index); 111int ChangeFile_modtime(char *filepath,time_t servermodtime); 112void free_CloudFile_item(CloudFile *head); 113int upload_serverlist(Server_TreeNode *treenode,Browse *perform_br, LocalFolder *localfoldertmp,int index); 114CloudFile *get_CloudFile_node(Server_TreeNode* treeRoot,const char *dofile_href,int a); 115