1 /* 2 ** Copyright 2002-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3 ** Distributed under the terms of the OpenBeOS License. 4 ** 5 ** Copyright 2001, Manuel J. Petit. All rights reserved. 6 ** Distributed under the terms of the NewOS License. 7 */ 8 9 10 #include <unistd.h> 11 #include <syscalls.h> 12 #include <errno.h> 13 14 15 #define RETURN_AND_SET_ERRNO(err) \ 16 if (err < 0) { \ 17 errno = err; \ 18 return -1; \ 19 } \ 20 return err; 21 22 23 ssize_t 24 write(int fd, void const *buffer, size_t bufferSize) 25 { 26 int status = _kern_write(fd, -1, buffer, bufferSize); 27 28 RETURN_AND_SET_ERRNO(status); 29 } 30 31 32 ssize_t 33 write_pos(int fd, off_t pos, const void *buffer, size_t bufferSize) 34 { 35 int status = _kern_write(fd, pos, buffer, bufferSize); 36 37 RETURN_AND_SET_ERRNO(status); 38 } 39 40 41 ssize_t 42 pwrite(int fd, const void *buffer, size_t bufferSize, off_t pos) 43 { 44 int status = _kern_write(fd, pos, buffer, bufferSize); 45 46 RETURN_AND_SET_ERRNO(status); 47 } 48 49