[Glibc-bsd-commits] r5343 - in trunk/freebsd-glue: debian include src/freebsd-glue

rmh at alioth.debian.org rmh at alioth.debian.org
Sat Jan 18 15:06:16 UTC 2014


Author: rmh
Date: 2014-01-18 15:06:16 +0000 (Sat, 18 Jan 2014)
New Revision: 5343

Added:
   trunk/freebsd-glue/src/freebsd-glue/getbsize.c
Modified:
   trunk/freebsd-glue/debian/changelog
   trunk/freebsd-glue/debian/copyright
   trunk/freebsd-glue/include/stdlib.h
   trunk/freebsd-glue/src/freebsd-glue/Makefile
Log:
Add getbsize().

Modified: trunk/freebsd-glue/debian/changelog
===================================================================
--- trunk/freebsd-glue/debian/changelog	2014-01-18 00:18:37 UTC (rev 5342)
+++ trunk/freebsd-glue/debian/changelog	2014-01-18 15:06:16 UTC (rev 5343)
@@ -7,6 +7,7 @@
     makes it possible to detect FTBFS errors that affect other platforms
     also on GNU/kFreeBSD.
   * Update embedded copy of <sys/elf_common.h>.
+  * Add getbsize().
 
  -- Robert Millan <rmh at debian.org>  Wed, 08 Jan 2014 22:36:52 +0100
 

Modified: trunk/freebsd-glue/debian/copyright
===================================================================
--- trunk/freebsd-glue/debian/copyright	2014-01-18 00:18:37 UTC (rev 5342)
+++ trunk/freebsd-glue/debian/copyright	2014-01-18 15:06:16 UTC (rev 5343)
@@ -9,6 +9,7 @@
  include/sys/cdefs.h
  include/sys/queue.h
  src/freebsd-glue/getbootfile.c
+ src/freebsd-glue/getbsize.c
  src/freebsd-glue/getcap.c
  src/freebsd-glue/getosreldate.c
  src/freebsd-glue/linkaddr.c

Modified: trunk/freebsd-glue/include/stdlib.h
===================================================================
--- trunk/freebsd-glue/include/stdlib.h	2014-01-18 00:18:37 UTC (rev 5342)
+++ trunk/freebsd-glue/include/stdlib.h	2014-01-18 15:06:16 UTC (rev 5343)
@@ -14,6 +14,7 @@
 void *reallocf(void *ptr, size_t size);
 void srandomdev (void);
 long long strtonum (const char *nptr, long long minval, long long maxval, const char **errstr);
+char *getbsize(int *, long *);
 
 char	*cgetcap(char *, const char *, int);
 int	 cgetclose(void);

Modified: trunk/freebsd-glue/src/freebsd-glue/Makefile
===================================================================
--- trunk/freebsd-glue/src/freebsd-glue/Makefile	2014-01-18 00:18:37 UTC (rev 5342)
+++ trunk/freebsd-glue/src/freebsd-glue/Makefile	2014-01-18 15:06:16 UTC (rev 5343)
@@ -4,6 +4,7 @@
 	feature_present.c \
 	fstab.c \
 	funopen.c \
+	getbsize.c \
 	getcap.c \
 	getosreldate.c \
 	random.c \

Added: trunk/freebsd-glue/src/freebsd-glue/getbsize.c
===================================================================
--- trunk/freebsd-glue/src/freebsd-glue/getbsize.c	                        (rev 0)
+++ trunk/freebsd-glue/src/freebsd-glue/getbsize.c	2014-01-18 15:06:16 UTC (rev 5343)
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 1991, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getbsize.c	8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+char *
+getbsize(headerlenp, blocksizep)
+	int *headerlenp;
+	long *blocksizep;
+{
+	static char header[20];
+	long n, max, mul, blocksize;
+	char *ep, *p;
+	const char *form;
+
+#define	KB	(1024L)
+#define	MB	(1024L * 1024L)
+#define	GB	(1024L * 1024L * 1024L)
+#define	MAXB	GB		/* No tera, peta, nor exa. */
+	form = "";
+	if ((p = getenv("BLOCKSIZE")) != NULL && *p != '\0') {
+		if ((n = strtol(p, &ep, 10)) < 0)
+			goto underflow;
+		if (n == 0)
+			n = 1;
+		if (*ep && ep[1])
+			goto fmterr;
+		switch (*ep) {
+		case 'G': case 'g':
+			form = "G";
+			max = MAXB / GB;
+			mul = GB;
+			break;
+		case 'K': case 'k':
+			form = "K";
+			max = MAXB / KB;
+			mul = KB;
+			break;
+		case 'M': case 'm':
+			form = "M";
+			max = MAXB / MB;
+			mul = MB;
+			break;
+		case '\0':
+			max = MAXB;
+			mul = 1;
+			break;
+		default:
+fmterr:			warnx("%s: unknown blocksize", p);
+			n = 512;
+			max = MAXB;
+			mul = 1;
+			break;
+		}
+		if (n > max) {
+			warnx("maximum blocksize is %ldG", MAXB / GB);
+			n = max;
+		}
+		if ((blocksize = n * mul) < 512) {
+underflow:		warnx("minimum blocksize is 512");
+			form = "";
+			blocksize = n = 512;
+		}
+	} else
+		blocksize = n = 512;
+
+	(void)snprintf(header, sizeof(header), "%ld%s-blocks", n, form);
+	*headerlenp = strlen(header);
+	*blocksizep = blocksize;
+	return (header);
+}




More information about the Glibc-bsd-commits mailing list