Listing 1: The full cat program
#include "apr_pools.h"
#include "apr_file_io.h"
#define STR_LEN 256
int main(int argc, const char * const argv[])
{
apr_pool_t *pool;
apr_file_t *thefile = NULL;
apr_file_t *out = NULL;
char str[STR_LEN];
apr_app_initialize(&argc, &argv, NULL);
atexit(apr_terminate);
apr_pool_create(&pool, NULL);
apr_file_open_stdout(&out, pool);
if (apr_file_open(&thefile, argv[1], APR_READ | APR_CREATE,
APR_UREAD | APR_UWRITE | APR_GREAD, pool) !=
APR_SUCCESS) {
apr_file_printf(out, "Could not open file %s\n", argv[1]);
}
while (apr_file_eof(thefile) != APR_EOF) {
apr_size_t bytes;
apr_file_gets(str, STR_LEN, thefile);
bytes = strlen(str);
apr_file_write(out, str, &bytes);
}
apr_pool_destroy(pool);
}