diff --git a/hmml_to_html/hmml_to_html.c b/hmml_to_html/hmml_to_html.c index 7e369b0..7713775 100644 --- a/hmml_to_html/hmml_to_html.c +++ b/hmml_to_html/hmml_to_html.c @@ -170,13 +170,16 @@ CopyString(char Dest[], char *Format, ...) va_end(Args); } -void +int CopyStringNoFormat(char *Dest, char *String) { + int Length = 0; while(*String) { *Dest++ = *String++; + ++Length; } + return Length; } int @@ -288,7 +291,7 @@ CopyStringToBufferCSVSafe(buffer *Dest, char *String) } int -StringsDiffer(char *A, char *B) +StringsDiffer(char *A, char *B) // NOTE(matt): Two null-terminated strings { while(*A && *B && *A == *B) { @@ -298,15 +301,19 @@ StringsDiffer(char *A, char *B) } bool -StringsDifferL(char *A, char *B, int LengthofA) +StringsDifferT(char *A, // NOTE(matt): Null-terminated string + char *B, // NOTE(matt): Not null-terminated string (e.g. one mid-buffer) + char Terminator // NOTE(matt): Caller definable terminator. Pass '\0' to only match on the extent of A + ) { + int ALength = StringLength(A); int i = 0; - while(i < LengthofA && A[i] && A[i] == B[i]) + while(i < ALength && A[i] && A[i] == B[i]) { ++i; } - // TODO(matt): Uncomment - if(!A[i] && LengthofA == i)// && (B[i] == ' ' || B[i] == '\"')) + if((!Terminator && !A[i] && ALength == i) || + (!A[i] && ALength == i && (B[i] == Terminator))) { return FALSE; } @@ -705,7 +712,7 @@ BuildCategories(buffer *AnnotationClass, buffer *Category, int *MarkerIndex, boo if(*Ptr == '\"') { ++Ptr; - if(!StringsDifferL(SanitisePunctuation(Marker), Ptr, StringLength(SanitisePunctuation(Marker)))) + if(!StringsDifferT(SanitisePunctuation(Marker), Ptr, ' ')) { Found = TRUE; break; @@ -865,7 +872,7 @@ GenerateTopicColours(buffer *Colour, char *Topic) while(TopicsPtr - TopicsBuffer < TopicsLength) { TopicsPtr += StringLength(".category."); - if(!StringsDifferL(SanitisePunctuation(Topic), TopicsPtr, StringLength(Topic))) + if(!StringsDifferT(SanitisePunctuation(Topic), TopicsPtr, ' ')) { free(TopicsBuffer); fclose(TopicsFile); @@ -1836,7 +1843,8 @@ ReferencesArray[i].Identifier[j].Timecode); if(HasFilterMenu) { - CopyStringToBuffer(&FilterState, "var filterState = {\n"); + CopyStringToBuffer(&FilterState, +" var filterState = {\n"); for(int i = 0; i < UniqueTopics; ++i) { CopyStringToBuffer(&FilterState, "\"%s\":\t{ \"type\": \"%s\",\t\"off\": false },\n", @@ -1847,8 +1855,8 @@ ReferencesArray[i].Identifier[j].Timecode); CopyStringToBuffer(&FilterState, "\"%s\":\t{ \"type\": \"%s\",\t\"off\": false },\n", MediaArray[i].Marker, "medium"); } - CopyStringToBuffer(&FilterState, "};\n" - "\n"); + CopyStringToBuffer(&FilterState, +" };\n"); CopyStringToBuffer(&FilterMenu, "