cpack_repository/commit

Make GIT output handling string-safe

authorJan Wielemaker
Thu Dec 19 10:04:06 2013 +0100
committerJan Wielemaker
Thu Dec 19 10:04:06 2013 +0100
commitc3d2138cb92d83cc4a07ee94edbe6f05d1100213
treeff355750f82118c173ce5f3b236147f27f0c0f88
parent2335159535ba3fdc8b0989804be120d684743a6d
Diff style: patch stat
diff --git a/components/cpack.pl b/components/cpack.pl
index f78390a..f839e65 100644
--- a/components/cpack.pl
+++ b/components/cpack.pl
@@ -337,10 +337,17 @@ diff_lines([Line|T], Diff) -->
 	    diff_lines(T, Diff)
 	).
 
+:- if(current_predicate(string_codes/2)).
+term_expansion(diff_line_class(Start, Diff, Class),
+	       diff_line_class(Codes, Diff, Class)) :-
+	string_codes(Start, ClosedCodes),
+	append(ClosedCodes, _, Codes).
+:- else.
 term_expansion(diff_line_class(Start, Diff, Class),
 	       diff_line_class(Codes, Diff, Class)) :-
 	is_list(Start),
 	append(Start, _, Codes).
+:- endif.
 
 diff_line_class("diff ", patch, diff).
 diff_line_class("--- ", patch, a).
@@ -363,12 +370,14 @@ dirstat(File, Sep, [D0|RD], Plusses, Minus) -->
 	string(Sep),
 	digit(D0),digits(RD),
 	" ",
-	codes("+", Plusses),
-	codes("-", Minus).
+	plusses(Plusses),
+	minuss(Minus).
 
-codes(Set, [H|T]) --> [H], { memberchk(H, Set) }, !, codes(Set, T).
-codes(_, []) --> [].
+plusses([0'+|T]) --> "+", !, plusses(T).
+plusses([]) --> [].
 
+minuss([0'+|T]) --> "-", !, minuss(T).
+minuss([]) --> [].
 
 tr_commit(Label, Field, Record) -->
 	{ commit_data(Field, Record, Value) },