]>
git.ipfire.org Git - people/ms/network.git/blob - src/networkd/util.c
0381ea866f62655d0b8cd0e926fe417a95da0e7c
1 /*#############################################################################
3 # IPFire.org - A linux based firewall #
4 # Copyright (C) 2023 IPFire Network Development Team #
6 # This program is free software: you can redistribute it and/or modify #
7 # it under the terms of the GNU General Public License as published by #
8 # the Free Software Foundation, either version 3 of the License, or #
9 # (at your option) any later version. #
11 # This program is distributed in the hope that it will be useful, #
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14 # GNU General Public License for more details. #
16 # You should have received a copy of the GNU General Public License #
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 #############################################################################*/
29 int nw_ftw(const char* path
, const char* filter
,
30 int (*callback
)(const char* path
, const struct stat
* s
, void* data
), void* data
) {
32 This is a nested function which allows us to pass some custom pointer to
33 the callback function as that isn't possible with nftw().
35 int __callback(const char* p
, const struct stat
* s
, int type
, struct FTW
* ftw
) {
38 // Filter out anything we don't want
40 r
= fnmatch(filter
, p
, FNM_PATHNAME
);
43 // Pattern didn't match
57 return callback(p
, s
, data
);
60 return nftw(path
, __callback
, 0, 0);