diff options
author | Alexis Ballier <aballier@gentoo.org> | 2010-03-11 12:01:15 +0000 |
---|---|---|
committer | Alexis Ballier <aballier@gentoo.org> | 2010-03-11 12:01:15 +0000 |
commit | 43b5a69dbbb02bf5296e51c39295d6e8731c3404 (patch) | |
tree | 6a75ac0777e188ad2a81ff6628898ab128bbc15b /sys-freebsd/freebsd-lib/files | |
parent | remove old (diff) | |
download | gentoo-2-43b5a69dbbb02bf5296e51c39295d6e8731c3404.tar.gz gentoo-2-43b5a69dbbb02bf5296e51c39295d6e8731c3404.tar.bz2 gentoo-2-43b5a69dbbb02bf5296e51c39295d6e8731c3404.zip |
remove old
(Portage version: 2.2_rc67/cvs/Linux x86_64)
Diffstat (limited to 'sys-freebsd/freebsd-lib/files')
10 files changed, 0 insertions, 614 deletions
diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-binutils-asm.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-binutils-asm.patch deleted file mode 100644 index f6fdd8350b95..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-binutils-asm.patch +++ /dev/null @@ -1,36 +0,0 @@ -Update ASM code to build with newer binutils (2.16.91.0.x). Thanks to Emanuele -Giaquinta <exg@gentoo.org> -Index: fbsd-6/lib/libpthread/arch/i386/i386/thr_getcontext.S -=================================================================== ---- fbsd-6.orig/lib/libpthread/arch/i386/i386/thr_getcontext.S -+++ fbsd-6/lib/libpthread/arch/i386/i386/thr_getcontext.S -@@ -63,10 +63,10 @@ ENTRY(__thr_setcontext) - movl $-1, %eax /* bzzzt, invalid context */ - jmp 8f - 2: /*movl 4(%edx), %gs*/ /* we don't touch %gs */ -- movl 8(%edx), %fs -- movl 12(%edx), %es -- movl 16(%edx), %ds -- movl 76(%edx), %ss -+ movw 8(%edx), %fs -+ movw 12(%edx), %es -+ movw 16(%edx), %ds -+ movw 76(%edx), %ss - movl 20(%edx), %edi - movl 24(%edx), %esi - movl 28(%edx), %ebp -@@ -127,10 +127,10 @@ ENTRY(__thr_getcontext) - movl $-1, %eax - jmp 2f - 1: /*movl %gs, 4(%edx)*/ /* we don't touch %gs */ -- movl %fs, 8(%edx) -- movl %es, 12(%edx) -- movl %ds, 16(%edx) -- movl %ss, 76(%edx) -+ movw %fs, 8(%edx) -+ movw %es, 12(%edx) -+ movw %ds, 16(%edx) -+ movw %ss, 76(%edx) - movl %edi, 20(%edx) - movl %esi, 24(%edx) - movl %ebp, 28(%edx) diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch deleted file mode 100644 index e94e5573c3f0..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.0-ssp.patch +++ /dev/null @@ -1,135 +0,0 @@ -Index: fbsd-6/lib/libc/sys/Makefile.inc -=================================================================== ---- fbsd-6.orig/lib/libc/sys/Makefile.inc -+++ fbsd-6/lib/libc/sys/Makefile.inc -@@ -18,7 +18,7 @@ - .endif - - # Sources common to both syscall interfaces: --SRCS+= ftruncate.c lseek.c mmap.c pread.c pwrite.c truncate.c __error.c -+SRCS+= ftruncate.c lseek.c mmap.c pread.c pwrite.c truncate.c __error.c ssp.c - - # Add machine dependent asm sources: - SRCS+=${MDASM} -Index: fbsd-6/lib/libc/sys/ssp.c -=================================================================== ---- /dev/null -+++ fbsd-6/lib/libc/sys/ssp.c -@@ -0,0 +1,83 @@ -+/* -+ * Copyright (c) 2002 Hiroaki Etoh, Federico G. Schwindt, and Miodrag Vallat. -+ * Copyright (c) 2006 Ned Ludd <solar@gentoo.org> -+ * Diego Pettenò <flameeyes@gentoo.org> -+ * 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. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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/param.h> -+#include <sys/sysctl.h> -+#include <signal.h> -+#include <string.h> -+#include <syslog.h> -+#include <unistd.h> -+#include <stdlib.h> -+ -+extern int __sysctl(int *, u_int, void *, size_t *, void *, size_t); -+ -+unsigned long __guard = 0UL; -+void __guard_setup(void) __attribute__ ((constructor)); -+void __stack_smash_handler(char func[], int damaged __attribute__((unused))); -+ -+void -+__guard_setup(void) -+{ -+ int i, mib[2]; -+ size_t len = 4; -+ -+ __guard = 0xFF0A0D00UL; -+ if (__guard != 0) return; -+ -+ srandomdev(); -+ -+ __guard = random(); -+} -+ -+void -+__stack_smash_handler(char func[], int damaged) -+{ -+ static const char message[] = "stack overflow in function "; -+ struct sigaction sa; -+ sigset_t mask; -+ -+ /* Immediately block all signal handlers from running code */ -+ sigfillset(&mask); -+ sigdelset(&mask, SIGABRT); -+ sigprocmask(SIG_BLOCK, &mask, NULL); -+ -+ write(2, message, sizeof(message)); -+ write(2, func, strlen(func)); -+ write(2, "\n", 1); -+ -+ bzero(&sa, sizeof(struct sigaction)); -+ sigemptyset(&sa.sa_mask); -+ sa.sa_flags = 0; -+ sa.sa_handler = SIG_DFL; -+ sigaction(SIGABRT, &sa, NULL); -+ -+ kill(getpid(), SIGABRT); -+ -+ _exit(127); -+} -Index: fbsd-6/lib/csu/i386-elf/crt1.c -=================================================================== ---- fbsd-6.orig/lib/csu/i386-elf/crt1.c -+++ fbsd-6/lib/csu/i386-elf/crt1.c -@@ -44,6 +44,7 @@ extern void _fini(void); - extern void _init(void); - extern int main(int, char **, char **); - extern void _start(char *, ...); -+extern void __guard_setup(void); - - #ifdef GCRT - extern void _mcleanup(void); -@@ -106,6 +107,7 @@ _start(char *ap, ...) - monstartup(&eprol, &etext); - #endif - _init(); -+ __guard_setup(); - exit( main(argc, argv, env) ); - } - -Index: fbsd-6/lib/libc/Makefile -=================================================================== ---- fbsd-6.orig/lib/libc/Makefile -+++ fbsd-6/lib/libc/Makefile -@@ -15,6 +15,9 @@ SHLIBDIR?= /lib - WARNS?= 2 - CFLAGS+=-I${.CURDIR}/include -I${.CURDIR}/../../include - CFLAGS+=-I${.CURDIR}/${MACHINE_ARCH} -+# Disable stack protection for the only libc, and leave it for the rest of -+# the libraries. -+CFLAGS+= -fno-stack-protector - CLEANFILES+=tags - INSTALL_PIC_ARCHIVE= - PRECIOUSLIB= diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-as-needed.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-as-needed.patch deleted file mode 100644 index c46b990d1d68..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-as-needed.patch +++ /dev/null @@ -1,40 +0,0 @@ -This enables --as-needed to work fully on FreeBSD. -This can be pulled for FreeBSD-7. - -diff -ur lib.orig/libmp/Makefile lib/libmp/Makefile ---- lib.orig/libmp/Makefile 2007-09-14 07:40:20 +0100 -+++ lib/libmp/Makefile 2007-09-14 07:44:49 +0100 -@@ -2,6 +2,8 @@ - - LIB= mp - SHLIB_MAJOR= 5 -+DPADD= ${LIBCRYPTO} -+LDADD= -lcrypto - MAN= libmp.3 - INCS= mp.h - SRCS= mpasbn.c -diff -ur lib.orig/libncp/Makefile lib/libncp/Makefile ---- lib.orig/libncp/Makefile 2007-09-14 07:40:20 +0100 -+++ lib/libncp/Makefile 2007-09-14 07:44:49 +0100 -@@ -5,6 +5,8 @@ - LIB= ncp - - SHLIB_MAJOR= 2 -+DPADD= ${LIBIPX} -+LDADD= -lipx - - NO_MAN= - -diff -ur lib.orig/libsmb/Makefile lib/libsmb/Makefile ---- lib.orig/libsmb/Makefile 2007-09-14 07:40:20 +0100 -+++ lib/libsmb/Makefile 2007-09-14 07:44:49 +0100 -@@ -5,6 +5,8 @@ - - LIB= smb - SHLIB_MAJOR= 2 -+DPADD= ${LIBKICONV} -+LDADD= -lkiconv - NO_MAN= - - SRCS= rcfile.c ctx.c cfopt.c subr.c nls.c rap.c mbuf.c rq.c file.c \ - diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-dl_iterate_phdr.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-dl_iterate_phdr.patch deleted file mode 100644 index 43abb5f2641b..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-dl_iterate_phdr.patch +++ /dev/null @@ -1,29 +0,0 @@ -Backport dl_iterate_phdr from FreeBSD-7 so that we can use gcc-4 -and not pull in libgcc_s.so.1 into every binary we build. - -diff -ur lib/libc/gen/dlfcn.c lib/libc/gen/dlfcn.c ---- lib/libc/gen/dlfcn.c 2004-03-05 08:10:17 +0000 -+++ lib/libc/gen/dlfcn.c 2007-09-10 14:11:12 +0100 -@@ -31,6 +31,7 @@ - * Linkage to services provided by the dynamic linker. - */ - #include <dlfcn.h> -+#include <link.h> - #include <stddef.h> - - static const char sorry[] = "Service unavailable"; -@@ -118,3 +119,14 @@ - { - _rtld_error(sorry); - } -+ -+#ifdef _GENTOO_DL_ITERATE_PHDR -+#pragma weak dl_iterate_phdr -+int -+dl_iterate_phdr(int (*callback)(struct dl_phdr_info *, size_t, void *), -+ void *data) -+{ -+ _rtld_error(sorry); -+ return 0; -+} -+#endif diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-gcc41.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-gcc41.patch deleted file mode 100644 index e7addfaba401..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-gcc41.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: fbsd-6.2/lib/libc/isc/eventlib_p.h -=================================================================== ---- fbsd-6.2.orig/lib/libc/isc/eventlib_p.h -+++ fbsd-6.2/lib/libc/isc/eventlib_p.h -@@ -280,6 +280,8 @@ evWait *evFreeWait(evContext_p *ctx, evW - #endif - - /* Global options */ -+#ifndef _LIBC - extern int __evOptMonoTime; -+#endif - - #endif /*_EVENTLIB_P_H*/ -Index: fbsd-6.2/lib/libc/resolv/res_debug.c -=================================================================== ---- fbsd-6.2.orig/lib/libc/resolv/res_debug.c -+++ fbsd-6.2/lib/libc/resolv/res_debug.c -@@ -472,7 +472,7 @@ const struct res_sym __p_type_syms[] = { - /* - * Names of DNS rcodes. - */ --static const struct res_sym __p_rcode_syms[] = { -+const struct res_sym __p_rcode_syms[] = { - {ns_r_noerror, "NOERROR", "no error"}, - {ns_r_formerr, "FORMERR", "format error"}, - {ns_r_servfail, "SERVFAIL", "server failed"}, diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libc.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libc.patch deleted file mode 100644 index fc94cb7ae7d7..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libc.patch +++ /dev/null @@ -1,21 +0,0 @@ -http://security.freebsd.org/advisories/FreeBSD-SA-08:02.libc.asc - -Index: lib/libc/inet/inet_network.c -=================================================================== -RCS file: /home/ncvs/src/lib/libc/inet/inet_network.c,v -retrieving revision 1.4 -diff -u -u -r1.4 inet_network.c ---- lib/libc/inet/inet_network.c 3 Jun 2007 17:20:26 -0000 1.4 -+++ lib/libc/inet/inet_network.c 6 Jan 2008 15:38:28 -0000 -@@ -82,9 +82,9 @@ - } - if (!digit) - return (INADDR_NONE); -+ if (pp >= parts + 4 || val > 0xffU) -+ return (INADDR_NONE); - if (*cp == '.') { -- if (pp >= parts + 4 || val > 0xffU) -- return (INADDR_NONE); - *pp++ = val, cp++; - goto again; - } diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libthr.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libthr.patch deleted file mode 100644 index a31985eac35c..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-libthr.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur lib.orig/libthr/Makefile lib/libthr/Makefile ---- lib.orig/libthr/Makefile 2007-09-25 10:27:07 +0100 -+++ lib/libthr/Makefile 2007-09-25 10:35:20 +0100 -@@ -7,6 +7,8 @@ - # To included legacy CSRG sccsid strings, add -DLIBC_SCCS and -DSYSLIBC_SCCS - # (for system call stubs) to CFLAGS below. -DSYSLIBC_SCCS affects just the - # system call stubs. -+ -+SHLIBDIR= /lib - LIB=thr - SHLIB_MAJOR= 2 - CFLAGS+=-DPTHREAD_KERNEL diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch deleted file mode 100644 index 8b4bb780d541..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-6.2-pty6.patch +++ /dev/null @@ -1,95 +0,0 @@ -http://security.freebsd.org/advisories/FreeBSD-SA-08:01.pty.asc - -Index: lib/libc/stdlib/grantpt.c -=================================================================== -RCS file: /home/ncvs/src/lib/libc/stdlib/grantpt.c,v -retrieving revision 1.4.10.1 -diff -u -I__FBSDID -I$FreeBSD -r1.4.10.1 grantpt.c ---- lib/libc/stdlib/grantpt.c 18 Dec 2007 00:36:21 -0000 1.4.10.1 -+++ lib/libc/stdlib/grantpt.c 10 Jan 2008 20:54:30 -0000 -@@ -214,24 +214,30 @@ - ptsname(int fildes) - { - static char slave[] = _PATH_DEV PTS_PREFIX "XY"; -- char *retval; -+ const char *master; - struct stat sbuf; - -- retval = NULL; -- -- if (_fstat(fildes, &sbuf) == 0) { -- if (!ISPTM(sbuf)) -- errno = EINVAL; -- else { -- (void)snprintf(slave, sizeof(slave), -- _PATH_DEV PTS_PREFIX "%s", -- devname(sbuf.st_rdev, S_IFCHR) + -- strlen(PTM_PREFIX)); -- retval = slave; -- } -- } -- -- return (retval); -+ /* All master pty's must be char devices. */ -+ if (_fstat(fildes, &sbuf) == -1) -+ goto invalid; -+ if (!S_ISCHR(sbuf.st_mode)) -+ goto invalid; -+ -+ /* Check to see if this device is a pty(4) master. */ -+ master = devname(sbuf.st_rdev, S_IFCHR); -+ if (strlen(master) != strlen(PTM_PREFIX "XY")) -+ goto invalid; -+ if (strncmp(master, PTM_PREFIX, strlen(PTM_PREFIX)) != 0) -+ goto invalid; -+ -+ /* It is, so generate the corresponding pty(4) slave name. */ -+ (void)snprintf(slave, sizeof(slave), _PATH_DEV PTS_PREFIX "%s", -+ master + strlen(PTM_PREFIX)); -+ return (slave); -+ -+invalid: -+ errno = EINVAL; -+ return (NULL); - } - - /* -@@ -240,18 +246,14 @@ - int - unlockpt(int fildes) - { -- int retval; -- struct stat sbuf; - - /* - * Unlocking a master/slave pseudo-terminal pair has no meaning in a - * non-streams PTY environment. However, we do ensure fildes is a - * valid master pseudo-terminal device. - */ -- if ((retval = _fstat(fildes, &sbuf)) == 0 && !ISPTM(sbuf)) { -- errno = EINVAL; -- retval = -1; -- } -+ if (ptsname(fildes) == NULL) -+ return (-1); - -- return (retval); -+ return (0); - } -Index: lib/libutil/pty.c -=================================================================== -RCS file: /home/ncvs/src/lib/libutil/pty.c,v -retrieving revision 1.15.20.1 -diff -u -I__FBSDID -I$FreeBSD -r1.15.20.1 pty.c ---- lib/libutil/pty.c 27 Nov 2007 18:43:09 -0000 1.15.20.1 -+++ lib/libutil/pty.c 10 Jan 2008 20:54:30 -0000 -@@ -76,8 +76,7 @@ - break; /* try the next pty group */ - } else { - line[5] = 't'; -- (void) chown(line, getuid(), ttygid); -- (void) chmod(line, S_IRUSR|S_IWUSR|S_IWGRP); -+ (void) grantpt(master); - (void) revoke(line); - if ((slave = open(line, O_RDWR, 0)) != -1) { - *amaster = master; diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-db.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-db.patch deleted file mode 100644 index 42b14e8c1475..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-db.patch +++ /dev/null @@ -1,69 +0,0 @@ -http://security.freebsd.org/advisories/FreeBSD-SA-09:07.libc.asc - - - -Index: lib/libc/db/btree/bt_split.c -=================================================================== ---- lib/libc/db/btree/bt_split.c -+++ lib/libc/db/btree/bt_split.c -@@ -372,7 +372,7 @@ - } - - /* Put the new left page for the split into place. */ -- if ((l = (PAGE *)malloc(t->bt_psize)) == NULL) { -+ if ((l = (PAGE *)calloc(1, t->bt_psize)) == NULL) { - mpool_put(t->bt_mp, r, 0); - return (NULL); - } -Index: lib/libc/db/hash/hash_buf.c -=================================================================== ---- lib/libc/db/hash/hash_buf.c -+++ lib/libc/db/hash/hash_buf.c -@@ -57,6 +57,7 @@ - #include <stddef.h> - #include <stdio.h> - #include <stdlib.h> -+#include <string.h> - - #ifdef DEBUG - #include <assert.h> -@@ -169,12 +170,12 @@ - */ - if (hashp->nbufs || (bp->flags & BUF_PIN)) { - /* Allocate a new one */ -- if ((bp = (BUFHEAD *)malloc(sizeof(BUFHEAD))) == NULL) -+ if ((bp = (BUFHEAD *)calloc(1, sizeof(BUFHEAD))) == NULL) - return (NULL); - #ifdef PURIFY - memset(bp, 0xff, sizeof(BUFHEAD)); - #endif -- if ((bp->page = (char *)malloc(hashp->BSIZE)) == NULL) { -+ if ((bp->page = (char *)calloc(1, hashp->BSIZE)) == NULL) { - free(bp); - return (NULL); - } -@@ -319,8 +314,10 @@ - } - /* Check if we are freeing stuff */ - if (do_free) { -- if (bp->page) -+ if (bp->page) { -+ (void)memset(bp->page, 0, hashp->BSIZE); - free(bp->page); -+ } - BUF_REMOVE(bp); - free(bp); - bp = LRU; -Index: lib/libc/db/mpool/mpool.c -=================================================================== ---- lib/libc/db/mpool/mpool.c -+++ lib/libc/db/mpool/mpool.c -@@ -332,7 +332,7 @@ - return (bp); - } - --new: if ((bp = (BKT *)malloc(sizeof(BKT) + mp->pagesize)) == NULL) -+new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL) - return (NULL); - #ifdef STATISTICS - ++mp->pagealloc; diff --git a/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-strndup_bport.patch b/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-strndup_bport.patch deleted file mode 100644 index b4eab1e7ff49..000000000000 --- a/sys-freebsd/freebsd-lib/files/freebsd-lib-7.1-strndup_bport.patch +++ /dev/null @@ -1,151 +0,0 @@ -Backport of strndup from -CURRENT. - -Fixes bugs 249731 and 256741. - -According to the manpage this will appear on 8.0, -so try to keep it around. ---- lib.orig/libc/string/Makefile.inc -+++ lib/libc/string/Makefile.inc -@@ -9,9 +9,9 @@ - MISRCS+=bcmp.c bcopy.c bzero.c ffs.c ffsl.c ffsll.c fls.c flsl.c flsll.c \ - index.c memccpy.c memchr.c memrchr.c memcmp.c \ - memcpy.c memmem.c memmove.c memset.c rindex.c stpcpy.c strcasecmp.c \ -- strcat.c strchr.c strcmp.c strcoll.c strcpy.c strcspn.c strdup.c \ -- strerror.c strlcat.c strlcpy.c strlen.c strmode.c strncat.c strncmp.c \ -- strncpy.c strcasestr.c strnstr.c \ -+ strcat.c strcasestr.c strchr.c strcmp.c strcoll.c strcpy.c strcspn.c \ -+ strdup.c strerror.c strlcat.c strlcpy.c strlen.c strmode.c strncat.c \ -+ strncmp.c strncpy.c strndup.c strnstr.c \ - strpbrk.c strrchr.c strsep.c strsignal.c strspn.c strstr.c strtok.c \ - strxfrm.c swab.c wcscat.c wcschr.c wcscmp.c wcscoll.c wcscpy.c \ - wcscspn.c wcsdup.c \ -@@ -47,6 +47,7 @@ - MLINKS+=strchr.3 strrchr.3 - MLINKS+=strcmp.3 strncmp.3 - MLINKS+=strcpy.3 stpcpy.3 -+MLINKS+=strdup.3 strndup.3 - MLINKS+=strcpy.3 strncpy.3 - MLINKS+=strerror.3 perror.3 strerror.3 sys_errlist.3 strerror.3 sys_nerr.3 - MLINKS+=strerror.3 strerror_r.3 ---- lib.orig/libc/string/Symbol.map -+++ lib/libc/string/Symbol.map -@@ -81,6 +81,7 @@ - ffsll; - flsll; - memrchr; -+ strndup; - }; - - FBSDprivate_1.0 { ---- lib.orig/libc/string/strdup.3 -+++ lib/libc/string/strdup.3 -@@ -32,7 +32,8 @@ - .Dt STRDUP 3 - .Os - .Sh NAME --.Nm strdup -+.Nm strdup , -+.Nm strndup - .Nd save a copy of a string - .Sh LIBRARY - .Lb libc -@@ -40,6 +41,8 @@ - .In string.h - .Ft char * - .Fn strdup "const char *str" -+.Ft char * -+.Fn strndup "const char *str" "size_t len" - .Sh DESCRIPTION - The - .Fn strdup -@@ -56,6 +59,16 @@ - .Va errno - is set to - .Er ENOMEM . -+.Pp -+The -+.Fn strndup -+function copies at most -+.Fa len -+characters from the string -+.Fa str -+always -+.Dv NUL -+terminating the copied string. - .Sh SEE ALSO - .Xr free 3 , - .Xr malloc 3 -@@ -64,3 +77,7 @@ - .Fn strdup - function first appeared in - .Bx 4.4 . -+The -+.Fn strndup -+function was added in -+.Fx 8.0 . ---- lib.orig/libc/string/strndup.c -+++ lib/libc/string/strndup.c -@@ -0,0 +1,53 @@ -+/* $NetBSD: strndup.c,v 1.3 2007/01/14 23:41:24 cbiere Exp $ */ -+ -+/* -+ * Copyright (c) 1988, 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. -+ */ -+ -+#include <sys/cdefs.h> -+__FBSDID("$FreeBSD: src/lib/libc/string/strndup.c,v 1.1.2.1 2009/01/08 09:50:20 kib Exp $"); -+ -+#include <stddef.h> -+#include <stdlib.h> -+#include <string.h> -+ -+char * -+strndup(const char *str, size_t n) -+{ -+ size_t len; -+ char *copy; -+ -+ for (len = 0; len < n && str[len]; len++) -+ continue; -+ -+ if ((copy = malloc(len + 1)) == NULL) -+ return (NULL); -+ memcpy(copy, str, len); -+ copy[len] = '\0'; -+ return (copy); -+} ---- include.orig/string.h -+++ include/string.h -@@ -96,6 +96,7 @@ - int strncmp(const char *, const char *, size_t) __pure; - char *strncpy(char * __restrict, const char * __restrict, size_t); - #if __BSD_VISIBLE -+char *strndup(const char *, size_t); - char *strnstr(const char *, const char *, size_t) __pure; - #endif - char *strpbrk(const char *, const char *) __pure; |