Optimize device/get_changes updates

- don't use folder/get_content but rely on parent information
 - add many more debugging information and sanity checks
 - ignore trash
 - correctly update local device revision using device_response
 - remove "visited" member and change housekeeping function to check for
   consistency of parents and children (and retrieve fix from remote if
   necessary)
 - print key and parent key in the debugging function
 - check for remote updates on every fs function
 - introduce global defines for key and filename length
 - add parent member, getters and setters to file.h
This commit is contained in:
josch
2014-09-27 13:53:44 +02:00
parent da914e67b1
commit b6f35763fa
11 changed files with 459 additions and 220 deletions

View File

@@ -22,11 +22,12 @@
#include <string.h>
#include "folder.h"
#include "apicalls.h"
struct mffolder {
char folderkey[20];
char name[41];
char parent[20];
char folderkey[MFAPI_MAX_LEN_KEY + 1];
char name[MFAPI_MAX_LEN_NAME + 1];
char parent[MFAPI_MAX_LEN_KEY + 1];
uint64_t revision;
time_t created;
};
@@ -62,7 +63,7 @@ int folder_set_key(mffolder * folder, const char *key)
return -1;
memset(folder->folderkey, 0, sizeof(folder->folderkey));
strncpy(folder->folderkey, key, sizeof(folder->folderkey) - 1);
strncpy(folder->folderkey, key, sizeof(folder->folderkey));
}
return 0;
@@ -88,12 +89,8 @@ int folder_set_parent(mffolder * folder, const char *parent_key)
if (parent_key == NULL) {
memset(folder->parent, 0, sizeof(folder->parent));
} else {
if (strlen(parent_key) != 13) {
return -1;
}
memset(folder->parent, 0, sizeof(folder->parent));
strncpy(folder->parent, parent_key, sizeof(folder->parent) - 1);
strncpy(folder->parent, parent_key, sizeof(folder->parent));
}
return 0;
@@ -104,7 +101,11 @@ const char *folder_get_parent(mffolder * folder)
if (folder == NULL)
return NULL;
return folder->parent;
if (folder->parent[0] == '\0') {
return NULL;
} else {
return folder->parent;
}
}
int folder_set_name(mffolder * folder, const char *name)
@@ -118,7 +119,7 @@ int folder_set_name(mffolder * folder, const char *name)
return -1;
memset(folder->name, 0, sizeof(folder->name));
strncpy(folder->name, name, sizeof(folder->name) - 1);
strncpy(folder->name, name, sizeof(folder->name));
return 0;
}