From 5f7c1279ca52550d0f5950d80dbd33de98b8eb4c Mon Sep 17 00:00:00 2001 From: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Thu, 17 Jan 2008 17:42:12 -0200 Subject: [PATCH] Add lzma manpage extension support. This should really be handled by the existing code to handle multiple extension formats... --- man.c | 8 ++++++++ man.h | 1 + misc.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ vendor.h | 4 ++++ 4 files changed, 63 insertions(+), 0 deletions(-) diff --git a/man.c b/man.c index 8a83b89..632eea3 100644 --- a/man.c +++ b/man.c @@ -451,6 +451,10 @@ ReadCurrentSection(Manual * local_manual, char * path) else if (streq(ptr + 1, BZIP2_EXTENSION)) *ptr = '\0'; #endif +#ifdef LZMA_EXTENSION + else if (streq(ptr + 1, LZMA_EXTENSION)) + *ptr = '\0'; +#endif } nentries = local_manual->nentries; @@ -493,6 +497,10 @@ ReadCurrentSection(Manual * local_manual, char * path) else if (streq(ptr + 1, BZIP2_EXTENSION)) *ptr = '\0'; #endif +#ifdef LZMA_EXTENSION + else if (streq(ptr + 1, LZMA_EXTENSION)) + *ptr = '\0'; +#endif #ifdef IGNORE_EXTENSION /* skip files with specified extension - they're not real man pages */ else if (streq(ptr + 1, IGNORE_EXTENSION)) { diff --git a/man.h b/man.h index 4b256a1..f7f04b4 100644 --- a/man.h +++ b/man.h @@ -167,6 +167,7 @@ typedef struct _ManpageGlobals{ Boolean compress; /* Compress file on save? */ Boolean gzip; /* Gzip file on save? */ Boolean bzip2; /* Bzip2 file on save? */ + Boolean lzma; Boolean deletetempfile; /* Need to delete tempfile when done? */ char ** section_name; /* The name of each of the sections */ diff --git a/misc.c b/misc.c index fead780..4d9ad79 100644 --- a/misc.c +++ b/misc.c @@ -263,6 +263,14 @@ FindManualFile(ManpageGlobals * man_globals, int section_num, int entry_num) return(file); } #endif +#ifdef LZMA_EXTENSION + { + sprintf(filename, "%s/%s%s/%s.%s", path, CAT, + section + len_cat, page, LZMA_EXTENSION); + if ( (file = Uncompress(man_globals, filename)) != NULL) + return(file); + } +#endif #else for(i = 0; i < strlen(COMPRESSION_EXTENSIONS); i++) { snprintf(filename, sizeof(filename), "%s/%s%s/%s.%c", path, CAT, @@ -395,6 +403,12 @@ UncompressNamed(ManpageGlobals * man_globals, char * filename, char * output, sprintf(cmdbuf, BUNZIP2_FORMAT, filename, output); else #endif +#ifdef LZMA_EXTENSION + if (streq(filename + strlen(filename) - strlen(LZMA_EXTENSION), + LZMA_EXTENSION)) + sprintf(cmdbuf, UNLZMA_FORMAT, filename, output); + else +#endif snprintf(cmdbuf, sizeof(cmdbuf), UNCOMPRESS_FORMAT, filename, output); if(system(cmdbuf) == 0) /* execute search. */ return(TRUE); @@ -822,6 +836,7 @@ UncompressUnformatted(ManpageGlobals * man_globals, char * entry, ParseEntry(entry, path, section, page); man_globals->bzip2 = FALSE; + man_globals->lzma = FALSE; #if defined(__OpenBSD__) || defined(__NetBSD__) /* @@ -891,6 +906,24 @@ UncompressUnformatted(ManpageGlobals * man_globals, char * entry, } #endif /* BZIP2_EXTENSION */ +#ifdef LZMA_EXTENSION + { + sprintf(input, "%s.%s", filename, LZMA_EXTENSION); +#ifndef HAS_MKSTEMP + if ( UncompressNamed(man_globals, input, filename) ) { +#else + if ( UncompressNamed(man_globals, input, filename, file) ) { +#endif + man_globals->compress = TRUE; + man_globals->gzip = FALSE; + man_globals->lzma = TRUE; + sprintf(man_globals->save_file, "%s/%s%s/%s.%s", path, + CAT, section + len_cat, page, LZMA_EXTENSION); + return(TRUE); + } + } +#endif /* LZMA_EXTENSION */ + /* * Look for uncompressed file first. */ @@ -978,6 +1011,23 @@ UncompressUnformatted(ManpageGlobals * man_globals, char * entry, } #endif +#ifdef LZMA_EXTENSION + { + sprintf(input, "%s.%s", filename, LZMA_EXTENSION); +#ifndef HAS_MKSTEMP + if ( UncompressNamed(man_globals, input, filename) ) { +#else + if ( UncompressNamed(man_globals, input, filename, file) ) { +#endif + man_globals->compress = TRUE; + man_globals->lzma = TRUE; + sprintf(man_globals->save_file, "%s/%s%s/%s.%s", path, + CAT, section + len_cat, page, LZMA_EXTENSION); + return(TRUE); + } + } +#endif + /* * And lastly files in a compressed directory. */ diff --git a/vendor.h b/vendor.h index 4412ccd..c08fcaa 100644 --- a/vendor.h +++ b/vendor.h @@ -138,12 +138,16 @@ from the X Consortium. # endif # define GZIP_COMPRESS "gzip" # define BZIP2_EXTENSION "bz2" +# define LZMA_EXTENSION "lzma" # ifndef HAS_MKSTEMP # define BUNZIP2_FORMAT "bunzip2 -c -d < %s > %s" +# define UNLZMA_FORMAT "unlzma -c -d < %s > %s" # else # define BUNZIP2_FORMAT "bunzip2 -c -d < %s >> %s" +# define UNLZMA_FORMAT "unlzma -c -d < %s >> %s" # endif # define BZIP2_COMPRESS "bzip2" +# define LZMA_COMPRESS "lzma" #endif -- 1.5.3.5