#include #include #include #include #define MAX_DIR_ENTRIES 20 void main(const char *arg) { uint8_t dn; const char *path = remove_prefix(arg, &dn); tell_user_sz("Directory info for "); tell_user_sz(*arg ? arg : "drive root"); tell_user_sz("\n"); _dir_info_entry infos[MAX_DIR_ENTRIES]; uint8_t count = _enumerate_dir(dn, path, infos, MAX_DIR_ENTRIES); tell_user_sz( count == MAX_DIR_ENTRIES ? "Truncated to 20 entries.\n\n" : "\n" ); uint32_t total_size = 0; if (!count) tell_user_sz("(none)\n"); for (uint8_t i = 0; i < count; ++i) { tell_user_sz(infos[i].name); tell_user_sz(": "); if (infos[i].is_dir) tell_user_sz("dir"); else { char nbuf[11]; itosz(infos[i].size, nbuf); tell_user_sz(nbuf); tell_user_sz(" bytes"); total_size += infos[i].size; } tell_user_sz("\n"); } tell_user_sz("\nTotal size without subdirectories: "); char nbuf[11]; itosz(total_size, nbuf); tell_user_sz(nbuf); tell_user_sz(" bytes\n"); }