dav/sync.c

changeset 256
54433cb371df
parent 254
d7c4ba50b7d8
child 257
49f3c58cc06c
equal deleted inserted replaced
255:bf19378aed58 256:54433cb371df
34 #include <time.h> 34 #include <time.h>
35 #include <libxml/xmlerror.h> 35 #include <libxml/xmlerror.h>
36 #include <sys/types.h> 36 #include <sys/types.h>
37 #include <ucx/string.h> 37 #include <ucx/string.h>
38 #include <ucx/utils.h> 38 #include <ucx/utils.h>
39 #include <ucx/properties.h>
39 #include <dirent.h> 40 #include <dirent.h>
40 41
41 #include <libidav/webdav.h> 42 #include <libidav/webdav.h>
42 #include <libidav/utils.h> 43 #include <libidav/utils.h>
43 44
47 #include "db.h" 48 #include "db.h"
48 #include "error.h" 49 #include "error.h"
49 #include "assistant.h" 50 #include "assistant.h"
50 51
51 #include "sync.h" 52 #include "sync.h"
52 #include "ucx/properties.h"
53 #include "libidav/session.h" 53 #include "libidav/session.h"
54 54
55 static DavContext *ctx; 55 static DavContext *ctx;
56 56
57 static void xmlerrorfnc(void * c, const char * msg, ... ) { 57 static void xmlerrorfnc(void * c, const char * msg, ... ) {
107 ret = cmd_delete_conflicts(args); 107 ret = cmd_delete_conflicts(args);
108 } else if(!strcmp(cmd, "trash-info")) { 108 } else if(!strcmp(cmd, "trash-info")) {
109 ret = cmd_trash_info(args); 109 ret = cmd_trash_info(args);
110 } else if(!strcmp(cmd, "empty-trash")) { 110 } else if(!strcmp(cmd, "empty-trash")) {
111 ret = cmd_empty_trash(args); 111 ret = cmd_empty_trash(args);
112 } else if(!strcmp(cmd, "add-directory")) { 112 } else if(!strcmp(cmd, "add-dir")
113 || !strcmp(cmd, "add-directory")) {
113 ret = cmd_add_directory(args); 114 ret = cmd_add_directory(args);
114 } else if(!strcmp(cmd, "list-directories")) { 115 } else if(!strcmp(cmd, "list-dirs")
115 ret = list_syncdirs(); 116 || !strcmp(cmd, "list-directories")) {
116 } else if(!strcmp(cmd, "check-repositories")) { 117 ret = cmd_list_dirs();
118 } else if(!strcmp(cmd, "check-repos")
119 || !strcmp(cmd, "check-repositories")) {
117 ret = cmd_check_repositories(); 120 ret = cmd_check_repositories();
118 } else { 121 } else {
119 print_usage(argv[0]); 122 print_usage(argv[0]);
120 } 123 }
121 } 124 }
152 fprintf(stderr, " -v verbose output (all commands)\n\n"); 155 fprintf(stderr, " -v verbose output (all commands)\n\n");
153 156
154 fprintf(stderr, "Config commands:\n"); 157 fprintf(stderr, "Config commands:\n");
155 fprintf(stderr, " add-directory\n"); 158 fprintf(stderr, " add-directory\n");
156 fprintf(stderr, " list-directories\n"); 159 fprintf(stderr, " list-directories\n");
157 fprintf(stderr, " check (or check-config)\n"); 160 fprintf(stderr, " check-config\n");
158 fprintf(stderr, " check-repositories\n\n"); 161 fprintf(stderr, " check-repositories\n\n");
159 } 162 }
160 163
161 static int res_matches_filter(SyncDirectory *dir, char *res_path) { 164 static int res_matches_filter(SyncDirectory *dir, char *res_path) {
162 // trash filter 165 // trash filter
1636 free(db); 1639 free(db);
1637 1640
1638 return ret; 1641 return ret;
1639 } 1642 }
1640 1643
1644 int cmd_list_dirs() {
1645 UcxMapIterator iter = scfg_directory_iterator();
1646 SyncDirectory *dir;
1647 UCX_MAP_FOREACH(key, dir, iter) {
1648 printf("%s\n", dir->name);
1649 }
1650 return 0;
1651 }
1652
1641 int cmd_check_repositories() { 1653 int cmd_check_repositories() {
1642 fprintf(stderr, "Not implemented.\n"); 1654 int ret = EXIT_SUCCESS;
1643 return EXIT_FAILURE; 1655
1644 } 1656 UcxList *reponames = NULL;
1657 {
1658 UcxMapIterator iter = scfg_directory_iterator();
1659 SyncDirectory *dir;
1660 UCX_MAP_FOREACH(key, dir, iter) {
1661 reponames = ucx_list_append_once(reponames,
1662 dir->repository, ucx_strcmp, NULL);
1663 }
1664 }
1665
1666 UCX_FOREACH(listelem, reponames) {
1667 char *reponame = listelem->data;
1668 printf("Checking %s... ", reponame);
1669 Repository* repo = get_repository(sstr(reponame));
1670 if (!repo) {
1671 printf(" not found in config.xml!\n");
1672 ret = EXIT_FAILURE;
1673 } else {
1674 DavSession *sn = create_session(ctx, repo, repo->url);
1675 if (sn) {
1676 DavResource *res = dav_query(sn,
1677 "select - from / with depth = 0");
1678 if (res) {
1679 printf("OK.\n");
1680 dav_resource_free(res);
1681 } else {
1682 printf("unavailable!\n");
1683 ret = EXIT_FAILURE;
1684 }
1685 dav_session_destroy(sn);
1686 } else {
1687 printf("cannot create session!\n");
1688 ret = EXIT_FAILURE;
1689 }
1690 }
1691 }
1692
1693 ucx_list_free(reponames);
1694
1695 return ret;
1696 }

mercurial