minimal implementation of ftruncate. Reference: /n/sources/patch/applied/ape-ftruncate Date: Sat Aug 23 18:58:10 CES 2008 Signed-off-by: bichued@gmail.com --- /sys/include/ape/unistd.h Sat Aug 23 18:57:23 2008 +++ /sys/include/ape/unistd.h Sat Aug 23 18:57:17 2008 @@ -140,6 +140,7 @@ extern ssize_t read(int, void *, size_t); extern ssize_t write(int, const void *, size_t); #ifdef __TYPES_H +extern int ftruncate(int, off_t); extern off_t lseek(int, off_t, int); #endif --- /sys/src/ape/lib/ap/plan9/ftruncate.c Sat Aug 23 18:57:35 2008 +++ /sys/src/ape/lib/ap/plan9/ftruncate.c Sat Aug 23 18:57:29 2008 @@ -1,10 +1,23 @@ +#include "lib.h" #include #include #include +#include "dir.h" int ftruncate(int fd, off_t length) { - errno = EINVAL; - return -1; + Dir d; + + if(length < 0){ + errno = EINVAL; + return -1; + } + _nulldir(&d); + d.length = length; + if(_dirfwstat(fd, &d) < 0){ + _syserrno(); + return -1; + } + return 0; }