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 75af32e75SAxel Dörfler #include <fs_interface.h> 8*5e2ef462SAxel Dörfler #include <NodeMonitor.h> 95af32e75SAxel Dörfler 105af32e75SAxel Dörfler #include <unistd.h> 115af32e75SAxel Dörfler #include <syscalls.h> 125af32e75SAxel Dörfler #include <errno.h> 135af32e75SAxel Dörfler 145af32e75SAxel Dörfler 155af32e75SAxel Dörfler #define RETURN_AND_SET_ERRNO(err) \ 165af32e75SAxel Dörfler if (err < 0) { \ 175af32e75SAxel Dörfler errno = err; \ 185af32e75SAxel Dörfler return -1; \ 195af32e75SAxel Dörfler } \ 205af32e75SAxel Dörfler return err; 215af32e75SAxel Dörfler 225af32e75SAxel Dörfler 235af32e75SAxel Dörfler int 245af32e75SAxel Dörfler truncate(const char *path, off_t newSize) 255af32e75SAxel Dörfler { 265af32e75SAxel Dörfler struct stat stat; 275af32e75SAxel Dörfler status_t status; 285af32e75SAxel Dörfler 295af32e75SAxel Dörfler stat.st_size = newSize; 305af32e75SAxel Dörfler status = _kern_write_stat(-1, path, true, &stat, sizeof(struct stat), 31*5e2ef462SAxel Dörfler B_STAT_SIZE); 325af32e75SAxel Dörfler 335af32e75SAxel Dörfler RETURN_AND_SET_ERRNO(status); 345af32e75SAxel Dörfler } 355af32e75SAxel Dörfler 365af32e75SAxel Dörfler 375af32e75SAxel Dörfler int 385af32e75SAxel Dörfler ftruncate(int fd, off_t newSize) 395af32e75SAxel Dörfler { 405af32e75SAxel Dörfler struct stat stat; 415af32e75SAxel Dörfler status_t status; 425af32e75SAxel Dörfler 435af32e75SAxel Dörfler stat.st_size = newSize; 445af32e75SAxel Dörfler status = _kern_write_stat(fd, NULL, false, &stat, sizeof(struct stat), 45*5e2ef462SAxel Dörfler B_STAT_SIZE); 465af32e75SAxel Dörfler 475af32e75SAxel Dörfler RETURN_AND_SET_ERRNO(status); 485af32e75SAxel Dörfler } 495af32e75SAxel Dörfler 50