Hey,
Jeg har problemer med at læse en .rar fil's header. Det jeg prøver er at få navnet på filen inden i, eller nærmere dens extension, så jeg kan sætte en ekstern variabel.
Ifølge dokumentationen findes filnavnet i 0x200, 0x28 eller 0x20 (0x28 hvis den findes ellers 0x20):
https://github.com/siz-/xmplayer/blob/master/mplayer/stream/unrar.h#L24I unrar.c på linje 255 (
https://github.com/siz-/xmplayer/blob/master/mplayer/stream/unrar.c#L255) har jeg tilføjet flg. kode:
- if (buf[0x28]) {
- archived_file = buf[0x28];
- } else if (buf[0x20]) {
- archived_file = buf[0x20];
- }
archived_file er en char* sat i unrar.h (ikke vist på github), og jeg har også prøvet med buf[i + 0x28] (i er 0x14), som den selv gør længere oppe i samme fil.
Der bruges read(), og buf skulle gerne få char*s tilført..
Dernæst prøver jeg at sætte en ekstern variabel her
https://github.com/siz-/xmplayer/blob/master/mplayer/stream/stream_rar.c#L128 med følgende kode:
- extern char *demuxer_name;
- char *ext = strrchr(archived_file, '.');
- if (strlen(ext) > 0) {
- sprintf(ext, "%s", ext + 1);
- if (strcmp(ext, "mkv") == 0) {
- demuxer_name = "mkv";
- } else if ((strcmp(ext, "mov") == 0) || (strcmp(ext, "mp4") == 0)) {
- demuxer_name = "mov";
- } else if (strcmp(ext, "avi") == 0) {
- demuxer_name = "avi";
- }
- }
Jeg kan ikke se hvor jeg gør det forkert, jeg er ikke sikker på hvordan man får læst filnavnet ud af headeren, umiddelbart ser det ud til at strlen(ext) forbliver 0..
Håber I kan hjælpe.