]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - gnu/libexec/uucp/libunix/sync.c
unfinished sblive driver, playback/mixer only for now - not enabled in
[FreeBSD/FreeBSD.git] / gnu / libexec / uucp / libunix / sync.c
1 /* sync.c
2    Sync a file to disk, if FSYNC_ON_CLOSE is set.  */
3
4 #include "uucp.h"
5
6 #include "uudefs.h"
7 #include "sysdep.h"
8 #include "system.h"
9
10 #include <errno.h>
11
12 boolean
13 fsysdep_sync (e, zmsg)
14      openfile_t e;
15      const char *zmsg;
16 {
17   int o;
18
19 #if USE_STDIO
20   if (fflush (e) == EOF)
21     {
22       ulog (LOG_ERROR, "%s: fflush: %s", zmsg, strerror (errno));
23       return FALSE;
24     }
25 #endif
26
27 #if USE_STDIO
28   o = fileno (e);
29 #else
30   o = e;
31 #endif
32
33 #if FSYNC_ON_CLOSE
34   if (fsync (o) < 0)
35     {
36       ulog (LOG_ERROR, "%s: fsync: %s", zmsg, strerror (errno));
37       return FALSE;
38     }
39 #endif
40
41   return TRUE;
42 }