On Fri, Feb 20, 2009 at 4:11 PM, Daniel Escasa <[email protected]> wrote:
> Sabi ni Fooler noong Fri, Feb 20, 2009 at 3:11 PM:
>> as like i said... if you cant find in google.. you can find it here in plug 
>> :->
>
> To clarify, Google did give me links to utilities, but they were for
> Windows. Wasn't about to boot into Windows just to run those utils.

ok to make you happy... ill make a utility for you :->

a simple C program using recursive algorithm to traverse a tree or
directory and then change to lowercase.. you can compile this either
in linux or xBSD...

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>

#define NAMELEN         256

void Rename(char *path, char *oldname) {
char *o, *n;
char newname[NAMELEN];
char new[NAMELEN], old[NAMELEN];

        for (o = oldname, n = newname; *o; o++, n++) {
                *n = *o | 0x20;
        }
        *n = 0;
        if (strcmp(oldname, newname)) {
                snprintf(old, NAMELEN, "%s/%s", path, oldname);
                snprintf(new, NAMELEN, "%s/%s", path, newname);
                if (rename(old, new) == -1) {
                        perror(old);
                        exit(1);
                }
        }
}

void RecurseDIR(char *path) {
DIR *dir;
struct dirent *drt;
char newpath[NAMELEN];

        if ((dir = opendir(path))) {
                while ((drt = readdir(dir))) {
                        if ((drt->d_type & DT_DIR) && !strstr("..",
drt->d_name)) {
                                snprintf(newpath, NAMELEN, "%s/%s",
path, drt->d_name);
                                RecurseDIR(newpath);
                                Rename(path, drt->d_name);
                        }
                        if (drt->d_type & DT_REG) {
                                Rename(path, drt->d_name);
                        }
                }
                closedir(dir);
        }
}

int main(int argc, char *argv[]) {

        RecurseDIR(argc == 2 ? argv[1] : ".");

        return (0);
}

saving to let say danny.c and to compile...

gcc -ansi -pedantic -Wall -O3 -D_BSD_SOURCE -o danny danny.c

syntax of the program...

danny [path]

if there is a path.. all the files and directories under that path are
rename to lowercase.. if there is no path.. current directory is
used..

fooler.
_________________________________________________
Philippine Linux Users' Group (PLUG) Mailing List
http://lists.linux.org.ph/mailman/listinfo/plug
Searchable Archives: http://archives.free.net.ph

Reply via email to