Mail Archives: djgpp/1998/05/27/08:00:47
erikyyy AT studbox DOT uni-stuttgart DOT de wrote:
>
> my linux libc docu sais, that readdir returns 0 on error
> and may set errno to
>
> `EBADF' The DIRSTREAM argument is not valid.
>
> since 0 may also mean, that the directory is at the end, there must
> be a way to distinguish between those two cases.
>
> i think the right way to do this is
>
> if (!readdir(.......)) if (errno) die("system shit");
> else printf("directory ends");
>
> this doesn't work, because:
>
> readdir DOESN'T SET errno TO 0, if it returns 0 and the
> directory is at its end !!!!!!!!!!!!!!
As I have recently learned, ANSI just says that
errno must be set to zero at the program start.
Functions that produce no error may not
set it to any value. So you must say
errno = 0;
if ( !readdir ){
if (errno)
puts("Shit");
--
Ciao
Tom
*************************************************************
* Thomas Demmer *
* Lehrstuhl fuer Stroemungsmechanik *
* Ruhr-Uni-Bochum *
* Universitaetsstr. 150 *
* D-44780 Bochum *
* Tel: +49 234 700 6434 *
* Fax: +49 234 709 4162 *
* http://www.lstm.ruhr-uni-bochum.de/~demmer *
*************************************************************
- Raw text -