changeset 741:3f45fca47bec

added reporter and list features
author thomask
date Sat, 12 Nov 2005 21:56:58 +0000
parents a14f98c3ae83
children 5906350b5048
files unique.d
diffstat 1 files changed, 44 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/unique.d	Sat Nov 12 17:57:06 2005 +0000
+++ b/unique.d	Sat Nov 12 21:56:58 2005 +0000
@@ -7,6 +7,11 @@
 private char[][char[]] known;
 private uint doppelgaenger;
 
+version(reporters){
+	private import std.string;
+	private uint[char[]] reporters;
+}
+
 private char[] lastPathElem(char[] path){
 	size_t end=path.length-1;
 	size_t start;
@@ -42,6 +47,35 @@
 		}else{
 			known[base] = file;
 		}
+		
+		version(reporters){
+			// only works for UTF-8
+			char[] data=cast(char[]) read(file);
+			
+			size_t index = find(data, "@author@");
+			if(index != index.max){				
+				data = data[index + "@author@".length .. data.length];
+				
+				foreach(char end; "\r\n\x00\x0A"){
+					index = find(data, end);
+					if(index != index.max){
+						data = data[0 .. index];
+					}
+				}
+		
+				data = strip(data);
+				
+				version(verbose){
+					if(data in reporters){
+						reporters[data]++;
+					}else{
+						reporters[data]=1;
+					}
+				}else{
+					reporters[data]=1;
+				}
+			}
+		}
 	}
 	
 	if(isdir(file) && (base[0]!='.')){
@@ -72,6 +106,16 @@
 		}
 	}
 	
+	version(reporters){
+		foreach(char[] entry; reporters.keys.sort){
+			version(verbose){
+				fprintf(stderr, "%i\t%.*s\n", reporters[entry], entry);
+			}else{
+				fprintf(stderr, "%.*s\n", entry);
+			}
+		}	
+	}
+	
 	fwritef(stdout, "hits : %s\n", doppelgaenger);
 
 	return doppelgaenger > 0;