/*************************************************************** SYS-TRUNCATE.C This file contains Linux/i386/ILP32 implementation of __cpu_sys_truncate(). PART OF : CPU - library . USAGE : Internal only . Copyright (C) 2026 by Andrew V.Kosteltsev. All Rights Reserved. ***************************************************************/ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include __mpu_int64_t __cpu_sys_truncate( int dirfd, const char *path, __mpu_int64_t length ) { off_t host_length; if( !path ) return( -(__mpu_int64_t)__MCPU_EFAULT ); host_length = (off_t)length; if( (__mpu_int64_t)host_length != length ) return( -(__mpu_int64_t)__MCPU_EOVERFLOW ); { int fd; int error; fd = openat( dirfd, path, O_WRONLY | O_CLOEXEC ); if( fd < 0 ) return( -(__mpu_int64_t)__cpu_errno_from_host( errno ) ); if( ftruncate( fd, host_length ) < 0 ) { error = errno; (void)close( fd ); return( -(__mpu_int64_t)__cpu_errno_from_host( error ) ); } (void)close( fd ); } return( 0 ); } /* End of __cpu_sys_truncate() */