diff options
author | Jeremy Allison <jra@samba.org> | 2000-04-15 00:31:56 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-04-15 00:31:56 +0000 |
commit | ce5e230952c18b2308d0e41fff39f0bfdf2cc32b (patch) | |
tree | 85cef5ef4a02825f4cd7c3b568775605d88fe32a /source3/lib | |
parent | 067b341a01319577f59e4c742f7bf11b42381ecc (diff) | |
download | samba-ce5e230952c18b2308d0e41fff39f0bfdf2cc32b.tar.gz samba-ce5e230952c18b2308d0e41fff39f0bfdf2cc32b.tar.bz2 samba-ce5e230952c18b2308d0e41fff39f0bfdf2cc32b.zip |
Log file check patch from Mattias Gronlund <Mattias.Gronlund@sa.erisoft.se>.
Modified to do checks in timeout processing not in main loop. This (IMHO)
is the correct place as (a) we are already root, and (b) it is guarenteed
to be called every 200 smb requests.
Jeremy.
(This used to be commit c3794fd29fdc4e5a0dbd725cdc24fe210934caf2)
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/debug.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/source3/lib/debug.c b/source3/lib/debug.c index c88f4e1a41..ed27b93cfd 100644 --- a/source3/lib/debug.c +++ b/source3/lib/debug.c @@ -239,26 +239,52 @@ void reopen_logs( void ) * ************************************************************************** ** */ void force_check_log_size( void ) - { +{ debug_count = 100; - } /* force_check_log_size */ +} + +/*************************************************************************** + Check to see if there is any need to check if the logfile has grown too big. +**************************************************************************/ + +BOOL need_to_check_log_size( void ) +{ + int maxlog; + + if( debug_count++ < 100 ) + return( False ); + + maxlog = lp_max_log_size() * 1024; + if( !dbf || maxlog <= 0 ) { + debug_count = 0; + return(False); + } + return( True ); +} /* ************************************************************************** ** * Check to see if the log has grown to be too big. * ************************************************************************** ** */ -static void check_log_size( void ) + +void check_log_size( void ) { int maxlog; SMB_STRUCT_STAT st; - if( debug_count++ < 100 || geteuid() != 0 ) + /* + * We need to be root to check/change log-file, skip this and let the main + * loop check do a new check as root. + */ + + if( geteuid() != 0 ) return; - maxlog = lp_max_log_size() * 1024; - if( !dbf || maxlog <= 0 ) + if( !need_to_check_log_size() ) return; + maxlog = lp_max_log_size() * 1024; + if( sys_fstat( fileno( dbf ), &st ) == 0 && st.st_size > maxlog ) { (void)fclose( dbf ); |