1c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert/* 2c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * Copyright (C) 2015 The Android Open Source Project 3c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * 4c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * Licensed under the Apache License, Version 2.0 (the "License"); 5c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * you may not use this file except in compliance with the License. 6c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * You may obtain a copy of the License at 7c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * 8c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * http://www.apache.org/licenses/LICENSE-2.0 9c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * 10c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * Unless required by applicable law or agreed to in writing, software 11c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * distributed under the License is distributed on an "AS IS" BASIS, 12c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * See the License for the specific language governing permissions and 14c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert * limitations under the License. 15c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert */ 16c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert 17c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert#include <errno.h> 18c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert#include <sys/cdefs.h> 19c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert#include <unistd.h> 20c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert 219d476a02e9a14e847669a6683c585028175aa322Dan Albert#if !defined(__LP64__) 229d476a02e9a14e847669a6683c585028175aa322Dan Albertstatic_assert(sizeof(off_t) == 4, 239d476a02e9a14e847669a6683c585028175aa322Dan Albert "libc can't be built with _FILE_OFFSET_BITS=64."); 249d476a02e9a14e847669a6683c585028175aa322Dan Albert 25c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert// The kernel's implementation of ftruncate uses an unsigned long for the length 26c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert// parameter, so it will not catch negative values. On the other hand 27c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert// ftruncate64 does check for this, so just forward the call. 28c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albertint ftruncate(int filedes, off_t length) { 29c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert return ftruncate64(filedes, length); 30c05554ec5c9aff5e0f1e83de9bb62c3569eecca2Dan Albert} 319d476a02e9a14e847669a6683c585028175aa322Dan Albert#endif // !defined(__LP64__) 32