From 273b931c816398e80be63d6f8be8eccd36601e29 Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Fri, 20 Feb 2009 10:03:21 +0000 Subject: Split ttyname.c/ttyname_r.c --- .../patches/newlib-1.17.0-rtems4.10-20090220.diff | 651 +++++++++++++++++++++ 1 file changed, 651 insertions(+) create mode 100644 contrib/crossrpms/patches/newlib-1.17.0-rtems4.10-20090220.diff (limited to 'contrib') diff --git a/contrib/crossrpms/patches/newlib-1.17.0-rtems4.10-20090220.diff b/contrib/crossrpms/patches/newlib-1.17.0-rtems4.10-20090220.diff new file mode 100644 index 0000000000..a2ced7c590 --- /dev/null +++ b/contrib/crossrpms/patches/newlib-1.17.0-rtems4.10-20090220.diff @@ -0,0 +1,651 @@ +diff -Naur newlib-1.17.0.orig/newlib/ChangeLog.rtems newlib-1.17.0/newlib/ChangeLog.rtems +--- newlib-1.17.0.orig/newlib/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.17.0/newlib/ChangeLog.rtems 2009-02-20 10:16:54.000000000 +0100 +@@ -0,0 +1,14 @@ ++2009-02-16 Ralf Corsépius ++ ++ * libc/sys/rtems/sys/param.h: ++ Update copyright notice from FreeBSD. ++ Remove HZ. ++ Add #include ++ Remove priority handling (moved to sys/priority.h). ++ Remove CLBYTES (Unused, abandoned in BSD). ++ ++2009-02-06 Ralf Corsépius ++ ++ * libc/include/sched.h: ++ Remove (collides with RTEMS's schedul.h). ++ +diff -Naur newlib-1.17.0.orig/newlib/libc/include/inttypes.h newlib-1.17.0/newlib/libc/include/inttypes.h +--- newlib-1.17.0.orig/newlib/libc/include/inttypes.h 2005-12-16 20:03:12.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/include/inttypes.h 2009-02-20 10:16:54.000000000 +0100 +@@ -163,12 +163,12 @@ + + + /* 64-bit types */ +-#if __have_longlong64 +-#define __PRI64(x) __STRINGIFY(ll##x) +-#define __SCN64(x) __STRINGIFY(ll##x) +-#elif __have_long64 ++#if __have_long64 + #define __PRI64(x) __STRINGIFY(l##x) + #define __SCN64(x) __STRINGIFY(l##x) ++#elif __have_longlong64 ++#define __PRI64(x) __STRINGIFY(ll##x) ++#define __SCN64(x) __STRINGIFY(ll##x) + #else + #define __PRI64(x) __STRINGIFY(x) + #define __SCN64(x) __STRINGIFY(x) +@@ -217,12 +217,12 @@ + #endif + + /* max-bit types */ +-#if __have_longlong64 +-#define __PRIMAX(x) __STRINGIFY(ll##x) +-#define __SCNMAX(x) __STRINGIFY(ll##x) +-#elif __have_long64 ++#if __have_long64 + #define __PRIMAX(x) __STRINGIFY(l##x) + #define __SCNMAX(x) __STRINGIFY(l##x) ++#elif __have_longlong64 ++#define __PRIMAX(x) __STRINGIFY(ll##x) ++#define __SCNMAX(x) __STRINGIFY(ll##x) + #else + #define __PRIMAX(x) __STRINGIFY(x) + #define __SCNMAX(x) __STRINGIFY(x) +@@ -242,12 +242,12 @@ + #define SCNxMAX __SCNMAX(x) + + /* ptr types */ +-#if __have_longlong64 +-#define __PRIPTR(x) __STRINGIFY(ll##x) +-#define __SCNPTR(x) __STRINGIFY(ll##x) +-#elif __have_long64 ++#if __have_long64 + #define __PRIPTR(x) __STRINGIFY(l##x) + #define __SCNPTR(x) __STRINGIFY(l##x) ++#elif __have_longlong64 ++#define __PRIPTR(x) __STRINGIFY(ll##x) ++#define __SCNPTR(x) __STRINGIFY(ll##x) + #else + #define __PRIPTR(x) __STRINGIFY(x) + #define __SCNPTR(x) __STRINGIFY(x) +diff -Naur newlib-1.17.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.17.0/newlib/libc/include/machine/ieeefp.h +--- newlib-1.17.0.orig/newlib/libc/include/machine/ieeefp.h 2008-12-11 21:05:38.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/include/machine/ieeefp.h 2009-02-20 10:16:54.000000000 +0100 +@@ -62,8 +62,12 @@ + # define __IEEE_BIG_ENDIAN + # endif + #else +-# define __IEEE_BIG_ENDIAN + # ifdef __ARMEL__ ++# define __IEEE_LITTLE_ENDIAN ++# else ++# define __IEEE_BIG_ENDIAN ++# endif ++# ifdef __ARMWEL__ + # define __IEEE_BYTES_LITTLE_ENDIAN + # endif + #endif +diff -Naur newlib-1.17.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.17.0/newlib/libc/include/machine/setjmp.h +--- newlib-1.17.0.orig/newlib/libc/include/machine/setjmp.h 2008-12-11 21:05:38.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/include/machine/setjmp.h 2009-02-20 10:16:54.000000000 +0100 +@@ -27,7 +27,7 @@ + + /* necv70 was 9 as well. */ + +-#ifdef __mc68000__ ++#if defined(__m68k__) || defined(__mc68000__) + /* + * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, + * fp2-fp7 for 68881. +diff -Naur newlib-1.17.0.orig/newlib/libc/include/sched.h newlib-1.17.0/newlib/libc/include/sched.h +--- newlib-1.17.0.orig/newlib/libc/include/sched.h 2007-09-21 23:02:15.000000000 +0200 ++++ newlib-1.17.0/newlib/libc/include/sched.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,14 +0,0 @@ +-#ifndef _SCHED_H_ +-#define _SCHED_H_ +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-#include +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif /* _SCHED_H_ */ +diff -Naur newlib-1.17.0.orig/newlib/libc/include/stdint.h newlib-1.17.0/newlib/libc/include/stdint.h +--- newlib-1.17.0.orig/newlib/libc/include/stdint.h 2008-12-10 22:27:58.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/include/stdint.h 2009-02-20 10:16:54.000000000 +0100 +@@ -475,6 +475,9 @@ + #define UINTMAX_C(x) x##UL + #endif + ++#ifdef __rtems__ ++#include ++#endif + + #ifdef __cplusplus + } +diff -Naur newlib-1.17.0.orig/newlib/libc/include/sys/_types.h newlib-1.17.0/newlib/libc/include/sys/_types.h +--- newlib-1.17.0.orig/newlib/libc/include/sys/_types.h 2007-09-18 22:05:17.000000000 +0200 ++++ newlib-1.17.0/newlib/libc/include/sys/_types.h 2009-02-20 10:16:54.000000000 +0100 +@@ -84,4 +84,7 @@ + typedef void *_iconv_t; + #endif + ++typedef long * __intptr_t; ++typedef unsigned long* __uintptr_t; ++ + #endif /* _SYS__TYPES_H */ +diff -Naur newlib-1.17.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.17.0/newlib/libc/machine/arm/machine/endian.h +--- newlib-1.17.0.orig/newlib/libc/machine/arm/machine/endian.h 2004-05-07 22:29:24.000000000 +0200 ++++ newlib-1.17.0/newlib/libc/machine/arm/machine/endian.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,12 +0,0 @@ +-/* ARM configuration file */ +- +-#ifndef _MACHINE_ENDIAN_H +-# define _MACHINE_ENDIAN_H +- +-#ifdef __ARMEB__ +-#define BYTE_ORDER BIG_ENDIAN +-#else +-#define BYTE_ORDER LITTLE_ENDIAN +-#endif +- +-#endif +diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.17.0/newlib/libc/sys/rtems/machine/stdint.h +--- newlib-1.17.0.orig/newlib/libc/sys/rtems/machine/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/sys/rtems/machine/stdint.h 2009-02-20 10:16:54.000000000 +0100 +@@ -0,0 +1,48 @@ ++/* ++ * ++ */ ++#ifndef _MACHINE_STDINT_H ++#define _MACHINE_STDINT_H ++ ++#ifndef _STDINT_H ++#error machine/stdint.h is an internal file and must not be directly included ++#endif ++ ++#ifndef __rtems__ ++#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise ++#endif ++ ++#if defined(__m32c__) || defined(__m32r__) ++#if (__SIZEOF_PTRDIFF_T__ == __SIZEOF_LONG__) ++#define __ptrint_t_long_defined 1 ++#endif ++#if (__SIZEOF_PTRDIFF_T__ == __SIZEOF_INT__) ++#define __ptrint_t_int_defined 1 ++#endif ++#endif ++ ++#if defined(__sparc__) \ ++ || defined(__powerpc__) || defined(__PPC__) \ ++ || defined(__mips__) \ ++ || defined(__sh__) \ ++ || defined(__AVR__) \ ++ || defined(_C4x) || defined(_C3x) \ ++ || defined(__H8300__) ++/* PTRDIFF_TYPE = int */ ++#define __ptrint_t_int_defined 1 ++#endif ++ ++#if defined(__i386__) \ ++ || defined(__m68k__) \ ++ || defined(__bfin__) \ ++ || defined(__arm__) \ ++ || defined(__H8300S__) || defined(__H8300H__) || defined(__H8300SX__) \ ++/* PTRDIFF_TYPE = long */ ++#define __ptrint_t_long_defined 1 ++#endif ++ ++#if !defined(__ptrint_t_int_defined) && !defined(__ptrint_t_long_defined) ++#error Failed to determine ptrint_t ++#endif ++ ++#endif +diff -Naur newlib-1.17.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.17.0/newlib/libc/sys/rtems/sys/param.h +--- newlib-1.17.0.orig/newlib/libc/sys/rtems/sys/param.h 2008-11-17 23:05:12.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/sys/rtems/sys/param.h 2009-02-20 10:16:54.000000000 +0100 +@@ -15,10 +15,6 @@ + * 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 University of +- * California, Berkeley and its contributors. + * 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. +@@ -47,7 +43,6 @@ + #include + #include + +-# define HZ (60) + # define PATHSIZE (1024) + + /* end of from newlib's */ +@@ -86,13 +81,13 @@ + #define MAXHOSTNAMELEN 256 /* max hostname size */ + + /* More types and definitions used throughout the kernel. */ +-#ifdef KERNEL ++#if defined(KERNEL) || defined(_KERNEL) + #include + #include + #include + #include +-#include + #include ++#include + + #ifndef FALSE + #define FALSE 0 +@@ -109,23 +104,6 @@ + #include + #include + +-/* +- * Priorities. Note that with 32 run queues, differences less than 4 are +- * insignificant. +- */ +-#define PSWP 0 +-#define PVM 4 +-#define PINOD 8 +-#define PRIBIO 16 +-#define PVFS 20 +-#define PZERO 22 /* No longer magic, shouldn't be here. XXX */ +-#define PSOCK 24 +-#define PWAIT 32 +-#define PLOCK 36 +-#define PPAUSE 40 +-#define PUSER 50 +-#define MAXPRI 127 /* Priorities range from 0 through MAXPRI. */ +- + #define PRIMASK 0x0ff + #define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */ + +@@ -136,15 +114,6 @@ + #define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */ + #define NODEV (dev_t)(-1) /* non-existent device */ + +-/* +- * Clustering of hardware pages on machines with ridiculously small +- * page sizes is done here. The paging subsystem deals with units of +- * CLSIZE pte's describing PAGE_SIZE (from machine/machparam.h) pages each. +- */ +-#if 0 +-#define CLBYTES (CLSIZE*PAGE_SIZE) +-#endif +- + #define CBLOCK 128 /* Clist block size, must be a power of 2. */ + #define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */ + /* Data chars/clist. */ +@@ -200,7 +169,7 @@ + #define powerof2(x) ((((x)-1)&(x))==0) + + /* Macros for min/max. */ +-#ifndef KERNEL ++#if !(defined(KERNEL) || defined(_KERNEL)) + #define MIN(a,b) (((a)<(b))?(a):(b)) + #define MAX(a,b) (((a)>(b))?(a):(b)) + #endif +diff -Naur newlib-1.17.0.orig/newlib/libc/unix/Makefile.am newlib-1.17.0/newlib/libc/unix/Makefile.am +--- newlib-1.17.0.orig/newlib/libc/unix/Makefile.am 2006-05-02 00:01:07.000000000 +0200 ++++ newlib-1.17.0/newlib/libc/unix/Makefile.am 2009-02-20 10:16:11.000000000 +0100 +@@ -12,7 +12,8 @@ + + ## Distinguish different EL/IX level interfaces + ELIX_2_SOURCES = \ +- ttyname.c ++ ttyname.c \ ++ ttyname_r.c + + ELIX_4_SOURCES = \ + basename.c \ +diff -Naur newlib-1.17.0.orig/newlib/libc/unix/Makefile.in newlib-1.17.0/newlib/libc/unix/Makefile.in +--- newlib-1.17.0.orig/newlib/libc/unix/Makefile.in 2008-09-29 17:40:47.000000000 +0200 ++++ newlib-1.17.0/newlib/libc/unix/Makefile.in 2009-02-20 10:22:54.000000000 +0100 +@@ -59,7 +59,7 @@ + lib_a_LIBADD = + am__objects_1 = lib_a-getcwd.$(OBJEXT) lib_a-pread.$(OBJEXT) \ + lib_a-pwrite.$(OBJEXT) lib_a-sigset.$(OBJEXT) +-am__objects_2 = lib_a-ttyname.$(OBJEXT) ++am__objects_2 = lib_a-ttyname.$(OBJEXT) lib_a-ttyname_r.$(OBJEXT) + am__objects_3 = lib_a-basename.$(OBJEXT) lib_a-dirname.$(OBJEXT) \ + lib_a-getlogin.$(OBJEXT) lib_a-getpass.$(OBJEXT) \ + lib_a-getpwent.$(OBJEXT) lib_a-getut.$(OBJEXT) +@@ -74,7 +74,7 @@ + LTLIBRARIES = $(noinst_LTLIBRARIES) + libunix_la_LIBADD = + am__objects_5 = getcwd.lo pread.lo pwrite.lo sigset.lo +-am__objects_6 = ttyname.lo ++am__objects_6 = ttyname.lo ttyname_r.lo + am__objects_7 = basename.lo dirname.lo getlogin.lo getpass.lo \ + getpwent.lo getut.lo + @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@am__objects_8 = $(am__objects_6) \ +@@ -278,7 +278,8 @@ + sigset.c + + ELIX_2_SOURCES = \ +- ttyname.c ++ ttyname.c \ ++ ttyname_r.c + + ELIX_4_SOURCES = \ + basename.c \ +@@ -402,6 +403,12 @@ + lib_a-ttyname.obj: ttyname.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname.obj `if test -f 'ttyname.c'; then $(CYGPATH_W) 'ttyname.c'; else $(CYGPATH_W) '$(srcdir)/ttyname.c'; fi` + ++lib_a-ttyname_r.o: ttyname_r.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname_r.o `test -f 'ttyname_r.c' || echo '$(srcdir)/'`ttyname_r.c ++ ++lib_a-ttyname_r.obj: ttyname_r.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-ttyname_r.obj `if test -f 'ttyname_r.c'; then $(CYGPATH_W) 'ttyname_r.c'; else $(CYGPATH_W) '$(srcdir)/ttyname_r.c'; fi` ++ + lib_a-basename.o: basename.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-basename.o `test -f 'basename.c' || echo '$(srcdir)/'`basename.c + +diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname.c newlib-1.17.0/newlib/libc/unix/ttyname.c +--- newlib-1.17.0.orig/newlib/libc/unix/ttyname.c 2008-11-18 23:55:06.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/unix/ttyname.c 2009-02-20 10:16:11.000000000 +0100 +@@ -1,94 +1,13 @@ + #ifndef _NO_TTYNAME +-/* +- * Copyright (c) 1988 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 +-#include +-#include ++#include "ttyname.h" ++ + #include + #include +-#include + #include +-#include <_syslist.h> + #include + +-static char ttyname_buf[sizeof (_PATH_DEV) + MAXNAMLEN] = _PATH_DEV; +- +-/* +- * ttyname_r() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name +- */ +-int +-_DEFUN( ttyname_r,(fd, name, namesize), +- int fd _AND +- char *name _AND +- size_t namesize) +-{ +- struct stat sb; +- struct dirent *dirp; +- DIR *dp; +- struct stat dsb; +- char buf[sizeof(ttyname_buf)]; +- +- /* Must be a terminal. */ +- if (!isatty(fd)) +- return ENOTTY; +- +- /* Must be a character device. */ +- if (fstat (fd, &sb) || !S_ISCHR (sb.st_mode)) +- return ENOTTY; +- +- if ((dp = opendir (_PATH_DEV)) == NULL) +- return EBADF; +- +- strcpy(buf, _PATH_DEV); +- while ((dirp = readdir (dp)) != NULL) +- { +- if (dirp->d_ino != sb.st_ino) +- continue; +- strcpy (buf + sizeof (_PATH_DEV) - 1, dirp->d_name); +- if (stat (buf, &dsb) || sb.st_dev != dsb.st_dev || +- sb.st_ino != dsb.st_ino) +- continue; +- (void) closedir (dp); +- if(strlen(buf) < namesize) /* < to account for terminating null */ +- { +- strcpy(name, buf); +- return 0; +- } +- else +- { +- return ERANGE; +- } +- } +- (void) closedir (dp); +- return EBADF; +-} ++static char ttyname_buf[TTYNAME_BUFSIZE] = _PATH_DEV; + + /* + * ttyname() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name +diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname.h newlib-1.17.0/newlib/libc/unix/ttyname.h +--- newlib-1.17.0.orig/newlib/libc/unix/ttyname.h 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/unix/ttyname.h 2009-02-20 10:16:11.000000000 +0100 +@@ -0,0 +1,6 @@ ++/* Common defines for ttyname.c and ttyname_r.c */ ++ ++#include /* For MAXNAMLEN */ ++#include /* For _PATH_DEV */ ++ ++#define TTYNAME_BUFSIZE (sizeof (_PATH_DEV) + MAXNAMLEN) +diff -Naur newlib-1.17.0.orig/newlib/libc/unix/ttyname_r.c newlib-1.17.0/newlib/libc/unix/ttyname_r.c +--- newlib-1.17.0.orig/newlib/libc/unix/ttyname_r.c 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.17.0/newlib/libc/unix/ttyname_r.c 2009-02-20 10:16:11.000000000 +0100 +@@ -0,0 +1,93 @@ ++#ifndef _NO_TTYNAME ++/* ++ * Copyright (c) 1988 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 "ttyname.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include <_syslist.h> ++#include ++ ++/* ++ * ttyname_r() - POSIX 1003.1b 4.7.2 - Determine Terminal Device Name ++ */ ++int ++_DEFUN( ttyname_r,(fd, name, namesize), ++ int fd _AND ++ char *name _AND ++ size_t namesize) ++{ ++ struct stat sb; ++ struct dirent *dirp; ++ DIR *dp; ++ struct stat dsb; ++ char buf[TTYNAME_BUFSIZE]; ++ ++ /* Must be a terminal. */ ++ if (!isatty(fd)) ++ return ENOTTY; ++ ++ /* Must be a character device. */ ++ if (fstat (fd, &sb) || !S_ISCHR (sb.st_mode)) ++ return ENOTTY; ++ ++ if ((dp = opendir (_PATH_DEV)) == NULL) ++ return EBADF; ++ ++ strcpy(buf, _PATH_DEV); ++ while ((dirp = readdir (dp)) != NULL) ++ { ++ if (dirp->d_ino != sb.st_ino) ++ continue; ++ strcpy (buf + sizeof (_PATH_DEV) - 1, dirp->d_name); ++ if (stat (buf, &dsb) || sb.st_dev != dsb.st_dev || ++ sb.st_ino != dsb.st_ino) ++ continue; ++ (void) closedir (dp); ++ if(strlen(buf) < namesize) /* < to account for terminating null */ ++ { ++ strcpy(name, buf); ++ return 0; ++ } ++ else ++ { ++ return ERANGE; ++ } ++ } ++ (void) closedir (dp); ++ return EBADF; ++} ++ ++#endif /* !_NO_TTYNAME */ +diff -Naur newlib-1.17.0.orig/newlib/Makefile.am newlib-1.17.0/newlib/Makefile.am +--- newlib-1.17.0.orig/newlib/Makefile.am 2008-01-21 19:29:17.000000000 +0100 ++++ newlib-1.17.0/newlib/Makefile.am 2009-02-20 10:16:54.000000000 +0100 +@@ -81,7 +81,7 @@ + libc.a + endif + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + + toollib_DATA = $(CRT0) $(CRT1) + +@@ -186,9 +186,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +- +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. +diff -Naur newlib-1.17.0.orig/newlib/Makefile.in newlib-1.17.0/newlib/Makefile.in +--- newlib-1.17.0.orig/newlib/Makefile.in 2008-09-29 17:40:26.000000000 +0200 ++++ newlib-1.17.0/newlib/Makefile.in 2009-02-20 10:16:54.000000000 +0100 +@@ -106,7 +106,7 @@ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive + toollibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(noinst_DATA) $(toollib_DATA) ++DATA = $(toollib_DATA) + ETAGS = etags + CTAGS = ctags + DEJATOOL = $(PACKAGE) +@@ -350,7 +350,7 @@ + @USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \ + @USE_LIBTOOL_FALSE@ libc.a + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + toollib_DATA = $(CRT0) $(CRT1) + + # The functions ldexp, frexp and modf are traditionally supplied in +@@ -409,7 +409,7 @@ + + # dejagnu support + RUNTESTFLAGS = +-all: newlib.h ++all: $(BUILT_SOURCES) newlib.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: +@@ -714,14 +714,16 @@ + done + check-am: + $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU +-check: check-recursive ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-recursive + all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h + installdirs: installdirs-recursive + installdirs-am: + for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +-install: install-recursive ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive + uninstall: uninstall-recursive +@@ -746,6 +748,7 @@ + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + clean: clean-recursive + + clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \ +@@ -864,8 +867,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. -- cgit v1.2.3