]>
cygwin.com Git - cygwin-apps/setup.git/blob - find.cc
2 * Copyright (c) 2000, Red Hat, Inc.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
16 /* The purpose of this file is to doa recursive find on a given
17 directory, calling a given function for each file found. */
20 static const char *cvsid
=
33 static char dir
[_MAX_PATH
], *found_part
;
36 find_sub (void (*for_each
) (char *, unsigned int))
40 char *end
= dir
+ strlen (dir
);
46 h
= FindFirstFile (dir
, &wfd
);
48 if (h
== INVALID_HANDLE_VALUE
)
53 if (strcmp (wfd
.cFileName
, ".") == 0
54 || strcmp (wfd
.cFileName
, "..") == 0)
57 strcpy (end
, wfd
.cFileName
);
59 if (wfd
.dwFileAttributes
& FILE_ATTRIBUTE_DIRECTORY
)
63 for_each (found_part
, wfd
.nFileSizeLow
);
68 while (FindNextFile (h
, &wfd
));
75 find (String
const &starting_dir
, void (*_for_each
) (char *, unsigned int))
77 strcpy (dir
, starting_dir
.cstr_oneuse());
78 found_part
= dir
+ strlen (dir
) + 1;
80 return find_sub (_for_each
);
This page took 0.039066 seconds and 5 git commands to generate.