#include #include #include #include #include #include "irdr.h" #include "istack.h" #include "dirimpl.h" #include "dir-read.h" DIRRV dir_read(void **privp __attribute__((__unused__)), DIROP op, ...) { va_list ap; char *fn; FILE *f; va_start(ap,op); switch (op) { default: abort(); break; case DIROP_INIT: return(DIRRV_MORE); break; case DIROP_ARG: fn = va_arg(ap,char *); if (fn) { f = fopen(fn,"r"); if (f) { istack_push(&i_stdio,f,fn); } else { istack_err("%s: %s",fn,strerror(errno)); } } else { istack_err("missing filename for read"); } return(DIRRV_NOMORE); break; } va_end(ap); abort(); }