[comp.unix.wizards] Question about stat

marck@cwi.nl (Marc H. Kool) (02/09/90)

Is the empty file name an alias for "." ?

I have the following program:

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

main()
{
        FILE * fp;
        struct stat s;

        fp = fopen( "", "r" );
        if (fp == NULL)
                printf( "can't read \"\"\n" );
        else
                fclose( fp );

        fp = fopen( "", "w" );
        if (fp == NULL)
                printf( "can't write \"\"\n" );
        else
                fclose( fp );

        if (stat( "", &s ) < 0)
                perror( "stat" );
        else {
                printf( "mode %07o\n", s.st_mode );
                printf( "uid %d  gid %d  size %d  ino %d\n", s.st_uid,
                        s.st_gid, s.st_size, s.st_ino );
        }
}

and the output is:

can't read ""
can't write ""
mode 0040700
uid 406  gid 136  size 512  ino 47440

If I type  'ls -lid .' it occurs that the above is the same as "."
Is this OK ?
Why does fopen( "", "r" ) fails and fopen( ".", "r" ) not ?

-Marc

-- 
------------
Marc H. Kool,  marck@cwi.nl

lm@snafu.Sun.COM (Larry McVoy) (02/10/90)

In article <8788@boring.cwi.nl> marck@cwi.nl (Marc H. Kool) writes:
>
>Is the empty file name an alias for "." ?

On some systems (BSD based) it is.  Don't count on it, though - this shortcut
is forbidden in a POSIX conformant environment.
---
What I say is my opinion.  I am not paid to speak for Sun, I'm paid to hack.
    Besides, I frequently read news when I'm drjhgunghc, err, um, drunk.
Larry McVoy, Sun Microsystems     (415) 336-7627       ...!sun!lm or lm@sun.com

gwyn@smoke.BRL.MIL (Doug Gwyn) (02/10/90)

In article <8788@boring.cwi.nl> marck@cwi.nl (Marc H. Kool) writes:
>Is the empty file name an alias for "." ?

In some implementations it is, and in some it is not.
Don't count on "" being accepted as a valid file name.