[Previous] [Contents] [Next]

iofunc_chown()

Handle an _IO_CHOWN message

Synopsis:

#include <sys/iofunc.h>

int iofunc_chown ( resmgr_context_t *ctp,
                   io_chown_t *msg,
                   iofunc_ocb_t *ocb,
                   iofunc_attr_t *attr );

Library:

libc

Description:

The iofunc_chown() function implements POSIX semantics for the client's chown() call, which is received as an _IO_CHOWN message by the resource manager.

The iofunc_chown() function verifies that the client has the necessary permissions to effect a chown on the attribute. If so, the chown is performed, modifying elements of the ocb->attr structure. As per POSIX 1003.1, if the client isn't root, iofunc_chown() clears the set-user-id and set-group-id bits in the ocb->attr->mode member. This function takes care of updating the IOFUNC_ATTR_CTIME, IOFUNC_ATTR_DIRTY_TIME, and IOFUNC_ATTR_DIRTY_MODE bits in ocb->attr->flags. The iofunc_time_update() function can be used to update the appropriate time fields in ocb->attr.

Returns:

EOK
Successful completion.
EROFS
An attempt was made to chown on a read-only filesystem.
EACCES
The client doesn't have permissions to do the operation.
EPERM
The group ID or owner ID didn't match.

Classification:

QNX 6

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

iofunc_chmod(), iofunc_chmod_default(), iofunc_chown_default(), iofunc_close_dup_default(), iofunc_close_ocb_default(), iofunc_devctl_default(), iofunc_lock_default(), iofunc_lseek_default(), iofunc_mmap_default(), iofunc_open_default(), iofunc_pathconf_default(), iofunc_stat_default(), iofunc_time_update(), iofunc_unblock_default(), iofunc_utime_default(), resmgr_attach()


[Previous] [Contents] [Next]