#include <stdio.h>
#include <errno.h>
void FromString(const char *s)
{
unsigned int Stream, Type;
char language[8] = {0};
char* description=NULL;
int n
= sscanf(s
, "%X %02X %7s %as", &Stream
, &Type
, language
, &description
); // 7 = MAXLANGCODE2 - 1 printf("Stream:%u Type:%u lang:'%s'\n", Stream
, Type
, language
); printf("desc addr:'%p'\n", description
); printf("desc:'%s'\n", description
); // XXX crashes here }
int main(int argc, char* argv[])
{
if (argc == 2)
FromString((const char*)argv[1]);
else
FromString("1 01 deu 4:3");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxlcnJuby5oPgoKdm9pZCBGcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnMpCnsKICB1bnNpZ25lZCBpbnQgU3RyZWFtLCBUeXBlOwogIGNoYXIgbGFuZ3VhZ2VbOF0gPSB7MH07CiAgY2hhciogZGVzY3JpcHRpb249TlVMTDsKICBpbnQgbiA9IHNzY2FuZihzLCAiJVggJTAyWCAlN3MgJWFzIiwgJlN0cmVhbSwgJlR5cGUsIGxhbmd1YWdlLCAmZGVzY3JpcHRpb24pOyAvLyA3ID0gTUFYTEFOR0NPREUyIC0gMQogIHByaW50ZigiZXJybm86ICVkXG4iLCBlcnJubyk7CiAgcHJpbnRmKCJuPSVkXG4iLCBuKTsKICBwcmludGYoIlN0cmVhbToldSBUeXBlOiV1IGxhbmc6JyVzJ1xuIiwgU3RyZWFtLCBUeXBlLCBsYW5ndWFnZSk7CiAgcHJpbnRmKCJkZXNjIGFkZHI6JyVwJ1xuIiwgZGVzY3JpcHRpb24pOwogIHByaW50ZigiZGVzYzonJXMnXG4iLCBkZXNjcmlwdGlvbik7IC8vIFhYWCBjcmFzaGVzIGhlcmUKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogIGlmIChhcmdjID09IDIpCiAgICBGcm9tU3RyaW5nKChjb25zdCBjaGFyKilhcmd2WzFdKTsKICBlbHNlIAogICAgRnJvbVN0cmluZygiMSAwMSBkZXUgNDozIik7CiAgCiAgcmV0dXJuIDA7Cn0K