dav/optparser.c

Sun, 17 Dec 2023 14:25:34 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 17 Dec 2023 14:25:34 +0100
changeset 797
edbb20b1438d
parent 747
efbd59642577
permissions
-rw-r--r--

[Makefile] fix missing rules preventing dry-runs

We have to support dry-runs, because many IDEs are using
dry-runs to collect build information.

Some rules have dependencies that expect certain files or
directories to be just present. We added respective build
rules which invoke the test program. This way, the behavior
when running make normally is exactly the same, but dry-runs
are also not failing now.

11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
364
3769ba002fd1 updates copyright date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 355
diff changeset
4 * Copyright 2018 Olaf Wintermann. All rights reserved.
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include <stdio.h>
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include <stdlib.h>
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include <string.h>
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include "optparser.h"
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
34 #include "sopt.h"
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
36 #include <cx/hash_map.h>
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
37
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
38
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 void cmd_args_free(CmdArgs *args) {
219
9792cfe63b80 added resolve-conflicts and delete-conflicts to help text and fixed crash with unknown cmd options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 213
diff changeset
40 if(args) {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
41 cxMapDestroy(args->options);
684
a4b4257c1a5f improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 517
diff changeset
42 if(args->argv) {
a4b4257c1a5f improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 517
diff changeset
43 free(args->argv);
a4b4257c1a5f improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 517
diff changeset
44 }
219
9792cfe63b80 added resolve-conflicts and delete-conflicts to help text and fixed crash with unknown cmd options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 213
diff changeset
45 free(args);
9792cfe63b80 added resolve-conflicts and delete-conflicts to help text and fixed crash with unknown cmd options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 213
diff changeset
46 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
49 static void cmd_map_put(CxMap *map, const char *key, const void *value) {
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
50 cxMapPut(map, key, (void*)value);
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
51 }
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
52
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 CmdArgs* cmd_parse_args(int argc, char **argv) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 CmdArgs *a = malloc(sizeof(CmdArgs));
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
55 a->options = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16);
684
a4b4257c1a5f improve shell completion
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 517
diff changeset
56 a->argv = argc > 0 ? calloc(argc, sizeof(char*)) : NULL;
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 a->argc = 0;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
59 const char *NOARG = "";
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
60
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 char *option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 char optchar = 0;
721
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
63 int optterminated = 0;
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 for(int i=0;i<argc;i++) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 char *arg = argv[i];
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 size_t len = strlen(arg);
721
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
67 if(len == 2 && arg[0] == '-' && arg[1] == '-') {
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
68 optterminated = 1;
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
69 } else if(!optterminated && len > 1 && arg[0] == '-') {
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
70 // argument is in next arg but starts with a dash
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
71 // we assume this is not intended and consider this an error
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
72 if(option) {
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
73 fprintf(stderr,
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
74 "Missing argument for option -%c\n\n", optchar);
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
75 cmd_args_free(a);
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
76 return NULL;
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
77 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 for(int c=1;c<len;c++) {
721
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
79 // argument is in the same arg
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
80 if(option) {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
81 cxMapPut(a->options, cx_hash_key_str(option), &arg[c]);
721
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
82 option = NULL;
c401f4af44b1 adds support for option terminator '--'
Mike Becker <universe@uap-core.de>
parents: 684
diff changeset
83 break;
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
84 }
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
85
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 switch(arg[c]) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 default: {
219
9792cfe63b80 added resolve-conflicts and delete-conflicts to help text and fixed crash with unknown cmd options
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 213
diff changeset
88 fprintf(stderr, "Unknown option -%c\n\n", arg[c]);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 cmd_args_free(a);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 return NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 }
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
92 case 'v': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
93 cmd_map_put(a->options, "verbose", NOARG);
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
94 break;
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
95 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 case 'k': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
97 option = "key";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
98 optchar = 'k';
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 case 'p': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
102 cmd_map_put(a->options, "plain", NOARG);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 }
45
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
105 case 'c': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
106 cmd_map_put(a->options, "crypt", NOARG);
45
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
107 break;
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
108 }
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
109 case 'a': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
110 cmd_map_put(a->options, "all", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
111 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
112 }
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
113 case 'l': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
114 cmd_map_put(a->options, "list", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
115 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
116 }
297
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
117 case 'd': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
118 cmd_map_put(a->options, "date", NOARG);
297
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
119 break;
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
120 }
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
121 case 't': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
122 cmd_map_put(a->options, "type", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
123 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
124 }
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
125 case 'R': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
126 cmd_map_put(a->options, "recursive", NOARG);
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
127 break;
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
128 }
182
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
129 case 'O': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
130 cmd_map_put(a->options, "override", NOARG);
182
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
131 break;
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
132 }
199
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
133 case 'i': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
134 cmd_map_put(a->options, "insecure", NOARG);
199
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
135 break;
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
136 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
137 case 'N': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
138 cmd_map_put(a->options, "noinput", NOARG);
212
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
139 break;
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
140 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
141 case 'e': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
142 cmd_map_put(a->options, "extended", NOARG);
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
143 break;
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
144 }
338
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
145 case 'x': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
146 cmd_map_put(a->options, "xml", NOARG);
338
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
147 break;
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
148 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
149 case 'F': {
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
150 option = "finfo";
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
151 optchar = 'F';
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
152 break;
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
153 }
309
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
154 case 'S': {
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
155 // undocumented hidden feature
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
156 cmd_map_put(a->options, "structure", NOARG);
309
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
157 break;
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
158 }
330
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
159 case 'K': {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
160 cmd_map_put(a->options, "keep", NOARG);
330
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
161 break;
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
162 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 case 'o': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
164 option = "output";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
165 optchar = 'o';
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 }
30
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
168 case 'u': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
169 option = "update";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
170 optchar = 'u';
30
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
171 break;
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
172 }
62
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
173 case 'n': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
174 option = "namespace";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
175 optchar = 'n';
62
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
176 break;
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
177 }
209
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
178 case 'L': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
179 option = "lock";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
180 optchar = 'L';
209
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
181 break;
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
182 }
315
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
183 case 'T': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
184 option = "timeout";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
185 optchar = 'T';
315
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
186 break;
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
187 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
188 /*
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
189 case 'P': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
190 option = "progressfile";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
191 optchar = 'F';
355
5da2cf15eb44 adds primitive progress indicator
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 338
diff changeset
192 break;
5da2cf15eb44 adds primitive progress indicator
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 338
diff changeset
193 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
194 */
476
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
195 case 'V': {
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
196 option = "version";
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
197 optchar = 'V';
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
198 break;
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
199 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
201 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
202 } else if(option) {
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
203 cmd_map_put(a->options, option, arg);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
204 option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
205 } else {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
206 a->argv[a->argc++] = arg;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
207 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
208 }
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
209 if(option) {
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
210 fprintf(stderr,
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
211 "Missing argument for option -%c\n\n", optchar);
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
212 cmd_args_free(a);
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
213 return NULL;
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
214 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
215
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
216 return a;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
217 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
218
747
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
219 char* cmd_getoption(CmdArgs *arg, const char *name) {
efbd59642577 ucx 3 update, basic dav commands work, most stuff is still broken
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 721
diff changeset
220 return cxMapGet(arg->options, cx_hash_key_str(name));
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
221 }

mercurial