iod.c revision 3839e65723771b85975f4263102dd3ceec4523c
13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/* 23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * iod.c - Iterate a function on each entry of a directory 33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Copyright (C) 1993, 1994 Remy Card <card@masi.ibp.fr> 53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Laboratoire MASI, Institut Blaise Pascal 63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Universite Pierre et Marie Curie (Paris VI) 73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * This file can be redistributed under the terms of the GNU Library General 93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Public License 103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */ 113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/* 133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * History: 143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 93/10/30 - Creation 153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */ 163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <dirent.h> 183839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "e2p.h" 203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oint iterate_on_dir (const char * dir_name, 223839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o int (*func) (const char *, struct dirent *, void *), 233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o void * private) 243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o DIR * dir; 263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o struct dirent de; 273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o struct dirent *dep; 283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o dir = opendir (dir_name); 303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o if (dir == NULL) 313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o return -1; 323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o while ((dep = readdir (dir))) 333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o { 343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o de.d_ino = dep->d_ino; 353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o de.d_off = dep->d_off; 363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o de.d_reclen = dep->d_reclen; 373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o strcpy (de.d_name, dep->d_name); 383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o (*func) (dir_name, &de, private); 393839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o } 403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o closedir (dir); 413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o return 0; 423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 43