[patch] dirent.h problem with include_next
Jeff Johnston
jjohnstn@redhat.com
Wed Oct 5 02:46:00 GMT 2005
Thanks Jim. Patch has been applied.
-- Jeff J.
James E Wilson wrote:
>On Mon, 2005-10-03 at 14:23, Jeff Johnston wrote:
>
>
>>James E Wilson wrote:
>>
>>
>>>An alternative solution here would be to replace the #include_next with
>>>a #error.
>>>
>>>
>>I think this idea would be cleaner. The creation of the file was done
>>long ago and it appears the original intention was simply to be a fail-safe:
>>
>>
>
>OK. Here is a patch that uses the #error approach. I've tested this
>with a mips-elf full toolchain build and make check. There were no
>regressions.
>
>I've also tested this with a mips-elf program that uses dirent.h to make
>sure I get expected behaviour, i.e. an error. This works both from the
>build tree and from the install tree, and also when we have both.
>
>I also built a powerpc-rtems toolchain which includes dirent.h support,
>and tested a program that uses dirent.h to make sure I get expected
>behaviour, i.e. a successful compile. This works both from the build
>tree and from the install tree, and also when we have both. This works
>in the build tree because there is an -isystem option pointing to the
>rtems sys directory (newlib/targ-include) before the -isystem option
>pointing at the regular newlib include directory. This is in the
>FLAGS_FOR_TARGET variable in the top level Makefile.
>
>
>------------------------------------------------------------------------
>
>2005-10-03 James E Wilson <wilson@specifix.com>
>
> * libc/include/sys/dirent.h (_DIRENT_H_): Delete #include_next. Add
> #error.
>
>Index: dirent.h
>===================================================================
>RCS file: /cvs/src/src/newlib/libc/include/sys/dirent.h,v
>retrieving revision 1.1.1.1
>diff -p -p -r1.1.1.1 dirent.h
>*** dirent.h 17 Feb 2000 19:39:46 -0000 1.1.1.1
>--- dirent.h 4 Oct 2005 01:03:49 -0000
>***************
>*** 1,15 ****
> /* <dirent.h> includes <sys/dirent.h>, which is this file. On a
> system which supports <dirent.h>, this file is overridden by
> dirent.h in the libc/sys/.../sys directory. On a system which does
>! not support <dirent.h>, we will get this file which tries to find
>! any other <dirent.h> which may be lurking around. If there isn't
>! one, the user will get an error indicating that there is no
>! <dirent.h>. */
>
> #ifdef __cplusplus
> extern "C" {
> #endif
>! #include_next <dirent.h>
> #ifdef __cplusplus
> }
> #endif
>--- 1,13 ----
> /* <dirent.h> includes <sys/dirent.h>, which is this file. On a
> system which supports <dirent.h>, this file is overridden by
> dirent.h in the libc/sys/.../sys directory. On a system which does
>! not support <dirent.h>, we will get this file which uses #error to force
>! an error. */
>
> #ifdef __cplusplus
> extern "C" {
> #endif
>! #error "<dirent.h> not supported"
> #ifdef __cplusplus
> }
> #endif
>
>
More information about the Newlib
mailing list