Mercurial > projects > dstress
view unique.d @ 707:5ba45899cddd
minor infrastructure fixes
author | thomask |
---|---|
date | Thu, 20 Oct 2005 06:53:54 +0000 |
parents | 8dc894322ce8 |
children | 3f45fca47bec |
line wrap: on
line source
module cn.kuehne.uniquefile; private import std.file; private import std.stdio; private import std.path; private char[][char[]] known; private uint doppelgaenger; private char[] lastPathElem(char[] path){ size_t end=path.length-1; size_t start; for(end = path.length-1; path[end]==std.path.sep[0]; end--){ if(end==0){ return std.path.sep; } } for(start = end-1; start<start.max; start--){ if(path[start]==std.path.sep[0]){ break; } } if(start==start.max){ start=0; }else{ start+=1; } return path[start .. end+1]; } private void add(char[] file){ char[] base = lastPathElem(file); if(isfile(file)){ char[]* tmp = base in known; if(tmp){ fwritef(stdout, "%s :\n\t%s\n\t%s\n", base, file, *tmp); doppelgaenger++; }else{ known[base] = file; } } if(isdir(file) && (base[0]!='.')){ foreach(char[] entry; listdir(file)){ add(file~std.path.sep~entry); } } } int main(char[][] args){ if(args.length<2){ fwritef(stderr, "at least one directory name is required as argument\n"); return -1; } doppelgaenger = 0; foreach(char[] file; args[1 .. args.length]){ if(file=="."){ file=getcwd(); } add(file); } version(verbose){ foreach(char[] entry; known.keys.sort){ fwritef(stderr, "\t%s\n", known[entry]); } } fwritef(stdout, "hits : %s\n", doppelgaenger); return doppelgaenger > 0; }