dav/main.c

changeset 304
a4d3ff32d49c
parent 298
755b8198b071
child 305
c3d98b2cccf3
equal deleted inserted replaced
302:395763c0ee69 304:a4d3ff32d49c
122 ret = cmd_date(args); 122 ret = cmd_date(args);
123 } else if(!strcasecmp(cmd, "set-property")) { 123 } else if(!strcasecmp(cmd, "set-property")) {
124 ret = cmd_set_property(args); 124 ret = cmd_set_property(args);
125 } else if(!strcasecmp(cmd, "get-property")) { 125 } else if(!strcasecmp(cmd, "get-property")) {
126 ret = cmd_get_property(args); 126 ret = cmd_get_property(args);
127 } else if(!strcasecmp(cmd, "remove-property")) {
128 ret = cmd_remove_property(args);
127 } else if(!strcasecmp(cmd, "lock")) { 129 } else if(!strcasecmp(cmd, "lock")) {
128 ret = cmd_lock(args); 130 ret = cmd_lock(args);
129 } else if(!strcasecmp(cmd, "unlock")) { 131 } else if(!strcasecmp(cmd, "unlock")) {
130 ret = cmd_unlock(args); 132 ret = cmd_unlock(args);
131 } else if(!strcasecmp(cmd, "info")) { 133 } else if(!strcasecmp(cmd, "info")) {
1246 1248
1247 free(path); 1249 free(path);
1248 return ret; 1250 return ret;
1249 } 1251 }
1250 1252
1253 int cmd_remove_property(CmdArgs *a) {
1254 if(a->argc < 2) {
1255 fprintf(stderr, "Too few arguments\n");
1256 return -1;
1257 }
1258
1259 char *url = a->argv[0];
1260 char *path = NULL;
1261 Repository *repo = url2repo(url, &path);
1262 DavSession *sn = connect_to_repo(repo, a);
1263
1264 if(set_session_config(sn, a)) {
1265 return -1;
1266 }
1267
1268 char *namespace = cmd_getoption(a, "namespace");
1269 char *property = a->argv[1];
1270
1271 DavPropName propname;
1272 if(namespace) {
1273 propname.ns = namespace;
1274 propname.name = property;
1275 } else {
1276 dav_get_property_namespace_str(ctx, property, &propname.ns, &propname.name);
1277 }
1278
1279 int ret = 0;
1280 DavResource *res = dav_resource_new(sn, path);
1281 dav_remove_property_ns(res, propname.ns, propname.name);
1282 for(int i=0;i<2;i++) {
1283 if(dav_store(res)) {
1284 if(i == 0 && sn->error == DAV_UNAUTHORIZED && request_auth(repo, sn, a)) {
1285 continue;
1286 }
1287 print_resource_error(sn, res->path);
1288 fprintf(stderr, "Cannot set property.\n");
1289 ret = -1;
1290 }
1291 break;
1292 }
1293
1294 free(path);
1295 return ret;
1296 }
1297
1251 int cmd_lock(CmdArgs *a) { 1298 int cmd_lock(CmdArgs *a) {
1252 if(a->argc != 1) { 1299 if(a->argc != 1) {
1253 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few"); 1300 fprintf(stderr, "Too %s arguments\n", a->argc > 1 ? "many" : "few");
1254 return -1; 1301 return -1;
1255 } 1302 }

mercurial