Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jun 2015 13:32:29 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283945 - in head: contrib/mdocml usr.bin/mandoc
Message-ID:  <201506031332.t53DWTXU055075@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506031332.t53DWTXU055075>