118092ddc866425598abf4521d9ed4eda9573fdaaKenny Root/*
218092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * Copyright (C) 2010 The Android Open Source Project
318092ddc866425598abf4521d9ed4eda9573fdaaKenny Root *
418092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
518092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * you may not use this file except in compliance with the License.
618092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * You may obtain a copy of the License at
718092ddc866425598abf4521d9ed4eda9573fdaaKenny Root *
818092ddc866425598abf4521d9ed4eda9573fdaaKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
918092ddc866425598abf4521d9ed4eda9573fdaaKenny Root *
1018092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * Unless required by applicable law or agreed to in writing, software
1118092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1218092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1318092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * See the License for the specific language governing permissions and
1418092ddc866425598abf4521d9ed4eda9573fdaaKenny Root * limitations under the License.
1518092ddc866425598abf4521d9ed4eda9573fdaaKenny Root */
1618092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
1718092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#ifndef __LIB_UTILS_COMPAT_H
1818092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#define __LIB_UTILS_COMPAT_H
1918092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
2018092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#include <unistd.h>
2118092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
2218092ddc866425598abf4521d9ed4eda9573fdaaKenny Root/* Compatibility definitions for non-Linux (i.e., BSD-based) hosts. */
2318092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#ifndef HAVE_OFF64_T
2418092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#if _FILE_OFFSET_BITS < 64
2518092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#error "_FILE_OFFSET_BITS < 64; large files are not supported on this platform"
2618092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#endif /* _FILE_OFFSET_BITS < 64 */
2718092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
2818092ddc866425598abf4521d9ed4eda9573fdaaKenny Roottypedef off_t off64_t;
2918092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
3018092ddc866425598abf4521d9ed4eda9573fdaaKenny Rootstatic inline off64_t lseek64(int fd, off64_t offset, int whence) {
3118092ddc866425598abf4521d9ed4eda9573fdaaKenny Root    return lseek(fd, offset, whence);
3218092ddc866425598abf4521d9ed4eda9573fdaaKenny Root}
3318092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
3418092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#ifdef HAVE_PREAD
3518092ddc866425598abf4521d9ed4eda9573fdaaKenny Rootstatic inline ssize_t pread64(int fd, void* buf, size_t nbytes, off64_t offset) {
3618092ddc866425598abf4521d9ed4eda9573fdaaKenny Root    return pread(fd, buf, nbytes, offset);
3718092ddc866425598abf4521d9ed4eda9573fdaaKenny Root}
3818092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#endif
3918092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
4018092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#endif /* !HAVE_OFF64_T */
4118092ddc866425598abf4521d9ed4eda9573fdaaKenny Root
4218092ddc866425598abf4521d9ed4eda9573fdaaKenny Root#endif /* __LIB_UTILS_COMPAT_H */
43