r1193 - in trunk/libbsd: . src
Author: guillem
Date: 2006-02-14 05:39:29 +0000 (Tue, 14 Feb 2006)
New Revision: 1193
Added:
trunk/libbsd/src/
trunk/libbsd/src/arc4random.c
trunk/libbsd/src/bsd_getopt.c
trunk/libbsd/src/err.c
trunk/libbsd/src/fgetln.c
trunk/libbsd/src/fmtcheck.c
trunk/libbsd/src/inet_net_pton.c
trunk/libbsd/src/md5.copyright
trunk/libbsd/src/md5c.c
trunk/libbsd/src/strlcat.c
trunk/libbsd/src/strlcpy.c
Removed:
trunk/libbsd/arc4random.c
trunk/libbsd/bsd_getopt.c
trunk/libbsd/err.c
trunk/libbsd/fgetln.c
trunk/libbsd/fmtcheck.c
trunk/libbsd/inet_net_pton.c
trunk/libbsd/md5.copyright
trunk/libbsd/md5c.c
trunk/libbsd/strlcat.c
trunk/libbsd/strlcpy.c
Modified:
trunk/libbsd/ChangeLog
trunk/libbsd/Makefile
Log:
Move sources to src/.
Modified: trunk/libbsd/ChangeLog
===================================================================
--- trunk/libbsd/ChangeLog 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/ChangeLog 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,5 +1,29 @@
2006-02-14 Guillem Jover <guillem@debian.org>
+ * arc4random.c: Move to ...
+ * src/arc4random.c: ... here.
+ * bsd_getopt.c: Move to ...
+ * src/bsd_getopt.c:: ... here.
+ * err.c: Move to ...
+ * src/err.c:: ... here.
+ * fgetln.c: Move to ...
+ * src/fgetln.c:: ... here.
+ * fmtcheck.c: Move to ...
+ * src/fmtcheck.c:: ... here.
+ * inet_net_pton.c: Move to ...
+ * src/inet_net_pton.c:: ... here.
+ * strlcat.c: Move to ...
+ * src/strlcat.c:: ... here.
+ * strlcpy.c: Move to ...
+ * src/strlcpy.c:: ... here.
+ * md5c.c: Move to ...
+ * src/md5c.c:: ... here.
+ * md5.copyright: Move to ...
+ * src/md5.copyright:: ... here.
+ * Makefile (LIB_SRCS): Automatically prefix the src/ dir.
+
+2006-02-14 Guillem Jover <guillem@debian.org>
+
* Makefile (LIB_SRCS): Line wrap.
(LIB_INCLUDES): List only the files, automatically prefix the dir.
(LIB_MANS): Likewise.
Modified: trunk/libbsd/Makefile
===================================================================
--- trunk/libbsd/Makefile 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/Makefile 2006-02-14 05:39:29 UTC (rev 1193)
@@ -4,8 +4,9 @@
# $Id$
#
-LIB_SRCS = arc4random.c bsd_getopt.c err.c fgetln.c inet_net_pton.c \
- strlcat.c strlcpy.c md5c.c fmtcheck.c
+LIB_SRCS := arc4random.c bsd_getopt.c err.c fgetln.c inet_net_pton.c \
+ strlcat.c strlcpy.c md5c.c fmtcheck.c
+LIB_SRCS := $(patsubst %,src/%,$(LIB_SRCS))
LIB_INCLUDES := err.h getopt.h ip_icmp.h random.h queue.h md5.h string.h \
bsd.h stdlib.h
Deleted: trunk/libbsd/arc4random.c
===================================================================
--- trunk/libbsd/arc4random.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/arc4random.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,191 +0,0 @@
-/*
- * Arc4 random number generator for OpenBSD.
- * Copyright 1996 David Mazieres <dm@lcs.mit.edu>.
- *
- * Modification and redistribution in source and binary forms is
- * permitted provided that due credit is given to the author and the
- * OpenBSD project (for instance by leaving this copyright notice
- * intact).
- */
-
-/*
- * This code is derived from section 17.1 of Applied Cryptography,
- * second edition, which describes a stream cipher allegedly
- * compatible with RSA Labs "RC4" cipher (the actual description of
- * which is a trade secret). The same algorithm is used as a stream
- * cipher called "arcfour" in Tatu Ylonen's ssh package.
- *
- * Here the stream cipher has been modified always to include the time
- * when initializing the state. That makes it impossible to
- * regenerate the same random sequence twice, so this can't be used
- * for encryption, but will generate good random numbers.
- *
- * RC4 is a registered trademark of RSA Laboratories.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/arc4random.c,v 1.10 2004/03/24 14:44:57 green Exp $");
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-struct arc4_stream {
- u_int8_t i;
- u_int8_t j;
- u_int8_t s[256];
-};
-
-#define RANDOMDEV "/dev/urandom"
-#define THREAD_LOCK()
-#define THREAD_UNLOCK()
-
-static struct arc4_stream rs;
-static int rs_initialized;
-static int rs_stired;
-
-static inline u_int8_t arc4_getbyte(struct arc4_stream *);
-static void arc4_stir(struct arc4_stream *);
-
-static inline void
-arc4_init(struct arc4_stream *as)
-{
- int n;
-
- for (n = 0; n < 256; n++)
- as->s[n] = n;
- as->i = 0;
- as->j = 0;
-}
-
-static inline void
-arc4_addrandom(struct arc4_stream *as, u_char *dat, int datlen)
-{
- int n;
- u_int8_t si;
-
- as->i--;
- for (n = 0; n < 256; n++) {
- as->i = (as->i + 1);
- si = as->s[as->i];
- as->j = (as->j + si + dat[n % datlen]);
- as->s[as->i] = as->s[as->j];
- as->s[as->j] = si;
- }
-}
-
-static void
-arc4_stir(struct arc4_stream *as)
-{
- int fd, n;
- struct {
- struct timeval tv;
- pid_t pid;
- u_int8_t rnd[128 - sizeof(struct timeval) - sizeof(pid_t)];
- } rdat;
-
- gettimeofday(&rdat.tv, NULL);
- rdat.pid = getpid();
- fd = open(RANDOMDEV, O_RDONLY, 0);
- if (fd >= 0) {
- (void) read(fd, rdat.rnd, sizeof(rdat.rnd));
- close(fd);
- }
- /* fd < 0? Ah, what the heck. We'll just take whatever was on the
- * stack... */
-
- arc4_addrandom(as, (void *) &rdat, sizeof(rdat));
-
- /*
- * Throw away the first N bytes of output, as suggested in the
- * paper "Weaknesses in the Key Scheduling Algorithm of RC4"
- * by Fluher, Mantin, and Shamir. N=1024 is based on
- * suggestions in the paper "(Not So) Random Shuffles of RC4"
- * by Ilya Mironov.
- */
- for (n = 0; n < 1024; n++)
- arc4_getbyte(as);
-}
-
-static inline u_int8_t
-arc4_getbyte(struct arc4_stream *as)
-{
- u_int8_t si, sj;
-
- as->i = (as->i + 1);
- si = as->s[as->i];
- as->j = (as->j + si);
- sj = as->s[as->j];
- as->s[as->i] = sj;
- as->s[as->j] = si;
-
- return (as->s[(si + sj) & 0xff]);
-}
-
-static inline u_int32_t
-arc4_getword(struct arc4_stream *as)
-{
- u_int32_t val;
-
- val = arc4_getbyte(as) << 24;
- val |= arc4_getbyte(as) << 16;
- val |= arc4_getbyte(as) << 8;
- val |= arc4_getbyte(as);
-
- return (val);
-}
-
-static void
-arc4_check_init(void)
-{
- if (!rs_initialized) {
- arc4_init(&rs);
- rs_initialized = 1;
- }
-}
-
-static void
-arc4_check_stir(void)
-{
- if (!rs_stired) {
- arc4_stir(&rs);
- rs_stired = 1;
- }
-}
-
-u_int32_t
-arc4random()
-{
- u_int32_t rnd;
-
- THREAD_LOCK();
- arc4_check_init();
- arc4_check_stir();
- rnd = arc4_getword(&rs);
- THREAD_UNLOCK();
-
- return (rnd);
-}
-
-#if 0
-/*-------- Test code for i386 --------*/
-#include <stdio.h>
-#include <machine/pctr.h>
-int
-main(int argc, char **argv)
-{
- const int iter = 1000000;
- int i;
- pctrval v;
-
- v = rdtsc();
- for (i = 0; i < iter; i++)
- arc4random();
- v = rdtsc() - v;
- v /= iter;
-
- printf("%qd cycles\n", v);
-}
-#endif
Deleted: trunk/libbsd/bsd_getopt.c
===================================================================
--- trunk/libbsd/bsd_getopt.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/bsd_getopt.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,15 +0,0 @@
-#include <bsd/getopt.h>
-
-int optreset = 0;
-
-int
-bsd_getopt (int argc, char **argv, char *shortopts)
-{
- if (optreset == 1)
- {
- optreset = 0;
- optind = 0;
- }
-
- return getopt (argc, argv, shortopts);
-}
Deleted: trunk/libbsd/err.c
===================================================================
--- trunk/libbsd/err.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/err.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,63 +0,0 @@
-/* Copyright (C) 2006 Robert Millan
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301, USA. */
-
-#include <bsd/err.h>
-#include <errno.h>
-#include <stdarg.h>
-
-void
-warnc (int code, const char *format, ...)
-{
- int tmp = errno;
- va_list ap;
- va_start (ap, format);
-
- errno = code;
- warn (format, ap);
- errno = tmp;
-
- va_end (ap);
-}
-
-void
-vwarnc (int code, const char *format, va_list ap)
-{
- int tmp = errno;
-
- errno = code;
- vwarn (format, ap);
- errno = tmp;
-}
-
-void
-errc (int status, int code, const char *format, ...)
-{
- va_list ap;
- va_start (ap, format);
-
- errno = code;
- err (status, format, ap);
-
- va_end (ap);
-}
-
-void
-verrc (int status, int code, const char *format, va_list ap)
-{
- errno = code;
- verr (status, format, ap);
-}
Deleted: trunk/libbsd/fgetln.c
===================================================================
--- trunk/libbsd/fgetln.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/fgetln.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,28 +0,0 @@
-
-#include <stdio.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-#include <string.h>
-
-#ifdef __GLIBC__
-char *
-fgetln (stream, len)
- FILE *stream;
- size_t *len;
-{
- char *line=NULL;
- size_t nread = 0;
-
- while (nread == 1) {
- nread = getline (&line, len, stream);
- if (nread == -1)
- return NULL;
- }
-
- (*len)--; /* get rid of the trailing \0, fgetln
- does not have it */
-
- return line;
-}
-#endif
-
Deleted: trunk/libbsd/fmtcheck.c
===================================================================
--- trunk/libbsd/fmtcheck.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/fmtcheck.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,267 +0,0 @@
-/*-
- * Copyright (c) 2000 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code was contributed to The NetBSD Foundation by Allen Briggs.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation 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 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.
- */
-
-/* $NetBSD: fmtcheck.c,v 1.2 2000/11/01 01:17:20 briggs Exp $ */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: /repoman/r/ncvs/src/lib/libc/gen/fmtcheck.c,v 1.8 2005/03/21 08:00:55 das Exp $");
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-__weak_reference(__fmtcheck, fmtcheck);
-
-enum __e_fmtcheck_types {
- FMTCHECK_START,
- FMTCHECK_SHORT,
- FMTCHECK_INT,
- FMTCHECK_LONG,
- FMTCHECK_QUAD,
- FMTCHECK_PTRDIFFT,
- FMTCHECK_SIZET,
- FMTCHECK_SHORTPOINTER,
- FMTCHECK_INTPOINTER,
- FMTCHECK_LONGPOINTER,
- FMTCHECK_QUADPOINTER,
- FMTCHECK_PTRDIFFTPOINTER,
- FMTCHECK_SIZETPOINTER,
-#ifndef NO_FLOATING_POINT
- FMTCHECK_DOUBLE,
- FMTCHECK_LONGDOUBLE,
-#endif
- FMTCHECK_STRING,
- FMTCHECK_WIDTH,
- FMTCHECK_PRECISION,
- FMTCHECK_DONE,
- FMTCHECK_UNKNOWN
-};
-typedef enum __e_fmtcheck_types EFT;
-
-#define RETURN(pf,f,r) do { \
- *(pf) = (f); \
- return r; \
- } /*NOTREACHED*/ /*CONSTCOND*/ while (0)
-
-static EFT
-get_next_format_from_precision(const char **pf)
-{
- int sh, lg, quad, longdouble, ptrdifft, sizet;
- const char *f;
-
- sh = lg = quad = longdouble = ptrdifft = sizet = 0;
-
- f = *pf;
- switch (*f) {
- case 'h':
- f++;
- sh = 1;
- break;
- case 'l':
- f++;
- if (!*f) RETURN(pf,f,FMTCHECK_UNKNOWN);
- if (*f == 'l') {
- f++;
- quad = 1;
- } else {
- lg = 1;
- }
- break;
- case 'q':
- f++;
- quad = 1;
- break;
- case 't':
- f++;
- ptrdifft = 1;
- break;
- case 'z':
- f++;
- sizet = 1;
- break;
- case 'L':
- f++;
- longdouble = 1;
- break;
- default:
- break;
- }
- if (!*f) RETURN(pf,f,FMTCHECK_UNKNOWN);
- if (strchr("diouxX", *f)) {
- if (longdouble)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- if (lg)
- RETURN(pf,f,FMTCHECK_LONG);
- if (quad)
- RETURN(pf,f,FMTCHECK_QUAD);
- if (ptrdifft)
- RETURN(pf,f,FMTCHECK_PTRDIFFT);
- if (sizet)
- RETURN(pf,f,FMTCHECK_SIZET);
- RETURN(pf,f,FMTCHECK_INT);
- }
- if (*f == 'n') {
- if (longdouble)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- if (sh)
- RETURN(pf,f,FMTCHECK_SHORTPOINTER);
- if (lg)
- RETURN(pf,f,FMTCHECK_LONGPOINTER);
- if (quad)
- RETURN(pf,f,FMTCHECK_QUADPOINTER);
- if (ptrdifft)
- RETURN(pf,f,FMTCHECK_PTRDIFFTPOINTER);
- if (sizet)
- RETURN(pf,f,FMTCHECK_SIZETPOINTER);
- RETURN(pf,f,FMTCHECK_INTPOINTER);
- }
- if (strchr("DOU", *f)) {
- if (sh + lg + quad + longdouble + ptrdifft + sizet)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- RETURN(pf,f,FMTCHECK_LONG);
- }
-#ifndef NO_FLOATING_POINT
- if (strchr("aAeEfFgG", *f)) {
- if (longdouble)
- RETURN(pf,f,FMTCHECK_LONGDOUBLE);
- if (sh + lg + quad + ptrdifft + sizet)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- RETURN(pf,f,FMTCHECK_DOUBLE);
- }
-#endif
- if (*f == 'c') {
- if (sh + lg + quad + longdouble + ptrdifft + sizet)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- RETURN(pf,f,FMTCHECK_INT);
- }
- if (*f == 's') {
- if (sh + lg + quad + longdouble + ptrdifft + sizet)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- RETURN(pf,f,FMTCHECK_STRING);
- }
- if (*f == 'p') {
- if (sh + lg + quad + longdouble + ptrdifft + sizet)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- RETURN(pf,f,FMTCHECK_LONG);
- }
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- /*NOTREACHED*/
-}
-
-static EFT
-get_next_format_from_width(const char **pf)
-{
- const char *f;
-
- f = *pf;
- if (*f == '.') {
- f++;
- if (*f == '*') {
- RETURN(pf,f,FMTCHECK_PRECISION);
- }
- /* eat any precision (empty is allowed) */
- while (isdigit(*f)) f++;
- if (!*f) RETURN(pf,f,FMTCHECK_UNKNOWN);
- }
- RETURN(pf,f,get_next_format_from_precision(pf));
- /*NOTREACHED*/
-}
-
-static EFT
-get_next_format(const char **pf, EFT eft)
-{
- int infmt;
- const char *f;
-
- if (eft == FMTCHECK_WIDTH) {
- (*pf)++;
- return get_next_format_from_width(pf);
- } else if (eft == FMTCHECK_PRECISION) {
- (*pf)++;
- return get_next_format_from_precision(pf);
- }
-
- f = *pf;
- infmt = 0;
- while (!infmt) {
- f = strchr(f, '%');
- if (f == NULL)
- RETURN(pf,f,FMTCHECK_DONE);
- f++;
- if (!*f)
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- if (*f != '%')
- infmt = 1;
- else
- f++;
- }
-
- /* Eat any of the flags */
- while (*f && (strchr("#'0- +", *f)))
- f++;
-
- if (*f == '*') {
- RETURN(pf,f,FMTCHECK_WIDTH);
- }
- /* eat any width */
- while (isdigit(*f)) f++;
- if (!*f) {
- RETURN(pf,f,FMTCHECK_UNKNOWN);
- }
-
- RETURN(pf,f,get_next_format_from_width(pf));
- /*NOTREACHED*/
-}
-
-__const char *
-__fmtcheck(const char *f1, const char *f2)
-{
- const char *f1p, *f2p;
- EFT f1t, f2t;
-
- if (!f1) return f2;
-
- f1p = f1;
- f1t = FMTCHECK_START;
- f2p = f2;
- f2t = FMTCHECK_START;
- while ((f1t = get_next_format(&f1p, f1t)) != FMTCHECK_DONE) {
- if (f1t == FMTCHECK_UNKNOWN)
- return f2;
- f2t = get_next_format(&f2p, f2t);
- if (f1t != f2t)
- return f2;
- }
- return f1;
-}
Deleted: trunk/libbsd/inet_net_pton.c
===================================================================
--- trunk/libbsd/inet_net_pton.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/inet_net_pton.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char orig_rcsid[] = "From Id: inet_net_pton.c,v 1.8 1996/11/21 10:28:12 vixie Exp $";
-#endif
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.9 2003/09/15 23:38:06 fenner Exp $");
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) strlen(sprintf/**/x)
-#else
-# define SPRINTF(x) ((size_t)sprintf x)
-#endif
-
-static int inet_net_pton_ipv4(const char *src, u_char *dst, size_t size);
-
-/*
- * static int
- * inet_net_pton(af, src, dst, size)
- * convert network number from presentation to network format.
- * accepts hex octets, hex strings, decimal octets, and /CIDR.
- * "size" is in bytes and describes "dst".
- * return:
- * number of bits, either imputed classfully or specified with /CIDR,
- * or -1 if some failure occurred (check errno). ENOENT means it was
- * not a valid network specification.
- * author:
- * Paul Vixie (ISC), June 1996
- */
-int
-inet_net_pton(af, src, dst, size)
- int af;
- const char *src;
- void *dst;
- size_t size;
-{
- switch (af) {
- case AF_INET:
- return (inet_net_pton_ipv4(src, dst, size));
- default:
- errno = EAFNOSUPPORT;
- return (-1);
- }
-}
-
-/*
- * static int
- * inet_net_pton_ipv4(src, dst, size)
- * convert IPv4 network number from presentation to network format.
- * accepts hex octets, hex strings, decimal octets, and /CIDR.
- * "size" is in bytes and describes "dst".
- * return:
- * number of bits, either imputed classfully or specified with /CIDR,
- * or -1 if some failure occurred (check errno). ENOENT means it was
- * not an IPv4 network specification.
- * note:
- * network byte order assumed. this means 192.5.5.240/28 has
- * 0x11110000 in its fourth octet.
- * author:
- * Paul Vixie (ISC), June 1996
- */
-static int
-inet_net_pton_ipv4(src, dst, size)
- const char *src;
- u_char *dst;
- size_t size;
-{
- static const char
- xdigits[] = "0123456789abcdef",
- digits[] = "0123456789";
- int n, ch, tmp, dirty, bits;
- const u_char *odst = dst;
-
- ch = *src++;
- if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
- && isascii(src[1]) && isxdigit(src[1])) {
- /* Hexadecimal: Eat nybble string. */
- if (size <= 0)
- goto emsgsize;
- *dst = 0, dirty = 0;
- src++; /* skip x or X. */
- while ((ch = *src++) != '\0' &&
- isascii(ch) && isxdigit(ch)) {
- if (isupper(ch))
- ch = tolower(ch);
- n = strchr(xdigits, ch) - xdigits;
- assert(n >= 0 && n <= 15);
- *dst |= n;
- if (!dirty++)
- *dst <<= 4;
- else if (size-- > 0)
- *++dst = 0, dirty = 0;
- else
- goto emsgsize;
- }
- if (dirty)
- size--;
- } else if (isascii(ch) && isdigit(ch)) {
- /* Decimal: eat dotted digit string. */
- for (;;) {
- tmp = 0;
- do {
- n = strchr(digits, ch) - digits;
- assert(n >= 0 && n <= 9);
- tmp *= 10;
- tmp += n;
- if (tmp > 255)
- goto enoent;
- } while ((ch = *src++) != '\0' &&
- isascii(ch) && isdigit(ch));
- if (size-- <= 0)
- goto emsgsize;
- *dst++ = (u_char) tmp;
- if (ch == '\0' || ch == '/')
- break;
- if (ch != '.')
- goto enoent;
- ch = *src++;
- if (!isascii(ch) || !isdigit(ch))
- goto enoent;
- }
- } else
- goto enoent;
-
- bits = -1;
- if (ch == '/' && isascii(src[0]) && isdigit(src[0]) && dst > odst) {
- /* CIDR width specifier. Nothing can follow it. */
- ch = *src++; /* Skip over the /. */
- bits = 0;
- do {
- n = strchr(digits, ch) - digits;
- assert(n >= 0 && n <= 9);
- bits *= 10;
- bits += n;
- } while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch));
- if (ch != '\0')
- goto enoent;
- if (bits > 32)
- goto emsgsize;
- }
-
- /* Firey death and destruction unless we prefetched EOS. */
- if (ch != '\0')
- goto enoent;
-
- /* If nothing was written to the destination, we found no address. */
- if (dst == odst)
- goto enoent;
- /* If no CIDR spec was given, infer width from net class. */
- if (bits == -1) {
- if (*odst >= 240) /* Class E */
- bits = 32;
- else if (*odst >= 224) /* Class D */
- bits = 4;
- else if (*odst >= 192) /* Class C */
- bits = 24;
- else if (*odst >= 128) /* Class B */
- bits = 16;
- else /* Class A */
- bits = 8;
- /* If imputed mask is narrower than specified octets, widen. */
- if (bits < ((dst - odst) * 8))
- bits = (dst - odst) * 8;
- }
- /* Extend network to cover the actual mask. */
- while (bits > ((dst - odst) * 8)) {
- if (size-- <= 0)
- goto emsgsize;
- *dst++ = '\0';
- }
- return (bits);
-
- enoent:
- errno = ENOENT;
- return (-1);
-
- emsgsize:
- errno = EMSGSIZE;
- return (-1);
-}
-
-/*
- * Weak aliases for applications that use certain private entry points,
- * and fail to include <arpa/inet.h>.
- */
-#undef inet_net_pton
-//__weak_reference(__inet_net_pton, inet_net_pton);
Deleted: trunk/libbsd/md5.copyright
===================================================================
--- trunk/libbsd/md5.copyright 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/md5.copyright 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,21 +0,0 @@
-.\" $FreeBSD: src/lib/libmd/md5.copyright,v 1.5 1999/08/28 00:05:06 peter Exp $
-Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-.Pp
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-.Pp
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-.Pp
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-.Pp
-These notices must be retained in any copies of any part of this
-documentation and/or software.
Deleted: trunk/libbsd/md5c.c
===================================================================
--- trunk/libbsd/md5c.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/md5c.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,336 +0,0 @@
-/*
- * MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
- *
- * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
- * rights reserved.
- *
- * License to copy and use this software is granted provided that it
- * is identified as the "RSA Data Security, Inc. MD5 Message-Digest
- * Algorithm" in all material mentioning or referencing this software
- * or this function.
- *
- * License is also granted to make and use derivative works provided
- * that such works are identified as "derived from the RSA Data
- * Security, Inc. MD5 Message-Digest Algorithm" in all material
- * mentioning or referencing the derived work.
- *
- * RSA Data Security, Inc. makes no representations concerning either
- * the merchantability of this software or the suitability of this
- * software for any particular purpose. It is provided "as is"
- * without express or implied warranty of any kind.
- *
- * These notices must be retained in any copies of any part of this
- * documentation and/or software.
- *
- * This code is the same as the code published by RSA Inc. It has been
- * edited for clarity and style only.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libmd/md5c.c,v 1.16 2003/06/05 13:17:32 markm Exp $");
-
-#include <sys/types.h>
-
-#ifdef _KERNEL
-#include <sys/systm.h>
-#else
-#include <string.h>
-#endif
-
-//#include <machine/endian.h>
-//#include <sys/endian.h>
-#include <bsd/md5.h>
-
-static void MD5Transform(u_int32_t [4], const unsigned char [64]);
-
-#ifdef _KERNEL
-#define memset(x,y,z) bzero(x,z);
-#define memcpy(x,y,z) bcopy(y, x, z)
-#endif
-
-#if (BYTE_ORDER == LITTLE_ENDIAN)
-#define Encode memcpy
-#define Decode memcpy
-#else
-
-/*
- * Encodes input (u_int32_t) into output (unsigned char). Assumes len is
- * a multiple of 4.
- */
-
-static void
-Encode (unsigned char *output, u_int32_t *input, unsigned int len)
-{
- unsigned int i;
- u_int32_t *op = (u_int32_t *)output;
-
- for (i = 0; i < len / 4; i++)
- op[i] = htole32(input[i]);
-}
-
-/*
- * Decodes input (unsigned char) into output (u_int32_t). Assumes len is
- * a multiple of 4.
- */
-
-static void
-Decode (u_int32_t *output, const unsigned char *input, unsigned int len)
-{
- unsigned int i;
- const u_int32_t *ip = (const u_int32_t *)input;
-
- for (i = 0; i < len / 4; i++)
- output[i] = le32toh(ip[i]);
-}
-#endif
-
-static unsigned char PADDING[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* F, G, H and I are basic MD5 functions. */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits. */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/*
- * FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
- * Rotation is separate from addition to prevent recomputation.
- */
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (u_int32_t)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-
-/* MD5 initialization. Begins an MD5 operation, writing a new context. */
-
-void
-MD5Init (context)
- MD5_CTX *context;
-{
-
- context->count[0] = context->count[1] = 0;
-
- /* Load magic initialization constants. */
- context->state[0] = 0x67452301;
- context->state[1] = 0xefcdab89;
- context->state[2] = 0x98badcfe;
- context->state[3] = 0x10325476;
-}
-
-/*
- * MD5 block update operation. Continues an MD5 message-digest
- * operation, processing another message block, and updating the
- * context.
- */
-
-void
-MD5Update (context, input, inputLen)
- MD5_CTX *context;
- const unsigned char *input;
- unsigned int inputLen;
-{
- unsigned int i, idx, partLen;
-
- /* Compute number of bytes mod 64 */
- idx = (unsigned int)((context->count[0] >> 3) & 0x3F);
-
- /* Update number of bits */
- if ((context->count[0] += ((u_int32_t)inputLen << 3))
- < ((u_int32_t)inputLen << 3))
- context->count[1]++;
- context->count[1] += ((u_int32_t)inputLen >> 29);
-
- partLen = 64 - idx;
-
- /* Transform as many times as possible. */
- if (inputLen >= partLen) {
- memcpy((void *)&context->buffer[idx], (const void *)input,
- partLen);
- MD5Transform (context->state, context->buffer);
-
- for (i = partLen; i + 63 < inputLen; i += 64)
- MD5Transform (context->state, &input[i]);
-
- idx = 0;
- }
- else
- i = 0;
-
- /* Buffer remaining input */
- memcpy ((void *)&context->buffer[idx], (const void *)&input[i],
- inputLen-i);
-}
-
-/*
- * MD5 padding. Adds padding followed by original length.
- */
-
-void
-MD5Pad (context)
- MD5_CTX *context;
-{
- unsigned char bits[8];
- unsigned int idx, padLen;
-
- /* Save number of bits */
- Encode (bits, context->count, 8);
-
- /* Pad out to 56 mod 64. */
- idx = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (idx < 56) ? (56 - idx) : (120 - idx);
- MD5Update (context, PADDING, padLen);
-
- /* Append length (before padding) */
- MD5Update (context, bits, 8);
-}
-
-/*
- * MD5 finalization. Ends an MD5 message-digest operation, writing the
- * the message digest and zeroizing the context.
- */
-
-void
-MD5Final (digest, context)
- unsigned char digest[16];
- MD5_CTX *context;
-{
- /* Do padding. */
- MD5Pad (context);
-
- /* Store state in digest */
- Encode (digest, context->state, 16);
-
- /* Zeroize sensitive information. */
- memset ((void *)context, 0, sizeof (*context));
-}
-
-/* MD5 basic transformation. Transforms state based on block. */
-
-static void
-MD5Transform (state, block)
- u_int32_t state[4];
- const unsigned char block[64];
-{
- u_int32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
- Decode (x, block, 64);
-
- /* Round 1 */
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
- FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
- FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
- FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
- FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
- FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
- FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
- FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
- FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
- FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
- FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
- FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
- FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
- FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
- FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
- FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
- FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
- GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
- GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
- GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
- GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
- GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
- GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
- GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
- GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
- GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
- GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
- GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
- GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
- GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
- GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
- GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
- GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
- /* Round 3 */
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
- HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
- HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
- HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
- HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
- HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
- HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
- HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
- HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
- HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
- HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
- HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
- HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
- HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
- HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
- HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
- HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
- /* Round 4 */
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
- II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
- II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
- II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
- II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
- II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
- II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
- II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
- II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
- II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
- II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
- II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
- II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
- II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
- II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
- II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
- II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
-
- /* Zeroize sensitive information. */
- memset ((void *)x, 0, sizeof (x));
-}
Copied: trunk/libbsd/src/arc4random.c (from rev 1187, trunk/libbsd/arc4random.c)
Copied: trunk/libbsd/src/bsd_getopt.c (from rev 1187, trunk/libbsd/bsd_getopt.c)
Copied: trunk/libbsd/src/err.c (from rev 1187, trunk/libbsd/err.c)
Copied: trunk/libbsd/src/fgetln.c (from rev 1187, trunk/libbsd/fgetln.c)
Copied: trunk/libbsd/src/fmtcheck.c (from rev 1187, trunk/libbsd/fmtcheck.c)
Copied: trunk/libbsd/src/inet_net_pton.c (from rev 1187, trunk/libbsd/inet_net_pton.c)
Copied: trunk/libbsd/src/md5.copyright (from rev 1187, trunk/libbsd/md5.copyright)
Copied: trunk/libbsd/src/md5c.c (from rev 1187, trunk/libbsd/md5c.c)
Copied: trunk/libbsd/src/strlcat.c (from rev 1187, trunk/libbsd/strlcat.c)
Copied: trunk/libbsd/src/strlcpy.c (from rev 1187, trunk/libbsd/strlcpy.c)
Deleted: trunk/libbsd/strlcat.c
===================================================================
--- trunk/libbsd/strlcat.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/strlcat.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,74 +0,0 @@
-/* $OpenBSD: strlcat.c,v 1.2 1999/06/17 16:28:58 millert Exp $ */
-
-/*
- * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
- * 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.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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 *rcsid = "$OpenBSD: strlcat.c,v 1.2 1999/06/17 16:28:58 millert Exp $");
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-
-#include <sys/types.h>
-#include <string.h>
-
-/*
- * Appends src to string dst of size siz (unlike strncat, siz is the
- * full size of dst, not space left). At most siz-1 characters
- * will be copied. Always NUL terminates (unless siz <= strlen(dst)).
- * Returns strlen(src) + MIN(siz, strlen(initial dst)).
- * If retval >= siz, truncation occurred.
- */
-size_t
-strlcat(dst, src, siz)
- char *dst;
- const char *src;
- size_t siz;
-{
- char *d = dst;
- const char *s = src;
- size_t n = siz;
- size_t dlen;
-
- /* Find the end of dst and adjust bytes left but don't go past end */
- while (n-- != 0 && *d != '\0')
- d++;
- dlen = d - dst;
- n = siz - dlen;
-
- if (n == 0)
- return(dlen + strlen(s));
- while (*s != '\0') {
- if (n != 1) {
- *d++ = *s;
- n--;
- }
- s++;
- }
- *d = '\0';
-
- return(dlen + (s - src)); /* count does not include NUL */
-}
Deleted: trunk/libbsd/strlcpy.c
===================================================================
--- trunk/libbsd/strlcpy.c 2006-02-14 05:33:38 UTC (rev 1192)
+++ trunk/libbsd/strlcpy.c 2006-02-14 05:39:29 UTC (rev 1193)
@@ -1,69 +0,0 @@
-/* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */
-
-/*
- * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
- * 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.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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 *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $");
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-
-#include <sys/types.h>
-#include <string.h>
-
-/*
- * Copy src to string dst of size siz. At most siz-1 characters
- * will be copied. Always NUL terminates (unless siz == 0).
- * Returns strlen(src); if retval >= siz, truncation occurred.
- */
-size_t strlcpy(dst, src, siz)
- char *dst;
- const char *src;
- size_t siz;
-{
- char *d = dst;
- const char *s = src;
- size_t n = siz;
-
- /* Copy as many bytes as will fit */
- if (n != 0 && --n != 0) {
- do {
- if ((*d++ = *s++) == 0)
- break;
- } while (--n != 0);
- }
-
- /* Not enough room in dst, add NUL and traverse rest of src */
- if (n == 0) {
- if (siz != 0)
- *d = '\0'; /* NUL-terminate dst */
- while (*s++)
- ;
- }
-
- return(s - src - 1); /* count does not include NUL */
-}
Reply to: