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

Contents of /trunk/libsbutil/sb_write.c

Parent Directory Parent Directory | Revision Log Revision Log


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

1 /*
2 * sb_write.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 /* General purpose function to _reliably_ write to a file
36 *
37 * If returned value is less than count, there was a fatal
38 * error and value tells how many bytes were actually written
39 */
40
41 size_t sb_write(int fd, const void *buf, size_t count)
42 {
43 ssize_t n;
44 size_t accum = 0;
45
46 do {
47 n = write(fd, buf + accum, count - accum);
48 if (n < 0) {
49 if (EINTR == errno) {
50 /* Reset errno to not trigger DBG_MSG */
51 errno = 0;
52 continue;
53 }
54
55 DBG_MSG("Failed to write to fd=%i!\n", fd);
56 break;
57 }
58
59 accum += n;
60 } while (accum < count);
61
62 return accum;
63 }

  ViewVC Help
Powered by ViewVC 1.1.20