/[path-sandbox]/trunk/libsbutil/sb_open.c
Gentoo

Contents of /trunk/libsbutil/sb_open.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 340 - (show annotations) (download) (as text)
Thu Jul 13 15:41:48 2006 UTC (7 years, 9 months ago) by azarah
File MIME type: text/x-csrc
File size: 1531 byte(s)
Split out util functions.

1 /*
2 * sb_open.c
3 *
4 * IO functions.
5 *
6 * Copyright 1999-2006 Gentoo Foundation
7 *
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation version 2 of the License.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 * $Header$
23 */
24
25
26 #include <errno.h>
27 #include <stdio.h>
28 #include <sys/stat.h>
29 #include <unistd.h>
30 #include <fcntl.h>
31
32 #include "sbutil.h"
33
34
35 static int (*sbio_open)(const char *, int, mode_t) = (void *)open;
36
37
38 void sb_set_open(void *new_open)
39 {
40 if (!check_ptr(new_open))
41 return;
42
43 sbio_open = new_open;
44 }
45
46 /* General purpose function to _reliably_ open a file
47 *
48 * Returns the file descriptor or -1 on error (and errno set)
49 */
50
51 int sb_open(const char *path, int flags, mode_t mode)
52 {
53 int fd;
54
55 do {
56 fd = sbio_open(path, flags, mode);
57 } while ((-1 == fd) && (EINTR == errno));
58
59 if ((-1 != fd) && (0 != errno))
60 /* Do not trigger debugging */
61 errno = 0;
62
63 if (-1 == fd)
64 DBG_MSG("Failed to open file '%s'!\n", path);
65
66 return fd;
67 }

  ViewVC Help
Powered by ViewVC 1.1.20