On Thursday 22 March 2007 12:29, Joerg Schilling wrote:
> Stefan Teleman <[EMAIL PROTECTED]> wrote:
> > On Thursday 22 March 2007 10:21, Joerg Schilling wrote:
> > > But BTW: dirfd() would be just:
> > >
> > > #define dirfd(dp) (dp)->dd_fd
> >
> > This works really well when (dp) is NULL.
>
> ???
>
> Garbage in -> garbage out.
>
> Do not expect to get useful results in case that you
> use useless input.
/* testnulldir.c */
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#define dirfd(dp) (dp)->dd_fd
static const char* dirname = "/this/baby/does/not/exist";
int
main(int argc, char* argv[])
{
DIR* dir;
int fd;
fd = dirfd(opendir(dirname));
(void) fprintf(stderr, "dirname fd = %ld\n", fd);
return 0;
}
[EMAIL PROTECTED]/tmp][03/22/2007 12:26:45][242]>> echo $CFLAGS
-Xc -erroff=%all -errshort=full -errfmt=error -errwarn=%none -xO3 -s -xjobs=2
-xregs=no%frameptr -dalign -xprefetch=auto
-xprefetch_auto_type=indirect_array_access -xprefetch_level=3 -xbuiltin=%all
-xcsi -xinline=%auto -xustr=ascii_utf16_ushort -z
combreloc -z redlocsym -z nodefaultlib -z now -z rescan -z
absexec -xipo=0 -xildoff -xldscope=symbolic -xrestrict=%all -xF=%none
-xalias_level=std -xsafe=mem -xthreadvar -lc -lpthread -lposix4 -lrt -mt
-D_REENTRANT -D__EXTENSIONS__=1 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-D_XPG4 -D_XPG4_2 -D_XPG6 -D_POSIX_PTHREAD_SEMANTICS -D_XOPEN_SOURCE=600
-D_POSIX_C_SOURCE=200112L -D__XOPEN_OR_POSIX -D_STRICT_STDC -D_STRICT_STDC__
-D_STDC_C99 -DAPR_BUCKET_DEBUG=1 -DAPR_RING_DEBUG=1 -DAPR_POOL_DEBUG=0
-DSOLARIS -DSOLARIS10 -DSOLARIS2=10 -DUSE_SOLARIS -DNDEBUG -DNO_DEBUG -KPIC
-xtarget=pentium4 -xarch=sse2 -xchip=pentium4 -xcache=8/64/4:256/128/8 -xO3 -s
[EMAIL PROTECTED]/tmp][03/22/2007 12:26:47][243]>>
[EMAIL PROTECTED]/tmp][03/22/2007 12:26:47][243]>> $CC $CFLAGS
$LDFLAGS testnulldir.c -o testnulldir
"testnulldir.c", line 14: error: undefined struct/union member: dd_fd
c99: acomp failed for testnulldir.c
[EMAIL PROTECTED]/tmp][03/22/2007 12:27:23][244]>>
we now change
#define dirfd(dp) (dp)->dd_fd
to
#define dirfd(dp) (dp)->d_fd
[EMAIL PROTECTED]/tmp][03/22/2007 12:28:10][246]>> $CC $CFLAGS
$LDFLAGS testnulldir.c -o testnulldir
[EMAIL PROTECTED]/tmp][03/22/2007 12:28:12][247]>> ./testnulldir
Segmentation fault (core dumped)
[EMAIL PROTECTED]/tmp][03/22/2007 12:28:17][248]>>
--Stefan
--
Stefan Teleman 'Nobody Expects the Spanish Inquisition'
KDE e.V. -Monty Python
[EMAIL PROTECTED]
_______________________________________________
opensolaris-discuss mailing list
[email protected]