Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 2aa39b423ede5fc57c0cec6c58460887 > files > 2

xman-1.0.3-6mdv2009.0.src.rpm

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