version 1.14, 2017/02/18 12:24:24 |
version 1.17, 2020/06/15 01:37:14 |
|
|
#include "config.h" |
|
|
|
#if HAVE_FTS |
|
|
|
int dummy; |
|
|
|
#else |
|
|
|
/* $Id$ */ |
/* $Id$ */ |
/* $OpenBSD$ */ |
/* $OpenBSD$ */ |
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
*/ |
*/ |
|
#include "config.h" |
|
|
#include <sys/stat.h> |
#include <sys/stat.h> |
#include <sys/types.h> |
#include <sys/types.h> |
Line 62 static int fts_palloc(FTS *, size_t); |
|
Line 55 static int fts_palloc(FTS *, size_t); |
|
static FTSENT *fts_sort(FTS *, FTSENT *, int); |
static FTSENT *fts_sort(FTS *, FTSENT *, int); |
static unsigned short fts_stat(FTS *, FTSENT *); |
static unsigned short fts_stat(FTS *, FTSENT *); |
|
|
|
typedef int (*qsort_compar_proto)(const void *, const void *); |
|
|
#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) |
#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) |
#ifndef O_CLOEXEC |
#ifndef O_CLOEXEC |
#define O_CLOEXEC 0 |
#define O_CLOEXEC 0 |
Line 573 fts_sort(FTS *sp, FTSENT *head, int nitems) |
|
Line 568 fts_sort(FTS *sp, FTSENT *head, int nitems) |
|
if (nitems > sp->fts_nitems) { |
if (nitems > sp->fts_nitems) { |
struct _ftsent **a; |
struct _ftsent **a; |
|
|
sp->fts_nitems = nitems + 40; |
|
if ((a = reallocarray(sp->fts_array, |
if ((a = reallocarray(sp->fts_array, |
sp->fts_nitems, sizeof(FTSENT *))) == NULL) { |
nitems + 40, sizeof(FTSENT *))) == NULL) { |
free(sp->fts_array); |
free(sp->fts_array); |
sp->fts_array = NULL; |
sp->fts_array = NULL; |
sp->fts_nitems = 0; |
sp->fts_nitems = 0; |
return (head); |
return (head); |
} |
} |
|
sp->fts_nitems = nitems + 40; |
sp->fts_array = a; |
sp->fts_array = a; |
} |
} |
for (ap = sp->fts_array, p = head; p; p = p->fts_link) |
for (ap = sp->fts_array, p = head; p; p = p->fts_link) |
*ap++ = p; |
*ap++ = p; |
qsort(sp->fts_array, nitems, sizeof(FTSENT *), sp->fts_compar); |
qsort(sp->fts_array, nitems, sizeof(FTSENT *), |
|
(qsort_compar_proto)sp->fts_compar); |
for (head = *(ap = sp->fts_array); --nitems; ++ap) |
for (head = *(ap = sp->fts_array); --nitems; ++ap) |
ap[0]->fts_link = ap[1]; |
ap[0]->fts_link = ap[1]; |
ap[0]->fts_link = NULL; |
ap[0]->fts_link = NULL; |
Line 648 fts_palloc(FTS *sp, size_t more) |
|
Line 644 fts_palloc(FTS *sp, size_t more) |
|
errno = ENAMETOOLONG; |
errno = ENAMETOOLONG; |
return (1); |
return (1); |
} |
} |
sp->fts_pathlen += more; |
p = recallocarray(sp->fts_path, sp->fts_pathlen, |
p = realloc(sp->fts_path, sp->fts_pathlen); |
sp->fts_pathlen + more, 1); |
if (p == NULL) { |
if (p == NULL) { |
free(sp->fts_path); |
free(sp->fts_path); |
sp->fts_path = NULL; |
sp->fts_path = NULL; |
return (1); |
return (1); |
} |
} |
|
sp->fts_pathlen += more; |
sp->fts_path = p; |
sp->fts_path = p; |
return (0); |
return (0); |
} |
} |
Line 697 fts_maxarglen(char * const *argv) |
|
Line 694 fts_maxarglen(char * const *argv) |
|
max = len; |
max = len; |
return (max + 1); |
return (max + 1); |
} |
} |
|
|
#endif |
|