diff -Nurd most-5.1.0.orig/src/file.c most-5.1.0/src/file.c --- most-5.1.0.orig/src/file.c 2019-02-17 23:05:44.000000000 -0500 +++ most-5.1.0/src/file.c 2021-12-23 09:29:26.000000000 -0500 @@ -77,7 +77,7 @@ static int open_compressed_file(char *file, int mode, int *size) { int fd; - char buf[4], cmdbuf[2*MAX_PATHLEN]; + char buf[6], cmdbuf[2*MAX_PATHLEN]; struct stat st; # ifdef O_BINARY @@ -97,7 +97,7 @@ if (fd < 0) return fd; - if (4 == read(fd, buf, 4)) + if (6 == read(fd, buf, 6)) { char *cmd = NULL; @@ -113,6 +113,20 @@ { cmd = MOST_BZIP2_POPEN_FORMAT; } + else if ((buf[0] == (char) 0xff) + && (buf[1] == 'L') && (buf[2] == 'Z') + && (buf[3] == 'M') && (buf[4] == 'A') + && (buf[5] == (char) 0x00)) + { + cmd = MOST_LZMA_POPEN_FORMAT; + } + else if ((buf[0] == (char) 0xfd) + && (buf[1] == '7') && (buf[2] == 'z') + && (buf[3] == 'X') && (buf[4] == 'Z') + && (buf[5] == (char) 0x00)) + { + cmd = MOST_XZ_POPEN_FORMAT; + } if (cmd != NULL) { diff -Nurd most-5.1.0.orig/src/file.h most-5.1.0/src/file.h --- most-5.1.0.orig/src/file.h 2019-02-17 23:05:44.000000000 -0500 +++ most-5.1.0/src/file.h 2021-12-23 09:28:15.000000000 -0500 @@ -22,6 +22,8 @@ #define MOST_MAX_FILES 4096 #define MOST_GUNZIP_POPEN_FORMAT "gzip -dc \"%s\"" #define MOST_BZIP2_POPEN_FORMAT "bzip2 -dc \"%s\"" +#define MOST_LZMA_POPEN_FORMAT "lzma -dc \"%s\"" +#define MOST_XZ_POPEN_FORMAT "xz -dc \"%s\"" extern void most_reread_file (void); extern void most_read_to_line (int);