apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Philip Martin <phi...@codematters.co.uk>
Subject Re: [PATCH] apr_dir_read doesn't return requested information
Date Wed, 18 Dec 2002 18:25:13 GMT
"William A. Rowe, Jr." <wrowe@apache.org> writes:

> Philip... thanks.
> 
> Now for the oddball question, looking at dirent.h or it's associate sys/ 
> includes, what symbol DT_xxx (DT_REG, etc) do you find for value 0?

/usr/include/dirent.h

/* File types for `d_type'.  */
enum
  {
    DT_UNKNOWN = 0,
# define DT_UNKNOWN     DT_UNKNOWN
    DT_FIFO = 1,
# define DT_FIFO        DT_FIFO
    DT_CHR = 2,
# define DT_CHR         DT_CHR
    DT_DIR = 4,
# define DT_DIR         DT_DIR
    DT_BLK = 6,
# define DT_BLK         DT_BLK
    DT_REG = 8,
# define DT_REG         DT_REG
    DT_LNK = 10,
# define DT_LNK         DT_LNK
    DT_SOCK = 12,
# define DT_SOCK        DT_SOCK
    DT_WHT = 14
# define DT_WHT         DT_WHT
  };

> Also, what values do you have for DIRENT_TYPE, DIRENT_INODE from
> apr/include/arch/unix/apr_private.h?

#define DIRENT_INODE d_fileno
#define DIRENT_TYPE d_type

>From the libc info files:

    `unsigned char d_type'
          This is the type of the file, possibly unknown.  The
          following constants are defined for its value:

         `DT_UNKNOWN'
               The type is unknown.  On some systems this is the only
               value returned.

A test program:

$ cat z.c
#include <dirent.h>
#include <sys/types.h>
int main() {
   DIR *d = opendir(".");
   struct dirent e, *r;
   int v = readdir_r(d, &e, &r);
   while (! v && r) {
      printf("%s %d\n", r->d_name, r->d_type);
      v = readdir_r(d, &e, &r);
   }
   return 0;
}
$ gcc -o z z.c
$ ls -l
total 13
drwxr-sr-x    2 pm       pm             48 Dec 18 18:21 foo
-rwxr-xr-x    1 pm       pm           5147 Dec 18 18:22 z
-rw-r--r--    1 pm       pm            262 Dec 18 18:22 z.c
$ ./z
. 0
.. 0
z 0
foo 0
z.c 0

-- 
Philip Martin

Mime
View raw message