summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libass/ass.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 51fa201..8581141 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -363,6 +363,7 @@ static int process_event_tail(ASS_Track *track, ASS_Event *event,
NEXT(p, token);
ALIAS(End, Duration) // temporarily store end timecode in event->Duration
+ ALIAS(Actor, Name) // both variants are used in files
PARSE_START
INTVAL(Layer)
STYLEVAL(Style)
@@ -579,6 +580,14 @@ static int process_style(ASS_Track *track, char *str)
static bool format_line_compare(const char *fmt1, const char *fmt2)
{
+#define TOKEN_ALIAS1(token, name, alias) \
+ if (token ## _end - token ## _start == sizeof( #alias ) - 1 && \
+ !strncmp(token ## _start, #alias, sizeof( #alias ) - 1)) { \
+ token ## _start = #name; \
+ token ## _end = token ## _start + sizeof( #name ) - 1; \
+ }
+#define TOKEN_ALIAS(name, alias) TOKEN_ALIAS1(tk1, name, alias) TOKEN_ALIAS1(tk2, name, alias)
+
while (true) {
const char *tk1_start, *tk2_start;
const char *tk1_end, *tk2_end;
@@ -591,12 +600,16 @@ static bool format_line_compare(const char *fmt1, const char *fmt2)
advance_token_pos(&fmt1, &tk1_start, &tk1_end);
advance_token_pos(&fmt2, &tk2_start, &tk2_end);
+ TOKEN_ALIAS(Name, Actor)
if ((tk1_end-tk1_start) != (tk2_end-tk2_start))
return false;
if (ass_strncasecmp(tk1_start, tk2_start, tk1_end-tk1_start))
return false;
}
return *fmt1 == *fmt2;
+
+#undef TOKEN_ALIAS
+#undef TOKEN_ALIAS1
}