Currently, apr_check_dir_empty() is living in the Subversion source tree. The implementation looks portable, though; is there any reason not to move this into APR?
apr_status_t apr_check_dir_empty (const char *path, apr_pool_t *pool) { apr_status_t apr_err, retval; apr_dir_t *dir; apr_finfo_t finfo; apr_err = apr_dir_open (&dir, path, pool); if (apr_err) return apr_err; /* All systems return "." and ".." as the first two files, so read past them unconditionally. */ apr_err = apr_dir_read (&finfo, APR_FINFO_NAME, dir); if (apr_err) return apr_err; apr_err = apr_dir_read (&finfo, APR_FINFO_NAME, dir); if (apr_err) return apr_err; /* Now, there should be nothing left. If there is something left, return EGENERAL. */ apr_err = apr_dir_read (&finfo, APR_FINFO_NAME, dir); if (APR_STATUS_IS_ENOENT (apr_err)) retval = APR_SUCCESS; else if (! apr_err) retval = APR_EGENERAL; else retval = apr_err; apr_err = apr_dir_close (dir); if (apr_err) return apr_err; return retval; } Thoughts?, -Karl