diff --git a/archive.c b/archive.c index 5cf3d1d..6b3c806 100644 --- a/archive.c +++ b/archive.c @@ -183,6 +183,7 @@ static int archive_init(void) /* copy and patch text_mode */ memcpy(&archive_mode, &text_mode, sizeof(ModeDef)); archive_mode.name = "archive"; + archive_mode.mode_name = NULL; archive_mode.mode_probe = archive_mode_probe; archive_mode.data_type = &archive_data_type; @@ -282,6 +283,7 @@ static int compress_init(void) /* copy and patch text_mode */ memcpy(&compress_mode, &text_mode, sizeof(ModeDef)); compress_mode.name = "compress"; + compress_mode.mode_name = NULL; compress_mode.mode_probe = compress_mode_probe; compress_mode.data_type = &compress_data_type; @@ -358,6 +360,7 @@ static int wget_init(void) /* copy and patch text_mode */ memcpy(&wget_mode, &text_mode, sizeof(ModeDef)); wget_mode.name = "wget"; + wget_mode.mode_name = NULL; wget_mode.mode_probe = wget_mode_probe; wget_mode.data_type = &wget_data_type; @@ -398,6 +401,10 @@ static int man_mode_probe(ModeDef *mode, ModeProbeData *p) } } + if (!memcmp(p->buf, ".tr *\\(**", 9) + || !memcmp(p->buf, ".\\\" ", 4)) + goto has_man; + return 0; } @@ -442,6 +449,7 @@ static int man_init(void) /* copy and patch text_mode */ memcpy(&man_mode, &text_mode, sizeof(ModeDef)); man_mode.name = "man"; + man_mode.mode_name = NULL; man_mode.mode_probe = man_mode_probe; man_mode.data_type = &man_data_type;