Hello
Kristian Köhntopp wrote:
> I have a machine running under 2.6.13-SMP, using reiserfs 3.6. On
> this machine, directories are flagged strangely and thus code
> which operates properly under ext3 fails with reiserfs.
>
> Why is this, and what am I doing wrong?
>
> My goal is to walk a spool directory recursively and deal with
> all files inside directories that I encounter. For that, I check
> struct dirent *ent->d_type and get unexpected results.
>
Yes, unfortunately, reiserfs does not support entry types.
Probably it should, but there is nothing wrong to not support it:
man readdir:
According to POSIX, the dirent structure contains a field char d_name[]
of unspecified size, with at most NAME_MAX charac╜
ters preceding the terminating null character. Use of other fields
will harm the portability of your programs. POSIX
1003.1-2001 also documents the field ino_t d_ino as an XSI extension.
>
> mx15:/tmp # uname -a
> Linux mx15 2.6.13web #4 SMP Fri Sep 16 16:03:39 CEST 2005 i686
> unknown
>
> mx15:/tmp # cat rtest.cpp
> #include <stdio.h>
> #include <dirent.h>
>
> int main(int argc, char** argv)
> {
> struct dirent *ent = NULL;
> DIR *dd = NULL;
>
> dd = opendir(argv[1]);
> if (dd != NULL) {
> while ((ent = readdir(dd)) != NULL) {
> /* disable actual test and print ent->d_type */
> /* ent->d_type==DT_DIR && ent->d_name[1]==0 && ent->d_name[0]>0
> && ent->d_name[0]!='.'*/
> if (1) {
> printf("%s (%d) \n", ent->d_name, ent->d_type);
> }
> }
> closedir(dd);
> }
> }
> mx15:/tmp # ./rtest /netsite/var/spool/wmail.reiser
> . (0)
> .. (0)
> head (0)
> dbclub02 (0)
> mx15:/tmp # df -Th /netsite/var/spool/wmail.reiser
> Dateisystem Typ Größe Benut Verf Ben% Eingehängt auf
> /reiserfile
> reiserfs 2.0G 33M 2.0G
> 2% /netsite/var/spool/wmail.reiser
>
>
>
> Kristian
>
>