diff options
author | shemminger <shemminger> | 2006-02-01 17:58:00 +0000 |
---|---|---|
committer | shemminger <shemminger> | 2006-02-01 17:58:00 +0000 |
commit | 0a5a8a838009222e9b2ddbc570a6a001ce5fc603 (patch) | |
tree | 511bf66e423e84c48c6da36ae47f77f98926f3f4 /libbridge/libbridge_init.c | |
parent | 104fa8f949a48756874ce2a301c6b500ac051466 (diff) | |
download | android_external_brctl-0a5a8a838009222e9b2ddbc570a6a001ce5fc603.tar.gz android_external_brctl-0a5a8a838009222e9b2ddbc570a6a001ce5fc603.tar.bz2 android_external_brctl-0a5a8a838009222e9b2ddbc570a6a001ce5fc603.zip |
Fix bugs with new sysfsutils library interface
Diffstat (limited to 'libbridge/libbridge_init.c')
-rw-r--r-- | libbridge/libbridge_init.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/libbridge/libbridge_init.c b/libbridge/libbridge_init.c index 7cbf767..4c34b31 100644 --- a/libbridge/libbridge_init.c +++ b/libbridge/libbridge_init.c @@ -21,6 +21,7 @@ #include <unistd.h> #include <errno.h> #include <string.h> +#include <dirent.h> #include "libbridge.h" #include "libbridge_private.h" @@ -206,8 +207,8 @@ int br_foreach_port(const char *brname, { #ifdef HAVE_LIBSYSFS struct sysfs_class_device *dev; - struct dlist *list; - const char *name; + DIR *dir; + struct dirent *dirent; int err = 0; char path[SYSFS_PATH_MAX]; @@ -218,24 +219,27 @@ int br_foreach_port(const char *brname, snprintf(path, sizeof(path), "%s/%s", dev->path, SYSFS_BRIDGE_PORT_SUBDIR); - dprintf("path=%s\n", path); - list = sysfs_open_directory_list(path); - if (!list) { + + dir = opendir(path); + if (!dir) { /* no /sys/class/net/ethX/brif subdirectory * either: old kernel, or not really a bridge */ - dprintf("sysfs_open_directory failed\n"); goto old; } err = 0; - dlist_for_each_data(list, name, const char) { + while ((dirent = readdir(dir)) != NULL) { + if (0 == strcmp(dirent->d_name, ".")) + continue; + if (0 == strcmp(dirent->d_name, "..")) + continue; ++err; - if (iterator(brname, name, arg)) + if (iterator(brname, dirent->d_name, arg)) break; } + closedir(dir); - sysfs_close_list(list); return err; old: |