in reply to Re: automounted directory status
in thread automounted directory status

That definitely appears to be the case. My point is that, perhaps perl should answer the question asked, i.e. is the object (directory in this case) writable. The answer should not be OS dependant, ie. different if it is an unmounted but automountable directory. I just want to know if I can write a file to it, which I can in this case, mounted or not. I should not have to write code that works around the issues raised by automounted filesystems.

Replies are listed 'Best First'.
Re^3: automounted directory status
by DrHyde (Prior) on Feb 03, 2014 at 12:26 UTC

    But it *is* answering the question asked. 'Is /mnt/blahblah' writeable now' is not the same question as 'is /mnt/blahblah writeable after it has been autommounted'. You are asking 'is it writeable now'. The canonical way of asking that question is a stat(2) call. As I demonstrated, that is what perl does. It's what your shell probably does too - mine certainly does:

    $ strace sh -c "if [ -w /etc ]; then echo Writeable; fi" ... stat("/etc", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 ...

    Which clearly shows that perl is Doing The Right Thing by using stat(2) to check whether the directory is writeable.

      I am not asking 'What is the UNIX representation of it's status. I am asking 'If I write, will it succeed?' The answer is YES, so that is the answer I should get, not something conditional, like, 'well this is a UNIX system with automounted directories and this directory is not currently mounted so NO, but ask the right question and you will get YES'. Perl is supposed to be portable isnt it?

        I'm sorry, but you are *not* asking "If I write will it succeed". -w doesn't mean that. -w will also return true on filesystems that are full, or are out of inodes. All -w means is "does this resource have a write bit set for the current user".

        Yes, perl is portable. That doesn't mean that you don't have to care about portability. For example, to make your code work on both Windows and Unix you have to care about whether lines of text end in \n or \r\n and to be rather careful about how you open files. Well, dealing with automounters is apparently another of those things where you need to be careful about portability.