dav/optparser.c

Wed, 13 Jul 2016 14:29:50 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 13 Jul 2016 14:29:50 +0200
changeset 244
47791bdf1725
parent 219
9792cfe63b80
child 297
3cbe57eeaed1
permissions
-rw-r--r--

changed max-retry meaning and filter configuration in sync.xml

prior to this change, max-retry was the number of trials. Now it is exactly the number of retries.

include and exclude filters are now surrounded by an filter element in sync.xml

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 *
185
cd42cccee550 updated copyright notice
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 182
diff changeset
4 * Copyright 2016 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"
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 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
36 if(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
37 ucx_map_free(args->options);
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
38 free(args->argv);
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
39 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
40 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 CmdArgs* cmd_parse_args(int argc, char **argv) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 CmdArgs *a = malloc(sizeof(CmdArgs));
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 a->options = ucx_map_new(16);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 a->argv = calloc(argc, sizeof(char*));
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 a->argc = 0;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
49 const char *NOARG = "";
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
50
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 char *option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 char optchar = 0;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 for(int i=0;i<argc;i++) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 char *arg = argv[i];
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 size_t len = strlen(arg);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 if(len > 1 && arg[0] == '-') {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 for(int c=1;c<len;c++) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 switch(arg[c]) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 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
60 fprintf(stderr, "Unknown option -%c\n\n", arg[c]);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 cmd_args_free(a);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 return NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 }
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
64 case 'v': {
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
65 ucx_map_cstr_put(a->options, "verbose", NOARG);
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
66 break;
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
67 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 case 'k': {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 if(!option) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 option = "key";
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 optchar = 'k';
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 } else {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 fprintf(
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 stderr,
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 "Missing argument for option -%c\n",
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 optchar);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 cmd_args_free(a);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 return NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 case 'p': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
83 ucx_map_cstr_put(a->options, "plain", NOARG);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 }
45
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
86 case 'c': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
87 ucx_map_cstr_put(a->options, "crypt", NOARG);
45
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
88 break;
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
89 }
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
90 case 'a': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
91 ucx_map_cstr_put(a->options, "all", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
92 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
93 }
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
94 case 'l': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
95 ucx_map_cstr_put(a->options, "list", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
96 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
97 }
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
98 case 't': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
99 ucx_map_cstr_put(a->options, "type", NOARG);
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
100 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
101 }
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
102 case 'R': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
103 ucx_map_cstr_put(a->options, "recursive", NOARG);
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
104 break;
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
105 }
182
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
106 case 'O': {
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
107 ucx_map_cstr_put(a->options, "override", NOARG);
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
108 break;
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
109 }
199
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
110 case 'i': {
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
111 ucx_map_cstr_put(a->options, "insecure", NOARG);
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
112 break;
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
113 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
114 case 'N': {
212
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
115 ucx_map_cstr_put(a->options, "noinput", NOARG);
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
116 break;
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
117 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
118 case 'e': {
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
119 ucx_map_cstr_put(a->options, "extended", NOARG);
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
120 break;
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
121 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 case 'o': {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 if(!option) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 option = "output";
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 optchar = 'o';
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 } else {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 fprintf(
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 stderr,
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 "Missing argument for option -%c\n",
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 optchar);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 cmd_args_free(a);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 return NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 }
30
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
136 case 'u': {
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
137 if(!option) {
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
138 option = "update";
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
139 optchar = 'u';
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
140 } else {
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
141 fprintf(
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
142 stderr,
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
143 "Missing argument for option -%c\n",
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
144 optchar);
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
145 cmd_args_free(a);
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
146 return NULL;
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
147 }
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
148 break;
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
149 }
62
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
150 case 'n': {
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
151 if(!option) {
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
152 option = "namespace";
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
153 optchar = 'n';
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
154 } else {
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
155 fprintf(
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
156 stderr,
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
157 "Missing argument for option -%c\n",
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
158 optchar);
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
159 cmd_args_free(a);
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
160 return NULL;
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
161 }
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
162 break;
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
163 }
209
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
164 case 'L': {
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
165 if(!option) {
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
166 option = "lock";
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
167 optchar = 'L';
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
168 } else {
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
169 fprintf(
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
170 stderr,
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
171 "Missing argument for option -%c\n",
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
172 optchar);
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
173 cmd_args_free(a);
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
174 return NULL;
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
175 }
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
176 break;
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
177 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180 } else if(option) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 ucx_map_cstr_put(a->options, option, arg);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 } else {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 a->argv[a->argc++] = arg;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
187
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
188 return a;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
189 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 char* cmd_getoption(CmdArgs *arg, char *name) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 return ucx_map_cstr_get(arg->options, name);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 }

mercurial