Posted on Mon Mar 13, 2017
Maybe (and I say: maybe) things are getting into shape. Here is a program that prints the entries of a directory:
#include "ccexceptions.h"
int
main (int argc, const char *const argv[])
{
static const char * progname = "listdir";
cce_location_t L[1];
cce_handler_dirstream_t dirstream_H[1];
const char * pathname;
pathname = (2 == argc)? argv[1] : "./";
if (cce_location(L)) {
cce_run_error_handlers(L);
fprintf(stderr, "%s: error: %s\n", progname,
cce_condition_static_message(cce_condition(L)));
cce_condition_free(cce_condition(L));
exit(EXIT_FAILURE);
} else {
DIR * dirstream;
struct dirent * direntry;
dirstream = cce_sys_opendir(L, pathname);
cce_cleanup_handler_dirstream_init(L, dirstream_H, dirstream);
while ((direntry = cce_sys_readdir(L, dirstream))) {
printf("%s\n", direntry->d_name);
fflush(stdout);
}
cce_run_cleanup_handlers(L);
exit(EXIT_SUCCESS);
}
}
I’m adding wrappers for the most common posix functions, along with some gnu C Library and Linux specific functions.