dav/optparser.c

Sat, 22 Jun 2019 16:36:52 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 22 Jun 2019 16:36:52 +0200
changeset 607
5dc7fe41e8f8
parent 517
8531b63accae
child 684
a4b4257c1a5f
permissions
-rw-r--r--

move some properties to new namespace

for properties encryption we need to decide which props must be encrypted and the plan is, to decide by namespace

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
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 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
37 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
38 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
39 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
40 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
41 }
11
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
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 CmdArgs* cmd_parse_args(int argc, char **argv) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 CmdArgs *a = malloc(sizeof(CmdArgs));
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 a->options = ucx_map_new(16);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 a->argv = calloc(argc, sizeof(char*));
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 a->argc = 0;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
50 const char *NOARG = "";
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
51
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 char *option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 char optchar = 0;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 for(int i=0;i<argc;i++) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 char *arg = argv[i];
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 size_t len = strlen(arg);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 if(len > 1 && arg[0] == '-') {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 for(int c=1;c<len;c++) {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
59 if (option) {
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
60 fprintf(stderr,
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
61 "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
62 cmd_args_free(a);
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
63 return NULL;
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
64 }
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
65
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 switch(arg[c]) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 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
68 fprintf(stderr, "Unknown option -%c\n\n", arg[c]);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 cmd_args_free(a);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 return NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 }
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
72 case 'v': {
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
73 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
74 break;
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
75 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 case 'k': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
77 option = "key";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
78 optchar = 'k';
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 case 'p': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
82 ucx_map_cstr_put(a->options, "plain", NOARG);
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 }
45
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
85 case 'c': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
86 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
87 break;
e3839719b079 added crypt command line option
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
88 }
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
89 case 'a': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
90 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
91 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
92 }
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
93 case 'l': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
94 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
95 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
96 }
297
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
97 case 'd': {
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
98 ucx_map_cstr_put(a->options, "date", NOARG);
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
99 break;
3cbe57eeaed1 adds option to sort dav list by lastmodified date
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 219
diff changeset
100 }
14
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
101 case 't': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
102 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
103 break;
d1a43035d3a2 added some options to list command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 11
diff changeset
104 }
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
105 case 'R': {
68
f6d3db6113d3 added verbose option + encryption flag fixes
Mike Becker <universe@uap-core.de>
parents: 62
diff changeset
106 ucx_map_cstr_put(a->options, "recursive", NOARG);
18
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
107 break;
651989681053 recursive list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 14
diff changeset
108 }
182
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
109 case 'O': {
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
110 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
111 break;
ca07f14f7bfe added override option for copy/move
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 119
diff changeset
112 }
199
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
113 case 'i': {
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
114 ucx_map_cstr_put(a->options, "insecure", NOARG);
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
115 break;
f448fc8c9191 enabled cert verification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 186
diff changeset
116 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
117 case 'N': {
212
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
118 ucx_map_cstr_put(a->options, "noinput", NOARG);
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
119 break;
01e80c7cfe96 added noinput option to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 209
diff changeset
120 }
213
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
121 case 'e': {
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
122 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
123 break;
cd870d5f8659 added options for extended list flags and changed version output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 212
diff changeset
124 }
338
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
125 case 'x': {
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
126 ucx_map_cstr_put(a->options, "xml", NOARG);
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
127 break;
c7f3fe4abdb2 dav get-property supports xml property output
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 334
diff changeset
128 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
129 case 'F': {
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
130 option = "finfo";
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
131 optchar = 'F';
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
132 break;
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
133 }
309
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
134 case 'S': {
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
135 // undocumented hidden feature
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
136 ucx_map_cstr_put(a->options, "structure", NOARG);
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
137 break;
8a474d2ad209 adds option to dav get for downloading only the directory structure
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 297
diff changeset
138 }
330
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
139 case 'K': {
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
140 ucx_map_cstr_put(a->options, "keep", NOARG);
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
141 break;
54819e984a19 adds dav get option to keep existing files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 315
diff changeset
142 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 case 'o': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
144 option = "output";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
145 optchar = 'o';
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 break;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 }
30
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
148 case 'u': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
149 option = "update";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
150 optchar = 'u';
30
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
151 break;
9a5a7a513a96 added update option for list and get
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 18
diff changeset
152 }
62
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
153 case 'n': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
154 option = "namespace";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
155 optchar = 'n';
62
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
156 break;
3b813c57c106 added property-set and property-get command
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 45
diff changeset
157 }
209
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
158 case 'L': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
159 option = "lock";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
160 optchar = 'L';
209
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
161 break;
d24761f1e07c added lock and unlock commands to dav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 199
diff changeset
162 }
315
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
163 case 'T': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
164 option = "timeout";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
165 optchar = 'T';
315
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
166 break;
7db4dbf4e6f9 adds lock timeout
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 309
diff changeset
167 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
168 /*
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
169 case 'P': {
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
170 option = "progressfile";
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
171 optchar = 'F';
355
5da2cf15eb44 adds primitive progress indicator
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 338
diff changeset
172 break;
5da2cf15eb44 adds primitive progress indicator
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 338
diff changeset
173 }
517
8531b63accae adds option to store a file info property
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 476
diff changeset
174 */
476
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
175 case 'V': {
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
176 option = "version";
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
177 optchar = 'V';
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
178 break;
b4e3453e2b49 adds -V option to get, get-property and info commands
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 376
diff changeset
179 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 } else if(option) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 ucx_map_cstr_put(a->options, option, arg);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 option = NULL;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 } else {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 a->argv[a->argc++] = arg;
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 }
375
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
189 if(option) {
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
190 fprintf(stderr,
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
191 "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
192 cmd_args_free(a);
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
193 return NULL;
39fd327f81da fixes options parser to correctly report missing arguments
Mike Becker <universe@uap-core.de>
parents: 364
diff changeset
194 }
11
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196 return a;
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
197 }
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
198
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
199 char* cmd_getoption(CmdArgs *arg, char *name) {
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200 return ucx_map_cstr_get(arg->options, name);
5db6178d8b58 added usage info
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
201 }

mercurial