da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Glenn Fowler
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * AT&T Research
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * generate POSIX fcntl.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sys/types.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/lib"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define getdtablesize ______getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define getpagesize ______getpagesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define ioctl ______ioctl
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef off_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef __STDC__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define off_t off_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _hdr_fcntl
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <fcntl.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _hdr_unistd
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <unistd.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sys/stat.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/fs"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef getpagesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef ioctl
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/tty"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef off_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define off_t off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinmain()
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f_local = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int f_lck = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int o_local = 2;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#pragma prototyped\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _typ_off64_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#undef off_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifdef __STDC__\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define off_t off_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#include <ast_fs.h>\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _typ_off64_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#undef off_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifdef __STDC__\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define off_t off_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#include <fcntl.h>\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _hdr_mman
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#include <mman.h>\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _sys_mman
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#include <sys/mman.h>\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef FD_CLOEXEC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define FD_CLOEXEC 1\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_DUPFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_DUPFD > f_local) f_local = F_DUPFD;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_GETFD > f_local) f_local = F_GETFD;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETFL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_GETFL > f_local) f_local = F_GETFL;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETLK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_GETLK > f_local) f_local = F_GETLK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_RDLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_LCK 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_RDLCK > f_lck) f_lck = F_RDLCK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_SETFD > f_local) f_local = F_SETFD;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETFL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_SETFL > f_local) f_local = F_SETFL;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETLK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_SETLK > f_local) f_local = F_SETLK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETLKW
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_SETLKW > f_local) f_local = F_SETLKW;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_UNLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_LCK 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_UNLCK > f_lck) f_lck = F_UNLCK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_WRLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_F 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_LCK 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (F_WRLCK > f_lck) f_lck = F_WRLCK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_F
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define fcntl _ast_fcntl\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _lib_fcntl
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define _lib_fcntl 1\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define _ast_F_LOCAL %d\n", f_local + 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_DUPFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_DUPFD %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_GETFD %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETFL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_GETFL %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_GETLK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_GETLK %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETFD
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_SETFD %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETFL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_SETFL %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETLK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_SETLK %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_SETLKW
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_SETLKW %d\n", ++f_local);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_LCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_RDLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_RDLCK %d\n", f_lck++);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_WRLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_WRLCK %d\n", f_lck++);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef F_UNLCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define F_UNLCK %d\n", f_lck++);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (f_lck == 3)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("struct flock\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("{\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf(" short l_type;\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf(" short l_whence;\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf(" off_t l_start;\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf(" off_t l_len;\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf(" short l_pid;\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("};\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_APPEND
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_APPEND > o_local) o_local = O_APPEND;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_CREAT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_CREAT > o_local) o_local = O_CREAT;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_EXCL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_EXCL > o_local) o_local = O_EXCL;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NOCTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef TIOCNOTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_NOCTTY > o_local) o_local = O_NOCTTY;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NONBLOCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NDELAY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_NONBLOCK > o_local) o_local = O_NONBLOCK;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_RDONLY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_RDWR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_TRUNC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (O_TRUNC > o_local) o_local = O_TRUNC;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_WRONLY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NEED_O 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_O
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define open _ast_open\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define _ast_O_LOCAL 0%o\n", o_local<<1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_RDONLY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_RDONLY 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_WRONLY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_WRONLY 1\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_RDWR
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_RDWR 2\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_APPEND
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_APPEND 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_CREAT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_CREAT 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_EXCL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_EXCL 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NOCTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef TIOCNOTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_NOCTTY 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NONBLOCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NDELAY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_NONBLOCK 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_TRUNC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_TRUNC 0%o\n", o_local <<= 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_ACCMODE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NOCTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef TIOCNOTTY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_NOCTTY 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_NONBLOCK
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef O_NDELAY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_NONBLOCK O_NDELAY\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_BINARY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_BINARY 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_TEMPORARY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_TEMPORARY 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef O_TEXT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define O_TEXT 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_F || NEED_O
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_F
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("extern int fcntl(int, int, ...);\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if NEED_O
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("extern int open(const char*, int, ...);\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#include <ast_fs.h>\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _typ_off64_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#undef off_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define off_t off64_t\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_fstat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define fstat fstat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_lstat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define lstat lstat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_stat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define stat stat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_creat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define creat creat64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_mmap64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define mmap mmap64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if _lib_open64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#undef open\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define open open64\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}