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 } |