Mercurial > projects > dstress
comparison unique.d @ 741:3f45fca47bec
added reporter and list features
author | thomask |
---|---|
date | Sat, 12 Nov 2005 21:56:58 +0000 |
parents | 5ba45899cddd |
children |
comparison
equal
deleted
inserted
replaced
740:a14f98c3ae83 | 741:3f45fca47bec |
---|---|
4 private import std.stdio; | 4 private import std.stdio; |
5 private import std.path; | 5 private import std.path; |
6 | 6 |
7 private char[][char[]] known; | 7 private char[][char[]] known; |
8 private uint doppelgaenger; | 8 private uint doppelgaenger; |
9 | |
10 version(reporters){ | |
11 private import std.string; | |
12 private uint[char[]] reporters; | |
13 } | |
9 | 14 |
10 private char[] lastPathElem(char[] path){ | 15 private char[] lastPathElem(char[] path){ |
11 size_t end=path.length-1; | 16 size_t end=path.length-1; |
12 size_t start; | 17 size_t start; |
13 | 18 |
40 fwritef(stdout, "%s :\n\t%s\n\t%s\n", base, file, *tmp); | 45 fwritef(stdout, "%s :\n\t%s\n\t%s\n", base, file, *tmp); |
41 doppelgaenger++; | 46 doppelgaenger++; |
42 }else{ | 47 }else{ |
43 known[base] = file; | 48 known[base] = file; |
44 } | 49 } |
50 | |
51 version(reporters){ | |
52 // only works for UTF-8 | |
53 char[] data=cast(char[]) read(file); | |
54 | |
55 size_t index = find(data, "@author@"); | |
56 if(index != index.max){ | |
57 data = data[index + "@author@".length .. data.length]; | |
58 | |
59 foreach(char end; "\r\n\x00\x0A"){ | |
60 index = find(data, end); | |
61 if(index != index.max){ | |
62 data = data[0 .. index]; | |
63 } | |
64 } | |
65 | |
66 data = strip(data); | |
67 | |
68 version(verbose){ | |
69 if(data in reporters){ | |
70 reporters[data]++; | |
71 }else{ | |
72 reporters[data]=1; | |
73 } | |
74 }else{ | |
75 reporters[data]=1; | |
76 } | |
77 } | |
78 } | |
45 } | 79 } |
46 | 80 |
47 if(isdir(file) && (base[0]!='.')){ | 81 if(isdir(file) && (base[0]!='.')){ |
48 foreach(char[] entry; listdir(file)){ | 82 foreach(char[] entry; listdir(file)){ |
49 add(file~std.path.sep~entry); | 83 add(file~std.path.sep~entry); |
70 foreach(char[] entry; known.keys.sort){ | 104 foreach(char[] entry; known.keys.sort){ |
71 fwritef(stderr, "\t%s\n", known[entry]); | 105 fwritef(stderr, "\t%s\n", known[entry]); |
72 } | 106 } |
73 } | 107 } |
74 | 108 |
109 version(reporters){ | |
110 foreach(char[] entry; reporters.keys.sort){ | |
111 version(verbose){ | |
112 fprintf(stderr, "%i\t%.*s\n", reporters[entry], entry); | |
113 }else{ | |
114 fprintf(stderr, "%.*s\n", entry); | |
115 } | |
116 } | |
117 } | |
118 | |
75 fwritef(stdout, "hits : %s\n", doppelgaenger); | 119 fwritef(stdout, "hits : %s\n", doppelgaenger); |
76 | 120 |
77 return doppelgaenger > 0; | 121 return doppelgaenger > 0; |
78 } | 122 } |