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/81f5f80ae66f
branches: trunk
changeset: 326191:81f5f80ae66f
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 b2110821c8d2 -r 81f5f80ae66f 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 b2110821c8d2 -r 81f5f80ae66f 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 b2110821c8d2 -r 81f5f80ae66f 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 b2110821c8d2 -r 81f5f80ae66f 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