dav/main.c

changeset 432
a213ecaf3f4a
parent 431
1e8592657a01
child 433
7096666628ca
equal deleted inserted replaced
431:1e8592657a01 432:a213ecaf3f4a
154 ret = cmd_repository_url(args); 154 ret = cmd_repository_url(args);
155 } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") 155 } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version")
156 || !strcasecmp(cmd, "--version")) { 156 || !strcasecmp(cmd, "--version")) {
157 fprintf(stderr, "dav %s\n", DAV_VERSION); 157 fprintf(stderr, "dav %s\n", DAV_VERSION);
158 } else if(!strcasecmp(cmd, "complete")) { 158 } else if(!strcasecmp(cmd, "complete")) {
159 ret = shell_completion(args); 159 if(args->argc < 2) {
160 return 1;
161 }
162 char *index_str = args->argv[0];
163 int64_t index = 0;
164 if(!util_strtoint(index_str, &index)) {
165 return 1;
166 }
167 if(args->argc + 2 != argc) {
168 // we have to fix the index
169
170 for(int i=2;i<args->argc;i++) {
171 if(index == i-2) {
172 break;
173 }
174 if(strcmp(argv[i+2], args->argv[i])) {
175 index--;
176 }
177 }
178 }
179
180 ret = shell_completion(args, index);
160 } else { 181 } else {
161 print_usage(argv[0]); 182 print_usage(argv[0]);
162 } 183 }
163 } 184 }
164 185
2009 return -1; 2030 return -1;
2010 } 2031 }
2011 } 2032 }
2012 2033
2013 2034
2014 int shell_completion(CmdArgs *args) { 2035 int shell_completion(CmdArgs *args, int index) {
2015 if(args->argc < 2) { 2036 if(args->argc < 2 || args->argc < 3) {
2016 return 1;
2017 }
2018
2019 char *index_str = args->argv[0];
2020 int64_t index = 0;
2021 if(!util_strtoint(index_str, &index)) {
2022 return 1; 2037 return 1;
2023 } 2038 }
2024 2039
2025 if(index == 1) { 2040 if(index == 1) {
2026 sstr_t prefix = { NULL, 0 }; 2041 sstr_t prefix = { NULL, 0 };
2155 } 2170 }
2156 if(elm->iscollection) { 2171 if(elm->iscollection) {
2157 ucx_buffer_putc(out, '/'); 2172 ucx_buffer_putc(out, '/');
2158 } 2173 }
2159 printf("%.*s\n", (int)out->pos, out->space); 2174 printf("%.*s\n", (int)out->pos, out->space);
2175
2176 ucx_buffer_free(out);
2160 } 2177 }
2161 elm = elm->next; 2178 elm = elm->next;
2162 } 2179 }
2163 2180
2181 free(lspath);
2164 2182
2183 dav_session_destroy(sn);
2165 } 2184 }
2166 2185
2167 return 10; 2186 return 10;
2168 } 2187 }

mercurial