Subversion Repositories shark

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 pj 1
/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Library General Public License as
6
   published by the Free Software Foundation; either version 2 of the
7
   License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Library General Public License for more details.
13
 
14
   You should have received a copy of the GNU Library General Public
15
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
16
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
   Boston, MA 02111-1307, USA.  */
18
 
19
/*
20
 *      POSIX Standard: 6.5 File Control Operations     <fcntl.h>
21
 */
22
 
23
#ifndef _FCNTL_H
24
#define _FCNTL_H        1
25
 
26
#include <features.h>
27
 
28
/* This must be early so <bits/fcntl.h> can define types winningly.  */
29
__BEGIN_DECLS
30
 
31
/* Get the definitions of O_*, F_*, FD_*: all the
32
   numbers and flag bits for `open', `fcntl', et al.  */
33
#include <bits/fcntl.h>
34
 
35
/* For XPG all symbols from <sys/stat.h> should also be available.  */
36
#ifdef __USE_XOPEN
37
# include <sys/stat.h>
38
#endif
39
 
40
/* are on unistd.h */
41
#if 0
42
 
43
#ifdef  __USE_MISC
44
# ifndef R_OK                   /* Verbatim from <unistd.h>.  Ugh.  */
45
/* Values for the second argument to access.
46
   These may be OR'd together.  */
47
#  define R_OK  4               /* Test for read permission.  */
48
#  define W_OK  2               /* Test for write permission.  */
49
#  define X_OK  1               /* Test for execute permission.  */
50
#  define F_OK  0               /* Test for existence.  */
51
# endif
52
#endif /* Use misc.  */
53
 
54
#endif /* 0 */
55
 
56
/* XPG wants the following symbols.  */
57
#ifdef __USE_XOPEN              /* <stdio.h> has the same definitions.  */
58
# define SEEK_SET       0       /* Seek from beginning of file.  */
59
# define SEEK_CUR       1       /* Seek from current position.  */
60
# define SEEK_END       2       /* Seek from end of file.  */
61
#endif  /* XPG */
62
 
63
/* Do the file control operation described by CMD on FD.
64
   The remaining arguments are interpreted depending on CMD.  */
65
extern int __fcntl __P ((int __fd, int __cmd, ...));
66
extern int fcntl __P ((int __fd, int __cmd, ...));
67
 
68
/* Open FILE and return a new file descriptor for it, or -1 on error.
69
   OFLAG determines the type of access used.  If O_CREAT is on OFLAG,
70
   the third argument is taken as a `mode_t', the mode of the created file.  */
71
extern int __open __P ((__const char *__file, int __oflag, ...));
72
#ifndef __USE_FILE_OFFSET64
73
extern int open __P ((__const char *__file, int __oflag, ...));
74
#else
75
# ifdef __REDIRECT
76
extern int __REDIRECT (open, __P ((__const char *__file, int __oflag, ...)),
77
                       open64);
78
# else
79
#  define open open64
80
# endif
81
#endif
82
#ifdef __USE_LARGEFILE64
83
extern int open64 __P ((__const char *__file, int __oflag, ...));
84
#endif
85
 
86
/* Create and open FILE, with mode MODE.
87
   This takes an `int' MODE argument because that is
88
   what `mode_t' will be widened to.  */
89
#ifndef __USE_FILE_OFFSET64
90
extern int creat __P ((__const char *__file, __mode_t __mode));
91
#else
92
# ifdef __REDIRECT
93
extern int __REDIRECT (creat, __P ((__const char *__file, __mode_t __mode)),
94
                       creat64);
95
# else
96
#  define creat creat64
97
# endif
98
#endif
99
#ifdef __USE_LARGEFILE64
100
extern int creat64 __P ((__const char *__file, __mode_t __mode));
101
#endif
102
 
103
#if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
104
                                               && !defined __USE_POSIX))
105
/* NOTE: These declarations also appear in <unistd.h>; be sure to keep both
106
   files consistent.  Some systems have them there and some here, and some
107
   software depends on the macros being defined without including both.  */
108
 
109
/* `lockf' is a simpler interface to the locking facilities of `fcntl'.
110
   LEN is always relative to the current file position.
111
   The CMD argument is one of the following.  */
112
 
113
# define F_ULOCK 0      /* Unlock a previously locked region.  */
114
# define F_LOCK  1      /* Lock a region for exclusive use.  */
115
# define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
116
# define F_TEST  3      /* Test a region for other processes locks.  */
117
 
118
# ifndef __USE_FILE_OFFSET64
119
extern int lockf __P ((int __fd, int __cmd, __off_t __len));
120
# else
121
# ifdef __REDIRECT
122
extern int __REDIRECT (lockf, __P ((int __fd, int __cmd, __off64_t __len)),
123
                       lockf64);
124
# else
125
#  define lockf lockf64
126
# endif
127
# endif
128
# ifdef __USE_LARGEFILE64
129
extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len));
130
# endif
131
#endif
132
 
133
__END_DECLS
134
 
135
#endif /* fcntl.h  */