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 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 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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 Precedence: bulk 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