Afficher un message
Vieux 11/05/2008, 13h25   #3
Jens Thoms Toerring
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: with st_mode in sys/stat.h

Deniz Dogan <kristnjov@gmail.com> wrote:
> I have a question regarding the st_mode field of the "stat" struct in
> sys/stat.h.


I guess you're not aware that this isn't really a question about
C but looks more like one about POSIX, so comp.unix.programmer
would be more appropriate to ask in.

> I'd like to know how to use the S_IRWXU, S_IRWXG and
> S_IRWXO flags to mask the mode_t value into human readable form such
> as 755, 644, etc. Currently I do something similar to this:


> usr_t = (mod & S_IRWXU);


> usr_r = (mod & S_IRUSR);
> usr_w = (mod & S_IWUSR);
> usr_x = (mod & S_IXUSR);


> However, this does not produce the required result. Any is
> appreciated.


What about something like

mode = ( ( ( stat.st_mode & S_IRUSR ) ? 1 : 0 ) << 8 )
| ( ( ( stat.st_mode & S_IWUSR ) ? 1 : 0 ) << 7 )
| ( ( ( stat.st_mode & S_IXUSR ) ? 1 : 0 ) << 6 )
| ( ( ( stat.st_mode & S_IRGRP ) ? 1 : 0 ) << 5 )
| ( ( ( stat.st_mode & S_IWGRP ) ? 1 : 0 ) << 4 )
| ( ( ( stat.st_mode & S_IXGRP ) ? 1 : 0 ) << 3 )
| ( ( ( stat.st_mode & S_IROTH ) ? 1 : 0 ) << 2 )
| ( ( ( stat.st_mode & S_IWOTH ) ? 1 : 0 ) << 1 )
| ( ( ( stat.st_mode & S_IXOTH ) ? 1 : 0 ) << 0 );

and then printing the result as an octal number?

Regards, Jens
--
\ Jens Thoms Toerring ___ jt@toerring.de
\__________________________ http://toerring.de
  Réponse avec citation
 
Page generated in 0,08860 seconds with 9 queries