annotate liboctave/safe-xstat.hin @ 1631:b0b22b6ce22f

[project @ 1995-11-14 20:24:15 by jwe]
author jwe
date Tue, 14 Nov 1995 20:27:50 +0000
parents f1fbe4cdd75c
children 635d28024664
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1408
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
1 /* safe-@l@stat.h -- EINTR-safe interface to @l@stat
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
2 Copyright (C) 1994 Free Software Foundation, Inc.
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
3
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
6 the Free Software Foundation; either version 2, or (at your option)
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
7 any later version.
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
8
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
12 GNU General Public License for more details.
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
13
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
15 along with this program; if not, write to the Free Software
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
17
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
18 /* Written by Jim Meyering <meyering@comco.com>. */
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
19
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
20 #ifndef _safe_@l@stat_h_
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
21 #define _safe_@l@stat_h_ 1
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
22
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
23 /* NOTE: you must include the following headers (in the listed order)
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
24 before this one: <sys/types.h>, <sys/stat.h>. */
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
25
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
26 #if !defined(S_ISLNK) && defined(S_IFLNK) @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
27 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
28 #endif @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
29 @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
30 #ifndef S_ISLNK @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
31 #include "safe-stat.h" @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
32 #define SAFE_LSTAT SAFE_STAT @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
33 #define safe_lstat safe_stat @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
34 #else @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
35 @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
36 #include <errno.h>
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
37
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
38 #ifndef errno
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
39 extern int errno;
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
40 #endif
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
41
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
42 #ifndef __GNUC__
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
43 #define __inline /* empty */
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
44 #endif
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
45
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
46 /* On some systems, @l@stat can return EINTR. */
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
47
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
48 #ifndef EINTR
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
49 # define SAFE_@L@STAT(name, buf) @l@stat (name, buf)
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
50 #else
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
51 # ifndef __static
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
52 # define __static static
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
53 # endif
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
54 # define SAFE_@L@STAT(name, buf) safe_@l@stat (name, buf)
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
55 __static __inline int
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
56 safe_@l@stat (name, buf)
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
57 const char *name;
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
58 struct stat *buf;
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
59 {
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
60 int ret;
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
61
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
62 do
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
63 ret = @l@stat (name, buf);
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
64 while (ret < 0 && errno == EINTR);
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
65
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
66 return ret;
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
67 }
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
68 #endif
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
69
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
70 #endif /* S_ISLNK */ @LSTAT_ONLY@
f1fbe4cdd75c [project @ 1995-09-15 06:39:28 by jwe]
jwe
parents:
diff changeset
71 #endif /* _safe_@l@stat_h_ */