15af32e75SAxel Dörfler /* 2*5e2ef462SAxel Dörfler * Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3*5e2ef462SAxel Dörfler * Distributed under the terms of the MIT License. 45af32e75SAxel Dörfler */ 55af32e75SAxel Dörfler 65af32e75SAxel Dörfler 7*5e2ef462SAxel Dörfler #include <NodeMonitor.h> 85af32e75SAxel Dörfler 95af32e75SAxel Dörfler #include <sys/stat.h> 105af32e75SAxel Dörfler #include <syscalls.h> 115af32e75SAxel Dörfler #include <errno.h> 125af32e75SAxel Dörfler 135af32e75SAxel Dörfler 145af32e75SAxel Dörfler #define RETURN_AND_SET_ERRNO(err) \ 155af32e75SAxel Dörfler if (err < 0) { \ 165af32e75SAxel Dörfler errno = err; \ 175af32e75SAxel Dörfler return -1; \ 185af32e75SAxel Dörfler } \ 195af32e75SAxel Dörfler return err; 205af32e75SAxel Dörfler 215af32e75SAxel Dörfler 225af32e75SAxel Dörfler int 235af32e75SAxel Dörfler chmod(const char *path, mode_t mode) 245af32e75SAxel Dörfler { 255af32e75SAxel Dörfler struct stat stat; 265af32e75SAxel Dörfler status_t status; 275af32e75SAxel Dörfler 285af32e75SAxel Dörfler stat.st_mode = mode; 295af32e75SAxel Dörfler status = _kern_write_stat(-1, path, true, &stat, sizeof(struct stat), 30*5e2ef462SAxel Dörfler B_STAT_MODE); 315af32e75SAxel Dörfler 325af32e75SAxel Dörfler RETURN_AND_SET_ERRNO(status); 335af32e75SAxel Dörfler } 345af32e75SAxel Dörfler 355af32e75SAxel Dörfler 365af32e75SAxel Dörfler int 375af32e75SAxel Dörfler fchmod(int fd, mode_t mode) 385af32e75SAxel Dörfler { 395af32e75SAxel Dörfler struct stat stat; 405af32e75SAxel Dörfler status_t status; 415af32e75SAxel Dörfler 425af32e75SAxel Dörfler stat.st_mode = mode; 435af32e75SAxel Dörfler status = _kern_write_stat(fd, NULL, false, &stat, sizeof(struct stat), 44*5e2ef462SAxel Dörfler B_STAT_MODE); 455af32e75SAxel Dörfler 465af32e75SAxel Dörfler RETURN_AND_SET_ERRNO(status); 475af32e75SAxel Dörfler } 48