diff --git a/src/common.h b/src/common.h index 7b27eaa..8757c35 100644 --- a/src/common.h +++ b/src/common.h @@ -141,6 +141,14 @@ void ATTR_PRINTFLIKE(1, 0) vsys_error( const char *, va_list va ); void ATTR_PRINTFLIKE(1, 2) sys_error( const char *, ... ); void flushn( void ); +#if !defined(_POSIX_SYNCHRONIZED_IO) || _POSIX_SYNCHRONIZED_IO <= 0 +# define fdatasync fsync +#endif + +void ATTR_PRINTFLIKE(2, 0) vFprintf( FILE *f, const char *msg, va_list va ); +void ATTR_PRINTFLIKE(2, 3) Fprintf( FILE *f, const char *msg, ... ); +void Fclose( FILE *f, int safe ); + typedef struct string_list { struct string_list *next; char string[1]; diff --git a/src/sync.c b/src/sync.c index 767f502..382804f 100644 --- a/src/sync.c +++ b/src/sync.c @@ -14,10 +14,6 @@ #include #include -#if !defined(_POSIX_SYNCHRONIZED_IO) || _POSIX_SYNCHRONIZED_IO <= 0 -# define fdatasync fsync -#endif - #define JOURNAL_VERSION "4" channel_conf_t global_conf; @@ -32,37 +28,6 @@ int trash_total[2], trash_done[2]; const char *str_fn[] = { "far side", "near side" }, *str_hl[] = { "push", "pull" }; -static void -Fclose( FILE *f, int safe ) -{ - if ((safe && (fflush( f ) || (UseFSync && fdatasync( fileno( f ) )))) || fclose( f ) == EOF) { - sys_error( "Error: cannot close file" ); - exit( 1 ); - } -} - -static void ATTR_PRINTFLIKE(2, 0) -vFprintf( FILE *f, const char *msg, va_list va ) -{ - int r; - - r = vfprintf( f, msg, va ); - if (r < 0) { - sys_error( "Error: cannot write file" ); - exit( 1 ); - } -} - -static void ATTR_PRINTFLIKE(2, 3) -Fprintf( FILE *f, const char *msg, ... ) -{ - va_list va; - - va_start( va, msg ); - vFprintf( f, msg, va ); - va_end( va ); -} - /* Keep the mailbox driver flag definitions in sync: */ /* grep for MAILBOX_DRIVER_FLAG */ diff --git a/src/util.c b/src/util.c index d5edd95..19b2bf5 100644 --- a/src/util.c +++ b/src/util.c @@ -173,6 +173,37 @@ sys_error( const char *msg, ... ) va_end( va ); } +void +vFprintf( FILE *f, const char *msg, va_list va ) +{ + int r; + + r = vfprintf( f, msg, va ); + if (r < 0) { + sys_error( "Error: cannot write file" ); + exit( 1 ); + } +} + +void +Fprintf( FILE *f, const char *msg, ... ) +{ + va_list va; + + va_start( va, msg ); + vFprintf( f, msg, va ); + va_end( va ); +} + +void +Fclose( FILE *f, int safe ) +{ + if ((safe && (fflush( f ) || (UseFSync && fdatasync( fileno( f ) )))) || fclose( f ) == EOF) { + sys_error( "Error: cannot close file" ); + exit( 1 ); + } +} + void add_string_list_n( string_list_t **list, const char *str, uint len ) {