Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/e2fsprogs/e2fs_lib.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 2  Line 2 
2  /*  /*
3   * See README for additional information   * See README for additional information
4   *   *
5   * This file can be redistributed under the terms of the GNU Library General   * Licensed under GPLv2, see file LICENSE in this tarball for details.
  * Public License  
6   */   */
7    
8  #include "libbb.h"  #include "libbb.h"
# Line 29  static void close_silently(int fd) Line 28  static void close_silently(int fd)
28    
29  /* Iterate a function on each entry of a directory */  /* Iterate a function on each entry of a directory */
30  int iterate_on_dir(const char *dir_name,  int iterate_on_dir(const char *dir_name,
31   int (*func)(const char *, struct dirent *, void *),   int FAST_FUNC (*func)(const char *, struct dirent *, void *),
32   void * private)   void *private)
33  {  {
34   DIR *dir;   DIR *dir;
35   struct dirent *de, *dep;   struct dirent *de;
  int max_len, len;  
   
  max_len = PATH_MAX + sizeof(struct dirent);  
  de = xmalloc(max_len+1);  
  memset(de, 0, max_len+1);  
36    
37   dir = opendir(dir_name);   dir = opendir(dir_name);
38   if (dir == NULL) {   if (dir == NULL) {
  free(de);  
39   return -1;   return -1;
40   }   }
41   while ((dep = readdir(dir))) {   while ((de = readdir(dir)) != NULL) {
  len = sizeof(struct dirent);  
  if (len < dep->d_reclen)  
  len = dep->d_reclen;  
  if (len > max_len)  
  len = max_len;  
  memcpy(de, dep, len);  
42   func(dir_name, de, private);   func(dir_name, de, private);
43   }   }
44   closedir(dir);   closedir(dir);
  free(de);  
45   return 0;   return 0;
46  }  }
47    
# Line 67  int fgetsetversion(const char *name, uns Line 53  int fgetsetversion(const char *name, uns
53   int fd, r;   int fd, r;
54   IF_LONG_IS_WIDER(int ver;)   IF_LONG_IS_WIDER(int ver;)
55    
56   fd = open(name, O_NONBLOCK);   fd = open(name, O_RDONLY | O_NONBLOCK);
57   if (fd == -1)   if (fd == -1)
58   return -1;   return -1;
59   if (!get_version) {   if (!get_version) {
# Line 109  int fgetsetflags(const char *name, unsig Line 95  int fgetsetflags(const char *name, unsig
95   ) {   ) {
96   goto notsupp;   goto notsupp;
97   }   }
98   fd = open(name, O_NONBLOCK); /* neither read nor write asked for */   fd = open(name, O_RDONLY | O_NONBLOCK); /* neither read nor write asked for */
99   if (fd == -1)   if (fd == -1)
100   return -1;   return -1;
101    

Legend:
Removed from v.983  
changed lines
  Added in v.984