From 45e878bba6b490bf204db824be71f070689c8737 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Mon, 26 Jun 2006 15:10:48 +1000 Subject: Improve ftw handling. If not 'ftw' is available, still allow openning of devices by dev number. More recent version of uclibc support nftw, so add support to check for that. --- util.c | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index 2cb6dd3..08319cb 100644 --- a/util.c +++ b/util.c @@ -354,32 +354,6 @@ struct devmap { } *devlist = NULL; int devlist_ready = 0; -#ifdef UCLIBC -int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s) -{ - return 0; -} -char *map_dev(int major, int minor, int create) -{ -#if 0 - fprintf(stderr, "Warning - fail to map %d,%d to a device name\n", - major, minor); -#endif - return NULL; -} -#else - -#ifdef __dietlibc__ -int add_dev_1(const char *name, const struct stat *stb, int flag) -{ - return add_dev(name, stb, flag, NULL); -} -int nftw(const char *path, int (*han)(const char *name, const struct stat *stb, int flag, struct FTW *s), int nopenfd, int flags) -{ - return ftw(path, add_dev_1, nopenfd); -} -#endif - int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s) { struct stat st; @@ -404,6 +378,28 @@ int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s) return 0; } +#ifndef HAVE_NFTW +#ifdef HAVE_FTW +int add_dev_1(const char *name, const struct stat *stb, int flag) +{ + return add_dev(name, stb, flag, NULL); +} +int nftw(const char *path, int (*han)(const char *name, const struct stat *stb, int flag, struct FTW *s), int nopenfd, int flags) +{ + return ftw(path, add_dev_1, nopenfd); +} +#else +int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s) +{ + return 0; +} +int nftw(const char *path, int (*han)(const char *name, const struct stat *stb, int flag, struct FTW *s), int nopenfd, int flags) +{ + return 0; +} +#endif /* HAVE_FTW */ +#endif /* HAVE_NFTW */ + /* * Find a block device with the right major/minor number. * If we find multiple names, choose the shortest. @@ -464,8 +460,6 @@ char *map_dev(int major, int minor, int create) return nonstd ? nonstd : std; } -#endif - unsigned long calc_csum(void *super, int bytes) { unsigned long long newcsum = 0; -- cgit