#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
+#include <fmt.h>
int main() {
FASTOUTPUT
// send one line per file
struct dirent *dent;
- char encfilename[NAME_MAX*2+1];
+ char linedata[NAME_MAX*2+1+FMT_ULONG+1+FMT_ULONG+1];
while ((dent = readdir(dir)) != NULL) {
- size_t name_len = strlen(dent->d_name);
- hex(encfilename, (unsigned char *)dent->d_name, name_len);
- encfilename[name_len*2] = 0;
struct stat st;
// if we can't really see the file anyway, skip it
if (lstat(dent->d_name, &st)) continue;
- printf("%s %lu %u\n", encfilename, (unsigned long)st.st_size, (unsigned int)st.st_mode);
+ //printf("%s %lu %u\n", encfilename, (unsigned long)st.st_size, (unsigned int)st.st_mode);
+ size_t name_len = strlen(dent->d_name);
+ hex(linedata, (unsigned char *)dent->d_name, name_len);
+ char *p = linedata+name_len*2;
+ *(p++) = ' ';
+ p += fmt_ulong(p, (unsigned long)st.st_size);
+ *(p++) = ' ';
+ p += fmt_ulong(p, (unsigned int)st.st_mode);
+ *(p++) = '\n';
+ *p = 0;
+ fputs(linedata, stdout);
}
}