X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib_internal%2Fmatchlist-appendfiles.c;fp=lib_internal%2Fmatchlist-appendfiles.c;h=9e36a111936156d3860e81ee6f6640d820b60b63;hb=3f3cf95f755f3ef1c31ad8e38153deb4ee214c66;hp=0000000000000000000000000000000000000000;hpb=bfa4b37aaa195007a09bc166e8c8563d5a3c2ef1;p=util-vserver.git diff --git a/lib_internal/matchlist-appendfiles.c b/lib_internal/matchlist-appendfiles.c new file mode 100644 index 0000000..9e36a11 --- /dev/null +++ b/lib_internal/matchlist-appendfiles.c @@ -0,0 +1,71 @@ +// $Id: matchlist-appendfiles.c,v 1.2 2004/04/06 08:42:46 ensc Exp $ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "matchlist.h" +#include +#include + +static int +fnmatchWrap(char const *a, char const *b) +{ + return fnmatch(a, b, 0); +} + +static MatchItemCompareFunc +determineCompareFunc(char const UNUSED *fname) +{ + return fnmatchWrap; +} + +void +MatchList_appendFiles(struct MatchList *list, size_t idx, + char **files, size_t count, + bool auto_type) +{ + struct MatchItem *ptr = list->data + idx; + size_t i; + + assert(idx+count <= list->count); + + if (auto_type) { + for (i=0; itype = stINCLUDE; ++file; break; + case '~' : ptr->type = stSKIP; ++file; break; + case '-' : ++file; /*@fallthrough@*/ + default : ptr->type = stEXCLUDE; break; + } + ptr->cmp = determineCompareFunc(file); + ptr->name = file; + ++ptr; + } + } + else { + for (i=0; itype = stEXCLUDE; + ptr->name = files[i]; + ptr->cmp = 0; + ++ptr; + } + } +}