Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/vndcompress Move vndcompress utilities to utils.c.



details:   https://anonhg.NetBSD.org/src/rev/2a5b4e5bf8e5
branches:  trunk
changeset: 792931:2a5b4e5bf8e5
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Wed Jan 22 06:14:20 2014 +0000

description:
Move vndcompress utilities to utils.c.

diffstat:

 usr.bin/vndcompress/Makefile      |    2 +-
 usr.bin/vndcompress/utils.c       |  147 ++++++++++++++++++++++++++++++++++++++
 usr.bin/vndcompress/utils.h       |   51 +++++++++++++
 usr.bin/vndcompress/vndcompress.c |  111 +---------------------------
 4 files changed, 202 insertions(+), 109 deletions(-)

diffs (truncated from 360 to 300 lines):

diff -r 1c4d17e3d990 -r 2a5b4e5bf8e5 usr.bin/vndcompress/Makefile
--- a/usr.bin/vndcompress/Makefile      Wed Jan 22 06:14:03 2014 +0000
+++ b/usr.bin/vndcompress/Makefile      Wed Jan 22 06:14:20 2014 +0000
@@ -1,5 +1,5 @@
 PROG=  vndcompress
-SRCS=  main.c vndcompress.c vnduncompress.c
+SRCS=  main.c utils.c vndcompress.c vnduncompress.c
 
 LINKS= ${BINDIR}/vndcompress ${BINDIR}/vnduncompress
 MLINKS=        vndcompress.1 vnduncompress.1
diff -r 1c4d17e3d990 -r 2a5b4e5bf8e5 usr.bin/vndcompress/utils.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/vndcompress/utils.c       Wed Jan 22 06:14:20 2014 +0000
@@ -0,0 +1,147 @@
+/*     $NetBSD: utils.c,v 1.1 2014/01/22 06:14:20 riastradh Exp $      */
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Taylor R. Campbell.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: utils.c,v 1.1 2014/01/22 06:14:20 riastradh Exp $");
+
+#include <sys/types.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* XXX Seems to be missing from <stdio.h>...  */
+int    snprintf_ss(char *restrict, size_t, const char *restrict, ...)
+           __printflike(3, 4);
+int    vsnprintf_ss(char *restrict, size_t, const char *restrict, va_list)
+           __printflike(3, 0);
+
+#include "utils.h"
+
+/*
+ * Read, returning partial data only at end of file.
+ */
+ssize_t
+read_block(int fd, void *buffer, size_t n)
+{
+       char *p = buffer, *const end __unused = (p + n);
+       size_t total_read = 0;
+
+       while (n > 0) {
+               const ssize_t n_read = read(fd, p, n);
+               if (n_read == -1)
+                       return -1;
+               assert(n_read >= 0);
+               if (n_read == 0)
+                       break;
+
+               assert((size_t)n_read <= n);
+               n -= (size_t)n_read;
+
+               assert(p <= end);
+               assert(n_read <= (end - p));
+               p += (size_t)n_read;
+
+               assert((size_t)n_read <= (SIZE_MAX - total_read));
+               total_read += (size_t)n_read;
+       }
+
+       return total_read;
+}
+
+/*
+ * Signal-safe err/warn utilities.  The errno varieties are limited to
+ * having no format arguments for reasons of laziness.
+ */
+
+void
+err_ss(int exit_value, const char *msg)
+{
+       warn_ss(msg);
+       _Exit(exit_value);
+}
+
+void
+errx_ss(int exit_value, const char *format, ...)
+{
+       va_list va;
+
+       va_start(va, format);
+       vwarnx_ss(format, va);
+       va_end(va);
+       _Exit(exit_value);
+}
+
+void
+warn_ss(const char *msg)
+{
+       int error = errno;
+
+       warnx_ss("%s: %s", msg, strerror(error));
+
+       errno = error;
+}
+
+void
+warnx_ss(const char *format, ...)
+{
+       va_list va;
+
+       va_start(va, format);
+       vwarnx_ss(format, va);
+       va_end(va);
+}
+
+void
+vwarnx_ss(const char *format, va_list va)
+{
+       char buf[128];
+
+       (void)strlcpy(buf, getprogname(), sizeof(buf));
+       (void)strlcat(buf, ": ", sizeof(buf));
+
+       const int n = vsnprintf_ss(&buf[strlen(buf)], (sizeof(buf) -
+               strlen(buf)), format, va);
+       if (n <= 0) {
+               const char fallback[] =
+                   "vndcompress: Help!  I'm trapped in a signal handler!\n";
+               (void)write(STDERR_FILENO, fallback, __arraycount(fallback));
+       } else {
+               (void)strlcat(buf, "\n", sizeof(buf));
+               (void)write(STDERR_FILENO, buf, strlen(buf));
+       }
+}
diff -r 1c4d17e3d990 -r 2a5b4e5bf8e5 usr.bin/vndcompress/utils.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/usr.bin/vndcompress/utils.h       Wed Jan 22 06:14:20 2014 +0000
@@ -0,0 +1,51 @@
+/*     $NetBSD: utils.h,v 1.1 2014/01/22 06:14:20 riastradh Exp $      */
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Taylor R. Campbell.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef        VNDCOMPRESS_UTILS_H
+#define        VNDCOMPRESS_UTILS_H
+
+#include <sys/types.h>
+#include <sys/cdefs.h>
+
+/* XXX Seems to be missing from <stdio.h>...  */
+int    snprintf_ss(char *restrict, size_t, const char *restrict, ...)
+           __printflike(3, 4);
+int    vsnprintf_ss(char *restrict, size_t, const char *restrict, va_list)
+           __printflike(3, 0);
+
+ssize_t        read_block(int, void *, size_t);
+void   err_ss(int, const char *) __dead;
+void   errx_ss(int, const char *, ...) __printflike(2, 3) __dead;
+void   warn_ss(const char *);
+void   warnx_ss(const char *, ...) __printflike(1, 2);
+void   vwarnx_ss(const char *, va_list) __printflike(1, 0);
+
+#endif /* VNDCOMPRESS_UTILS_H */
diff -r 1c4d17e3d990 -r 2a5b4e5bf8e5 usr.bin/vndcompress/vndcompress.c
--- a/usr.bin/vndcompress/vndcompress.c Wed Jan 22 06:14:03 2014 +0000
+++ b/usr.bin/vndcompress/vndcompress.c Wed Jan 22 06:14:20 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vndcompress.c,v 1.13 2013/05/06 22:53:24 riastradh Exp $       */
+/*     $NetBSD: vndcompress.c,v 1.14 2014/01/22 06:14:20 riastradh Exp $       */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: vndcompress.c,v 1.13 2013/05/06 22:53:24 riastradh Exp $");
+__RCSID("$NetBSD: vndcompress.c,v 1.14 2014/01/22 06:14:20 riastradh Exp $");
 
 #include <sys/endian.h>
 
