Author: bapt
Date: Wed Jun  3 13:32:28 2015
New Revision: 283945
URL: https://svnweb.freebsd.org/changeset/base/283945

Log:
  Replace the gunzip(1) system by a minimalistic zlib based implementation.
  
  This allows to not depend on gunzip(1) at bootstrap time, and is good enough 
to
  wait for upstream real implementation using zlib.

Modified:
  head/contrib/mdocml/read.c
  head/usr.bin/mandoc/Makefile

Modified: head/contrib/mdocml/read.c
==============================================================================
--- head/contrib/mdocml/read.c  Wed Jun  3 13:26:15 2015        (r283944)
+++ head/contrib/mdocml/read.c  Wed Jun  3 13:32:28 2015        (r283945)
@@ -28,6 +28,7 @@
 #include <assert.h>
 #include <ctype.h>
 #include <errno.h>
+#include <err.h>
 #include <fcntl.h>
 #include <stdarg.h>
 #include <stdint.h>
@@ -35,6 +36,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <zlib.h>
 
 #include "mandoc.h"
 #include "mandoc_aux.h"
@@ -792,6 +794,27 @@ mparse_readfd(struct mparse *curp, int f
        return(curp->file_status);
 }
 
+/*
+ * hack to avoid depending on gnuzip(1) waiting for upstream proper
+ * support
+ */
+static int
+gunzip(const char *file)
+{
+       gzFile            gz;
+       char              buf[8192];
+       int               r;
+
+       gz = gzopen(file, "r");
+       if (gz == NULL)
+               err(EXIT_FAILURE, "cannot open %s", file);
+
+       while ((r = gzread(gz, buf, sizeof(buf))) > 0)
+               fwrite(buf, 1, r, stdout);
+
+       gzclose(gz);
+       return (EXIT_SUCCESS);
+}
 enum mandoclevel
 mparse_open(struct mparse *curp, int *fd, const char *file)
 {
@@ -846,9 +869,7 @@ mparse_open(struct mparse *curp, int *fd
                        perror("dup");
                        exit((int)MANDOCLEVEL_SYSERR);
                }
-               execlp("gunzip", "gunzip", "-c", file, NULL);
-               perror("exec");
-               exit((int)MANDOCLEVEL_SYSERR);
+               exit(gunzip(file));
        default:
                close(pfd[1]);
                *fd = pfd[0];

Modified: head/usr.bin/mandoc/Makefile
==============================================================================
--- head/usr.bin/mandoc/Makefile        Wed Jun  3 13:26:15 2015        
(r283944)
+++ head/usr.bin/mandoc/Makefile        Wed Jun  3 13:32:28 2015        
(r283945)
@@ -84,6 +84,6 @@ WARNS?=       2
 CFLAGS+= -DHAVE_CONFIG_H \
         -I${.CURDIR}/../../lib/libohash/ \
         -I${.CURDIR}/../../contrib/sqlite3
-LIBADD=        ohash sqlite3
+LIBADD=        ohash sqlite3 z
 
 .include <bsd.prog.mk>
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to