|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hello.
I have a question regarding the st_mode field of the "stat" struct in sys/stat.h. 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. /Deniz Dogan |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On 11 May, 12:05, Deniz Dogan <kristn...@gmail.com> wrote:
> Hello. > > I have a question regarding the st_mode field of the "stat" struct in > sys/stat.h. 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. We only deal with standard C here. For this sort of question you should go to comp.unix.programmer |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On May 11, 2:05 pm, Deniz Dogan <kristn...@gmail.com> wrote:
> Hello. > > I have a question regarding the st_mode field of the "stat" struct in > sys/stat.h. 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. Off-topic for this newsgroup, comp.unix.programmer would be more appropriate, but you can certainly cast mode_t to (unsigned long) and use sprintf and %lo. |
|
![]() |
| Outils de la discussion | |
|
|