diff -r 8722a668fb2a -r 7db4dbf4e6f9 dav/main.c --- a/dav/main.c Fri Sep 22 20:42:33 2017 +0200 +++ b/dav/main.c Sat Sep 23 11:45:03 2017 +0200 @@ -176,7 +176,7 @@ fprintf( stderr, " remove-property [-pc] [-n ] \n"); - fprintf(stderr, " lock [-pc] \n"); + fprintf(stderr, " lock [-pc] [-T timeout] \n"); fprintf(stderr, " unlock [-pc] [-L ] \n"); fprintf(stderr, " info [-pc] \n"); fprintf(stderr, " date [url]\n"); @@ -201,6 +201,7 @@ fprintf(stderr, " -e show extended flags\n"); fprintf(stderr, " -O override resources\n"); fprintf(stderr, " -L specificy lock token\n"); + fprintf(stderr, " -T timeout in seconds\n"); fprintf(stderr, " -n specify namespace uri\n"); fprintf(stderr, " -N disable authentication prompt (all commands)\n"); fprintf(stderr, " -i disable cert verification (all commands)\n"); @@ -1322,9 +1323,19 @@ return -1; } + time_t timeout = 0; + char *timeoutstr = cmd_getoption(a, "timeout"); + if(timeoutstr) { + if(!sstrcasecmp(sstr(timeoutstr), S("infinity"))) { + timeout = -1; + } else { + timeout = (time_t)atoi(timeoutstr); // TODO: use strtol + } + } + DavResource *res = dav_resource_new(sn, path); for(int i=0;i<2;i++) { - if(!dav_lock(res)) { + if(!dav_lock_t(res, timeout)) { break; } if(i == 0 && sn->error == DAV_UNAUTHORIZED && request_auth(repo, sn, a)) {