| 73 | | } |
|---|
| 74 | | |
|---|
| 75 | | static osync_bool mock_parse_directory(mock_env *env, OSyncPluginInfo *info, xmlNode *cur, OSyncError **error) |
|---|
| 76 | | { |
|---|
| 77 | | osync_trace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, env, info, cur, error); |
|---|
| 78 | | |
|---|
| 79 | | OSyncFileDir *dir = osync_try_malloc0(sizeof(OSyncFileDir), error); |
|---|
| 80 | | osync_assert(dir); |
|---|
| 81 | | |
|---|
| 82 | | dir->env = env; |
|---|
| 83 | | |
|---|
| 84 | | OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); |
|---|
| 85 | | |
|---|
| 86 | | while (cur != NULL) { |
|---|
| 87 | | char *str = (char*)xmlNodeGetContent(cur); |
|---|
| 88 | | if (str) { |
|---|
| 89 | | if (!xmlStrcmp(cur->name, (const xmlChar *)"path")) { |
|---|
| 90 | | dir->path = g_strdup(str); |
|---|
| 91 | | } else if (!xmlStrcmp(cur->name, (const xmlChar *)"objtype")) { |
|---|
| 92 | | dir->objtype = g_strdup(str); |
|---|
| 93 | | } else if (!xmlStrcmp(cur->name, (const xmlChar *)"objformat")) { |
|---|
| 94 | | dir->objformat = osync_format_env_find_objformat(formatenv, str); |
|---|
| 95 | | osync_assert(dir->objformat); |
|---|
| 96 | | } else if (!xmlStrcmp(cur->name, (const xmlChar *)"recursive")) { |
|---|
| 97 | | dir->recursive = (g_ascii_strcasecmp(str, "TRUE") == 0); |
|---|
| 98 | | } |
|---|
| 99 | | xmlFree(str); |
|---|
| 100 | | } |
|---|
| 101 | | cur = cur->next; |
|---|
| 102 | | } |
|---|
| 103 | | |
|---|
| 104 | | osync_assert(dir->path); |
|---|
| 105 | | |
|---|
| 106 | | osync_trace(TRACE_INTERNAL, "Got directory %s with objtype %s", dir->path, dir->objtype); |
|---|
| 107 | | |
|---|
| 108 | | env->directories = g_list_append(env->directories, dir); |
|---|
| 109 | | |
|---|
| 110 | | osync_trace(TRACE_EXIT, "%s", __func__); |
|---|
| 111 | | return TRUE; |
|---|
| 112 | | } |
|---|
| 113 | | |
|---|
| 114 | | /*Load the state from a xml file and return it in the conn struct*/ |
|---|
| 115 | | static osync_bool mock_parse_settings(mock_env *env, OSyncPluginInfo *info, OSyncError **error) |
|---|
| 116 | | { |
|---|
| 117 | | osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, env, info, error); |
|---|
| 118 | | const char *data = osync_plugin_info_get_config(info); |
|---|
| 119 | | xmlDoc *doc = NULL; |
|---|
| 120 | | xmlNode *cur = NULL; |
|---|
| 121 | | |
|---|
| 122 | | doc = xmlParseMemory(data, strlen(data) + 1); |
|---|
| 123 | | osync_assert(doc); |
|---|
| 124 | | |
|---|
| 125 | | cur = xmlDocGetRootElement(doc); |
|---|
| 126 | | osync_assert(cur); |
|---|
| 127 | | |
|---|
| 128 | | osync_assert(!xmlStrcmp(cur->name, (xmlChar*)"config")); |
|---|
| 129 | | |
|---|
| 130 | | cur = cur->xmlChildrenNode; |
|---|
| 131 | | |
|---|
| 132 | | while (cur != NULL) { |
|---|
| 133 | | char *str = (char*)xmlNodeGetContent(cur); |
|---|
| 134 | | if (str) { |
|---|
| 135 | | if (!xmlStrcmp(cur->name, (const xmlChar *)"directory")) { |
|---|
| 136 | | osync_assert(mock_parse_directory(env, info, cur->xmlChildrenNode, error)); |
|---|
| 137 | | } |
|---|
| 138 | | |
|---|
| 139 | | xmlFree(str); |
|---|
| 140 | | } |
|---|
| 141 | | cur = cur->next; |
|---|
| 142 | | } |
|---|
| 143 | | |
|---|
| 144 | | xmlFreeDoc(doc); |
|---|
| 145 | | |
|---|
| 146 | | osync_trace(TRACE_EXIT, "%s", __func__); |
|---|
| 147 | | return TRUE; |
|---|