Mercurial > hg > CbC > CbC_gcc
comparison libiberty/unlink-if-ordinary.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* unlink-if-ordinary.c - remove link to a file unless it is special | |
2 Copyright (C) 2004, 2005 Free Software Foundation, Inc. | |
3 | |
4 This file is part of the libiberty library. This library is free | |
5 software; you can redistribute it and/or modify it under the | |
6 terms of the GNU General Public License as published by the | |
7 Free Software Foundation; either version 2, or (at your option) | |
8 any later version. | |
9 | |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
16 along with GNU CC; see the file COPYING. If not, write to | |
17 the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. | |
18 | |
19 As a special exception, if you link this library with files | |
20 compiled with a GNU compiler to produce an executable, this does not cause | |
21 the resulting executable to be covered by the GNU General Public License. | |
22 This exception does not however invalidate any other reasons why | |
23 the executable file might be covered by the GNU General Public License. */ | |
24 | |
25 /* | |
26 | |
27 @deftypefn Supplemental int unlink_if_ordinary (const char*) | |
28 | |
29 Unlinks the named file, unless it is special (e.g. a device file). | |
30 Returns 0 when the file was unlinked, a negative value (and errno set) when | |
31 there was an error deleting the file, and a positive value if no attempt | |
32 was made to unlink the file because it is special. | |
33 | |
34 @end deftypefn | |
35 | |
36 */ | |
37 | |
38 #ifdef HAVE_CONFIG_H | |
39 #include "config.h" | |
40 #endif | |
41 | |
42 #include <sys/types.h> | |
43 | |
44 #ifdef HAVE_UNISTD_H | |
45 #include <unistd.h> | |
46 #endif | |
47 #if HAVE_SYS_STAT_H | |
48 #include <sys/stat.h> | |
49 #endif | |
50 | |
51 #include "libiberty.h" | |
52 | |
53 #ifndef S_ISLNK | |
54 #ifdef S_IFLNK | |
55 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) | |
56 #else | |
57 #define S_ISLNK(m) 0 | |
58 #define lstat stat | |
59 #endif | |
60 #endif | |
61 | |
62 int | |
63 unlink_if_ordinary (const char *name) | |
64 { | |
65 struct stat st; | |
66 | |
67 if (lstat (name, &st) == 0 | |
68 && (S_ISREG (st.st_mode) || S_ISLNK (st.st_mode))) | |
69 return unlink (name); | |
70 | |
71 return 1; | |
72 } |