On Mon, May 21, 2001 at 06:31:38PM -0700, Eric G. Miller wrote: Okay, I'm really bored so I whipped this up real quick. USE AT YOUR OWN PERIL!
To compile: $ gcc -Wall -o badfile badfile.c Run in each directory (directory is hardcoded to "./") $ ./badfile Luck, -- Eric G. Miller <egm2@jps.net>
#include <stdio.h> #include <ctype.h> #include <stddef.h> #include <unistd.h> #include <string.h> #include <dirent.h> int main (void) { char *p, buf[NAME_MAX + 1]; DIR *directory; union { struct dirent d; char b[offsetof (struct dirent, d_name) + NAME_MAX + 1]; } u; struct dirent *d; size_t len; int flag = 0; directory = opendir ("./"); fprintf (stderr, "Examining...\n"); while (readdir_r (directory, &u.d, &d) == 0 && d != NULL) { len = d->d_reclen; if ((len == 1 && d->d_name[0] == '.') || (len == 2 && d->d_name[0] == '.' && d->d_name[1] == '.')) { fprintf (stderr, "Skipping <%s>\n", d->d_name); continue; } strncpy (buf, d->d_name, len); flag = 0; for (p = buf; *p ; p++) { if (!isprint (*p)) { *p = '_'; flag = 1; } } if (flag) { fprintf (stderr, "Renaming a bad file to <%s>\n", buf); rename (d->d_name, buf); } else { fprintf (stderr, "Skipping <%s>\n", d->d_name); } } /* End while() */ closedir (directory); fprintf (stderr, "Finished!\n"); return 0; }