| www.delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | delorie.com: mail set sender to djgpp-workers-bounces using -f |
| X-Recipient: | djgpp-workers AT delorie DOT com |
| From: | Martin Str|mberg <ams AT ludd DOT ltu DOT se> |
| Message-Id: | <201305011954.r41JsMnW006530@dexter.ludd.ltu.se> |
| Subject: | Re: The encoding of S_IFREG |
| To: | djgpp-workers AT delorie DOT com |
| Date: | Wed, 1 May 2013 21:54:22 +0200 (MEST) |
| In-Reply-To: | <5180E8C7.4010609@gmx.de> from "Juan Manuel Guerrero" at May 01, 2013 12:04:55 PM |
| X-Mailer: | ELM [version 2.5 PL6] |
| MIME-Version: | 1.0 |
| Reply-To: | djgpp-workers AT delorie DOT com |
| Errors-To: | nobody AT delorie DOT com |
| X-Mailing-List: | djgpp-workers AT delorie DOT com |
| X-Unsubscribes-To: | listserv AT delorie DOT com |
According to Juan Manuel Guerrero:
> Currently the following encodings are used:
>
> #define S_IFMT 0xf000
>
> #define S_IFREG 0x0000
> #define S_IFBLK 0x1000
> #define S_IFCHR 0x2000
> #define S_IFDIR 0x3000
> #define S_IFIFO 0x4000
> #define S_IFLNK 0x8000
>
> #define S_IFLABEL 0x5000
>
> We could replace 0x0000 by 0x6000. I am aware that this may introduce
IIUC, you'd use the above constants like this:
struct stat buf;
if( ! stat(path, &buf) ) {
int type = S_IFMT & buf.st_mode;
switch( type ) {
case S_IFBLK: // Block device.
break;
case S_IFDIR: // Dir.
break;
case S_IFREG: // Regular file.
break;
}
I'd think the thinking was, set a bit to indicate some special thing
about this "file". So if no bit is set then it must be a regular file.
Two comments:
1. Why would 0 not be a valid indication? Does a/the spec say so? I
think this is a bug in the code your trying to port.
2. Is st_mode 16 bits in DJGPP? Otherwise why not use 0x10000?
Thank you!
--
MartinS
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |