Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

dirent->d_type: DT_LNK oddness ?



Hiya -

Playing with BSD File routines & it seems that *every* file I retrieve
info on via readdir that isn't a directory or a pipe/fifo has "DT_LNK"
set. 

I would have thought that this should only be set for symbolic links
(cannot be sure, since sys/dirent.h doesn't elaborate on the enums
listed, and I can find nothing on this via google.

Should I maybe be using something other than readdir to grab the
contents of a directory ? At this point I'm looking for file name, and
the type of stuff that (I thought) was included in dirent's d_type
(whether something is a directory, pipe, link or 'regular' file).

FWIW, here's a snipped of code that illustrates what I'm doing:

#include <stdio.h>
#include <sys/types.h>
#include <sys/dir.h>

int main(int argc, char *argv[]) {

        DIR *dirp;
        struct dirent *dp;

        dirp = opendir(argv[1]);
        while ((dp = readdir(dirp)) != NULL) {
                printf("NAME IS : %s", dp->d_name);
                if (dp->d_type & DT_UNKNOWN) printf("\t\tUNKNOWN");
                if (dp->d_type & DT_DIR)     printf("\t\tDIRECTORY");
                if (dp->d_type & DT_LNK)     printf("\t\tLINK");
                if (dp->d_type & DT_FIFO)     printf("\t\tPIPE");
                printf("\n");
        }
        (void)closedir(dirp);

    return 0;
} // fin

Thanks for any advice you can throw at me - Dave
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-dev/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.