42 while(p[offset] ==
' ' || p[offset] ==
'\t') {
45 if(p[offset] ==
'[' && p[offset + 1] >=
'a' && p[offset + 1] <=
'z') {
58 if(p[offset] ==
' ' || p[offset] ==
'\t') {
60 }
else if(p[offset] ==
'[') {
63 }
else if (p[offset] ==
']' && in_brackets) {
66 }
else if(in_brackets &&
67 (p[offset] ==
':' || p[offset] ==
'.' || p[offset] ==
'-' ||
68 (p[offset] >=
'0' && p[offset] <=
'9'))) {
82 while(p[offset] ==
' ' || p[offset] ==
'\t') {
85 if(p[offset] !=
'[') {
88 if(sscanf(p,
"[-%"SCNu64
":%"SCNu64
".%"SCNu64
"]", &mm, &ss, &cs) == 3) {
90 *start = -(int64_t) (mm*60000 + ss*1000 + cs*10);
91 }
else if(sscanf(p,
"[%"SCNu64
":%"SCNu64
".%"SCNu64
"]", &mm, &ss, &cs) == 3) {
92 *start = mm*60000 + ss*1000 + cs*10;
98 }
while(p[offset] && p[offset-1] !=
']');
126 if(!memcmp(p->
buf,
"\xef\xbb\xbf", 3)) {
129 while(p->
buf[offset] ==
'\n' || p->
buf[offset] ==
'\r') {
132 if(p->
buf[offset] !=
'[') {
137 if(!memcmp(p->
buf + offset,
"offset:", 7)) {
140 if(sscanf(p->
buf + offset,
"%"SCNd64
":%"SCNu64
".%"SCNu64
"]",
141 &mm, &ss, &cs) == 3) {
146 metadata_item->
native; metadata_item++) {
147 size_t metadata_item_len = strlen(metadata_item->
native);
148 if(p->
buf[offset + metadata_item_len] ==
':' &&
149 !memcmp(p->
buf + offset, metadata_item->
native, metadata_item_len)) {
175 if(header_offset >= 0) {
176 char *comma_offset = strchr(line.str,
':');
178 char *right_bracket_offset = strchr(line.str,
']');
179 if(!right_bracket_offset) {
183 *right_bracket_offset = *comma_offset =
'\0';
184 if(strcmp(line.str + 1,
"offset") ||
185 sscanf(comma_offset + 1,
"%"SCNd64, &lrc->
ts_offset) != 1) {
189 *right_bracket_offset =
']';
195 int64_t ts_stroffset = 0;
196 int64_t ts_stroffset_incr = 0;
197 int64_t ts_strlength =
count_ts(line.str);
199 while((ts_stroffset_incr =
read_ts(line.str + ts_stroffset,
201 ts_stroffset += ts_stroffset_incr;
203 line.len - ts_strlength, 0);
225 int64_t min_ts, int64_t ts, int64_t max_ts,
int flags)
229 min_ts, ts, max_ts, flags);