X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fecoli_node_file.c;h=001dcb6bf1ce0d2d57ab09c8c8955b6c4399ed9d;hb=804dfa9a29a52ebe59bbf93d222adde3c1c3938c;hp=ad5e8dcad2fbd967abe581fbd5c1ca06bdd96634;hpb=665f6b9392d6a6b37bc55e59437a6fa02cd9006c;p=protos%2Flibecoli.git diff --git a/lib/ecoli_node_file.c b/lib/ecoli_node_file.c index ad5e8dc..001dcb6 100644 --- a/lib/ecoli_node_file.c +++ b/lib/ecoli_node_file.c @@ -1,28 +1,5 @@ -/* - * Copyright (c) 2016, Olivier MATZ - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2016, Olivier MATZ */ #include @@ -40,8 +17,8 @@ #include #include #include -#include -#include +#include +#include #include EC_LOG_TYPE_REGISTER(node_file); @@ -61,14 +38,14 @@ struct ec_node_file { static int ec_node_file_parse(const struct ec_node *gen_node, - struct ec_parsed *state, + struct ec_parse *state, const struct ec_strvec *strvec) { (void)gen_node; (void)state; if (ec_strvec_len(strvec) == 0) - return EC_PARSED_NOMATCH; + return EC_PARSE_NOMATCH; return 1; } @@ -123,13 +100,13 @@ static int split_path(const char *path, char **dname_p, char **bname_p) static int ec_node_file_complete(const struct ec_node *gen_node, - struct ec_completed *completed, + struct ec_comp *comp, const struct ec_strvec *strvec) { struct ec_node_file *node = (struct ec_node_file *)gen_node; char *dname = NULL, *bname = NULL, *effective_dir; - struct ec_completed_item *item = NULL; - enum ec_completed_type type; + struct ec_comp_item *item = NULL; + enum ec_comp_type type; struct stat st, st2; const char *input; size_t bname_len; @@ -184,13 +161,17 @@ ec_node_file_complete(const struct ec_node *gen_node, bname_len = strlen(bname); while (1) { + int save_errno = errno; + errno = 0; de = node->readdir(dir); if (de == NULL) { - if (errno == 0) + if (errno == 0) { + errno = save_errno; goto out; - else + } else { goto fail; + } } if (!ec_str_startswith(de->d_name, bname)) @@ -231,13 +212,13 @@ ec_node_file_complete(const struct ec_node *gen_node, if (ec_asprintf(&disp_str, "%s", de->d_name) < 0) goto fail; } - if (ec_completed_add_item(completed, gen_node, &item, + if (ec_comp_add_item(comp, gen_node, &item, type, input, comp_str) < 0) goto out; /* fix the display string: we don't want to display the full * path. */ - if (ec_completed_item_set_display(item, disp_str) < 0) + if (ec_comp_item_set_display(item, disp_str) < 0) goto out; item = NULL;