Source-Changes-HG archive

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

[src/trunk]: src/bin/csh use strpct(3) from libutil.



details:   https://anonhg.NetBSD.org/src/rev/5d1b7cd13195
branches:  trunk
changeset: 768864:5d1b7cd13195
user:      christos <christos%NetBSD.org@localhost>
date:      Sun Aug 28 07:49:16 2011 +0000

description:
use strpct(3) from libutil.

diffstat:

 bin/csh/Makefile |   8 +++-
 bin/csh/strpct.c |  93 --------------------------------------------------------
 bin/csh/time.c   |  10 +++--
 3 files changed, 11 insertions(+), 100 deletions(-)

diffs (170 lines):

diff -r bb38c0047fb5 -r 5d1b7cd13195 bin/csh/Makefile
--- a/bin/csh/Makefile  Sun Aug 28 07:48:50 2011 +0000
+++ b/bin/csh/Makefile  Sun Aug 28 07:49:16 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.32 2011/08/25 15:44:51 joerg Exp $
+#      $NetBSD: Makefile,v 1.33 2011/08/28 07:49:16 christos Exp $
 #      @(#)Makefile    8.1 (Berkeley) 5/31/93
 #
 # C Shell with process control; VM/UNIX VAX Makefile
@@ -13,7 +13,7 @@
 CPPFLAGS+=-I${.CURDIR} -I. ${DFLAGS}
 SRCS=  alloc.c char.c const.c csh.c dir.c dol.c err.c exec.c exp.c file.c \
        func.c glob.c hist.c init.c lex.c misc.c parse.c printf.c proc.c \
-       sem.c set.c str.c strpct.c time.c
+       sem.c set.c str.c time.c
 .PATH: ${NETBSDSRCDIR}/usr.bin/printf
 
 MLINKS=        csh.1 limit.1 csh.1 alias.1 csh.1 bg.1 csh.1 dirs.1 csh.1 fg.1 \
@@ -55,7 +55,9 @@
 COPTS.err.c = -Wno-format-nonliteral
 COPTS.printf.c = -Wno-format-nonliteral
 COPTS.proc.c = -Wno-format-nonliteral
-COPTS.strpct.c = -Wno-format-nonliteral
+
+LDADD+=-lutil
+DPADD+=${LIBUTIL}
 
 .include <bsd.prog.mk>
 .include <bsd.subdir.mk>
diff -r bb38c0047fb5 -r 5d1b7cd13195 bin/csh/strpct.c
--- a/bin/csh/strpct.c  Sun Aug 28 07:48:50 2011 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/* $NetBSD: strpct.c,v 1.8 2009/02/13 00:46:25 abs Exp $ */
-
-/*-
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Erik E. Fair
- *
- * 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.
- */
-
-/*
- * Calculate a percentage without resorting to floating point
- * and return a pointer to a string
- *
- * "digits" is the number of digits past the decimal place you want
- * (zero being the straight percentage with no decimals)
- *
- * Erik E. Fair <fair%clock.org@localhost>, May 8, 1997
- */
-
-#include <sys/cdefs.h>
-__RCSID("$NetBSD: strpct.c,v 1.8 2009/02/13 00:46:25 abs Exp $");
-
-#include <sys/types.h>
-
-#include <limits.h>
-#include <stdio.h>
-
-char *strpct(u_long, u_long, u_int);
-
-char *
-strpct(u_long numerator, u_long denominator, u_int digits)
-{
-       static char percent[32];
-       u_long factor, result;
-       u_int u;
-
-       /* I should check for digit overflow here, too XXX */
-       factor = 100L;
-       for (u = 0; u < digits; u++) {
-               factor *= 10;
-       }
-
-       /* watch out for overflow! */
-       if (numerator < (ULONG_MAX / factor))
-               numerator *= factor;
-       else {
-               /* toss some of the bits of lesser significance */
-               denominator /= factor;
-       }
-
-       if (denominator == 0L)
-               denominator = 1L;
-
-       result = numerator / denominator;
-
-       if (digits == 0)
-               (void)snprintf(percent, sizeof(percent), "%lu%%", result);
-       else {
-               char    fmt[32];
-
-               /* indirection to produce the right output format */
-               (void)snprintf(fmt, sizeof(fmt), "%%lu.%%0%ulu%%%%", digits);
-
-               factor /= 100L;         /* undo initialization */
-
-               (void)snprintf(percent, sizeof(percent), fmt, result / factor,
-                   result % factor);
-       }       
-
-       return (percent);
-}
diff -r bb38c0047fb5 -r 5d1b7cd13195 bin/csh/time.c
--- a/bin/csh/time.c    Sun Aug 28 07:48:50 2011 +0000
+++ b/bin/csh/time.c    Sun Aug 28 07:49:16 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: time.c,v 1.17 2008/02/24 05:20:17 dholland Exp $ */
+/* $NetBSD: time.c,v 1.18 2011/08/28 07:49:16 christos Exp $ */
 
 /*-
  * Copyright (c) 1980, 1991, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)time.c     8.1 (Berkeley) 5/31/93";
 #else
-__RCSID("$NetBSD: time.c,v 1.17 2008/02/24 05:20:17 dholland Exp $");
+__RCSID("$NetBSD: time.c,v 1.18 2011/08/28 07:49:16 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -44,13 +44,13 @@
 #include "csh.h"
 #include "extern.h"
 #endif
+#include <util.h>
 
 /*
  * C Shell - routines handling process timing and niceing
  */
 static void pdeltat(FILE *, struct timeval *, struct timeval *);
 static void pcsecs(FILE *, long);
-extern char *strpct(u_long, u_long, u_int);
 
 #ifndef NOT_CSH
 void
@@ -186,7 +186,9 @@
                if (ms == 0) {
                        (void)fputs("0.0%", fp);
                } else {
-                       (void)fputs(strpct((ulong)t, (ulong)ms, 1), fp);
+                       char pb[32];
+                       (void)fputs(strpct(pb, sizeof(pb), t, ms, 1), fp);
+                       (void)fputc('%', fp);
                }
                break;
            case 'R':           /* page reclaims */



Home | Main Index | Thread Index | Old Index