diff -r 7d20ce5d235b -r 7fca3788261d dav/main.c --- a/dav/main.c Wed Apr 01 11:42:38 2015 +0200 +++ b/dav/main.c Fri Apr 03 14:53:28 2015 +0200 @@ -101,6 +101,8 @@ ret = cmd_set_property(args); } else if(!strcasecmp(cmd, "get-property")) { ret = cmd_get_property(args); + } else if(!strcasecmp(cmd, "info")) { + ret = cmd_info(args); } else { print_usage(argv[0]); } @@ -992,6 +994,73 @@ return 0; } +static int count_children(DavResource *res) { + DavResource *child = res->children; + int count = 0; + while(child) { + count++; + child = child->next; + } + return count; +} + +int cmd_info(CmdArgs *a) { + if(a->argc < 1) { + fprintf(stderr, "Too few arguments\n"); + return -1; + } + + char *url = a->argv[0]; + char *path = NULL; + DavSession *sn = connect_to_repo(url2repo(url, &path)); + + if(set_session_config(sn, a)) { + return -1; + } + + DavResource *res = dav_resource_new(sn, path); + if(!dav_load(res)) { + printf("name: %s\n", res->name); + printf("path: %s\n", res->path); + + char *url = util_path_to_url(sn, res->path); + printf("url: %s\n", url); + free(url); + + if(res->iscollection) { + printf("type: collection\n"); + printf("size: %d\n", count_children(res)); + } else { + printf("type: resource\n"); + char *len = ls_size_str(res); + printf("size: %s\n", len); + free(len); + } + + size_t count = 0; + DavPropName *properties = dav_get_property_names(res, &count); + + char *last_ns = NULL; + for(int i=0;ipath); + return -1; + } +} + + char* stdin2str() { UcxBuffer *buf = ucx_buffer_new(NULL, 1024, UCX_BUFFER_AUTOEXTEND); size_t size = ucx_stream_hcopy(stdin, buf, fread, ucx_buffer_write);