[cs631apue] whiteout files

Jan Schaumann jschauma at stevens.edu
Sun Oct 5 21:14:47 EDT 2014

Sadia Akhter <sakhter at stevens.edu> wrote:
> found that "S_IFWHT" is defined in sys/stat.h of BSD systems and could
> be used to check whether a file is whiteout file or not. But I did not
> find this when I looked up the man page of "stat" in the linux lab
> machines. So it turns out that I cannot use it in my program as it is
> not defined.

You could have code that's ifdef'd to handle this case on systems where
this is supported.

#ifdef S_ISWHT
if (S_ISWHT(file.st_mode)) {
	/* white-out related code goes here */

On Linux, you will never trigger this code block, but by having a
pre-processor directive conditionally including the code based on the
definition, your code would do the right thing on a platform that _does_
implement it.

(If you end up using strmode(3), you probably don't need to deal with
this at all, I think.)

For what exactly a whiteout file is, refer to the idea of a "union file
system" as explained in http://is.gd/09BfOy, for example.


More information about the cs631apue mailing list