Mercurial > hg > octave-lyh
view 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 |
line wrap: on
line source
/* safe-@l@stat.h -- EINTR-safe interface to @l@stat Copyright (C) 1994 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Written by Jim Meyering <meyering@comco.com>. */ #ifndef _safe_@l@stat_h_ #define _safe_@l@stat_h_ 1 /* NOTE: you must include the following headers (in the listed order) before this one: <sys/types.h>, <sys/stat.h>. */ #if !defined(S_ISLNK) && defined(S_IFLNK) @LSTAT_ONLY@ #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) @LSTAT_ONLY@ #endif @LSTAT_ONLY@ @LSTAT_ONLY@ #ifndef S_ISLNK @LSTAT_ONLY@ #include "safe-stat.h" @LSTAT_ONLY@ #define SAFE_LSTAT SAFE_STAT @LSTAT_ONLY@ #define safe_lstat safe_stat @LSTAT_ONLY@ #else @LSTAT_ONLY@ @LSTAT_ONLY@ #include <errno.h> #ifndef errno extern int errno; #endif #ifndef __GNUC__ #define __inline /* empty */ #endif /* On some systems, @l@stat can return EINTR. */ #ifndef EINTR # define SAFE_@L@STAT(name, buf) @l@stat (name, buf) #else # ifndef __static # define __static static # endif # define SAFE_@L@STAT(name, buf) safe_@l@stat (name, buf) __static __inline int safe_@l@stat (name, buf) const char *name; struct stat *buf; { int ret; do ret = @l@stat (name, buf); while (ret < 0 && errno == EINTR); return ret; } #endif #endif /* S_ISLNK */ @LSTAT_ONLY@ #endif /* _safe_@l@stat_h_ */