@@ -49,13 +49,8 @@
 #include <unistd.h>
 #include <zlib.h>
 
-/* XXX Seems to be missing from <stdio.h>...  */
-int    snprintf_ss(char *restrict, size_t, const char *restrict, ...)
-           __printflike(3, 4);
-int    vsnprintf_ss(char *restrict, size_t, const char *restrict, va_list)
-           __printflike(3, 0);
-
 #include "common.h"
+#include "utils.h"
 
 /*
  * XXX Switch to control bug-for-bug byte-for-byte compatibility with
@@ -116,12 +111,6 @@
 static void    compress_maybe_checkpoint(struct compress_state *);
 static void    compress_checkpoint(struct compress_state *);
 static void    compress_exit(struct compress_state *);
-static ssize_t read_block(int, void *, size_t);
-static void    err_ss(int, const char *) __dead;
-static void    errx_ss(int, const char *, ...) __printflike(2, 3) __dead;
-static void    warn_ss(const char *);
-static void    warnx_ss(const char *, ...) __printflike(1, 2);
-static void    vwarnx_ss(const char *, va_list) __printflike(1, 0);
 
 /*
  * Compression entry point.
@@ -949,97 +938,3 @@
        if (close(S->image_fd) == -1)
                warn("close(image fd)");
 }
-
-/*
- * Read, returning partial data only at end of file.
- */
-static ssize_t
-read_block(int fd, void *buffer, size_t n)
-{
-       char *p = buffer, *const end __unused = (p + n);
-       size_t total_read = 0;
-
-       while (n > 0) {
-               const ssize_t n_read = read(fd, p, n);
-               if (n_read == -1)
-                       return -1;
-               assert(n_read >= 0);
-               if (n_read == 0)
-                       break;
-
-               assert((size_t)n_read <= n);
-               n -= (size_t)n_read;
-
-               assert(p <= end);
-               assert(n_read <= (end - p));
-               p += (size_t)n_read;
-
-               assert((size_t)n_read <= (SIZE_MAX - total_read));
-               total_read += (size_t)n_read;
-       }
-
-       return total_read;
-}
-
-/*
- * Signal-safe err/warn utilities.  The errno varieties are limited to



Home | Main Index | Thread Index | Old Index