diff options
author | Simon Rettberg | 2015-11-30 13:59:05 +0100 |
---|---|---|
committer | Simon Rettberg | 2015-11-30 13:59:05 +0100 |
commit | 9ffb0038ded686a177b06f268f08c9bcd48128b2 (patch) | |
tree | 8d50f7f92db37b2ce9a9e0933072f4203d587ac6 /src/server | |
parent | [FUSE] Mid-refactoring, does not compile (diff) | |
download | dnbd3-9ffb0038ded686a177b06f268f08c9bcd48128b2.tar.gz dnbd3-9ffb0038ded686a177b06f268f08c9bcd48128b2.tar.xz dnbd3-9ffb0038ded686a177b06f268f08c9bcd48128b2.zip |
[FUSE] Compiles again
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/log.c | 183 | ||||
-rw-r--r-- | src/server/log.h | 55 |
2 files changed, 0 insertions, 238 deletions
diff --git a/src/server/log.c b/src/server/log.c deleted file mode 100644 index 6d77dc5..0000000 --- a/src/server/log.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * This file is part of the Distributed Network Block Device 3 - * - * Copyright(c) 2011-2012 Simon Rettberg - * - * This file may be licensed under the terms of of the - * GNU General Public License Version 2 (the ``GPL''). - * - * Software distributed under the License is distributed - * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either - * express or implied. See the GPL for the specific language - * governing rights and limitations. - * - * You should have received a copy of the GPL along with this - * program. If not, go to http://www.gnu.org/licenses/gpl.html - * or write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "log.h" -#include <stdarg.h> -#include <pthread.h> -#include <time.h> -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <stdint.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <errno.h> - -#define LINE_LEN (800) - -static pthread_mutex_t logLock = PTHREAD_MUTEX_INITIALIZER; -static logmask_t maskFile = 31; -static logmask_t maskCon = 15; - -static char *logFile = NULL; -static int logFd = -1; - - -static int writeLevel(char *buffer, logmask_t level); - - -void log_setFileMask(logmask_t mask) -{ - maskFile = mask; -} - -void log_setConsoleMask(logmask_t mask) -{ - maskCon = mask; -} - -bool log_openLogFile(const char *path) -{ - pthread_mutex_lock( &logLock ); - if ( logFd >= 0 ) { - close( logFd ); - } - if ( path == NULL && logFile == NULL ) - goto unlock; - if ( path != NULL ) { - free( logFile ); - logFile = strdup( path ); - } - logFd = open( logFile, O_WRONLY | O_CREAT | O_APPEND, 0644 ); - if ( logFd < 0 ) - goto unlock; -unlock: ; - pthread_mutex_unlock( &logLock ); - return logFd >= 0; -} - -void logadd(const logmask_t mask, const char *fmt, ...) -{ - if ( ( (maskFile | maskCon) & mask ) == 0 ) - return; - va_list ap; - int ret; - time_t rawtime; - struct tm *timeinfo; - char buffer[LINE_LEN]; - - time( &rawtime ); - timeinfo = localtime( &rawtime ); - size_t offset = strftime( buffer, LINE_LEN, "[%d.%m. %H:%M:%S] ", timeinfo ); - offset += writeLevel( buffer + offset, mask ); - va_start( ap, fmt ); - ret = vsnprintf( buffer + offset, LINE_LEN - offset, fmt, ap ); - va_end( ap ); - if ( ret < 0 ) return; - ret += offset; - if ( ret + 1 >= LINE_LEN ) { - buffer[LINE_LEN-2] = '\0'; - ret = LINE_LEN - 2; - } - if ( ret > 0 && buffer[ret-1] != '\n' ) { - buffer[ret++] = '\n'; - buffer[ret] = '\0'; - } - if ( maskFile & mask ) { - pthread_mutex_lock( &logLock ); - if ( logFd >= 0 ) { - int done = 0; - while (done < ret ) { - const int wr = write( logFd, buffer + done, ret - done ); - if ( wr < 0 ) { - printf( "Logging to file failed! (errno=%d)\n", errno ); - break; - } - done += wr; - } - } - pthread_mutex_unlock( &logLock ); - } - if ( maskCon & mask ) { - fputs( buffer, stdout ); - fflush( stdout ); - } -} - -bool log_fetch(char *buffer, int size) -{ - if ( logFile == NULL || size <= 1 ) - return false; - int fd = open( logFile, O_RDONLY ); - if ( fd < 0 ) - return false; - off_t off = lseek( fd, 0, SEEK_END ); - if ( off == (off_t)-1 ) { - close( fd ); - return false; - } - if ( (off_t)size <= off ) { - off -= size; - } else { - off = 0; - } - ssize_t ret = pread( fd, buffer, size - 1, off ); - close( fd ); - if ( ret < 0 ) - return false; - buffer[ret] = '\0'; - return true; -} - -static int writeLevel(char *buffer, logmask_t level) -{ - const char *word; - char *dest = buffer; - switch ( level ) { - case LOG_ERROR: - word = "ERROR"; - break; - case LOG_WARNING: - word = "WARNING"; - break; - case LOG_MINOR: - word = "Warning"; - break; - case LOG_INFO: - word = "Info"; - break; - case LOG_DEBUG1: - word = "DEBUG1"; - break; - case LOG_DEBUG2: - word = "DEBUG2"; - break; - default: - word = "!?!?!?"; - break; - } - while ( ( *dest++ = *word++ ) ); - *--dest = ':'; - *++dest = ' '; - return (int)( dest - buffer ) + 1; -} - diff --git a/src/server/log.h b/src/server/log.h deleted file mode 100644 index f273cab..0000000 --- a/src/server/log.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is part of the Distributed Network Block Device 3 - * - * Copyright(c) 2011-2012 Simon Rettberg - * - * This file may be licensed under the terms of of the - * GNU General Public License Version 2 (the ``GPL''). - * - * Software distributed under the License is distributed - * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either - * express or implied. See the GPL for the specific language - * governing rights and limitations. - * - * You should have received a copy of the GPL along with this - * program. If not, go to http://www.gnu.org/licenses/gpl.html - * or write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef LOG_H_ -#define LOG_H_ - -#include <stdbool.h> - -typedef unsigned int logmask_t; -#define LOG_ERROR ((logmask_t)1) // Fatal error, server will terminate -#define LOG_WARNING ((logmask_t)2) // Major issue, something is broken but keep running -#define LOG_MINOR ((logmask_t)4) // Minor issue, more of a hickup than serious problem -#define LOG_INFO ((logmask_t)8) // Informational message -#define LOG_DEBUG1 ((logmask_t)16) // Debug information, use this for non-spammy stuff -#define LOG_DEBUG2 ((logmask_t)32) // Use this for debug messages that will show up a lot - -void log_setFileMask(logmask_t mask); - -void log_setConsoleMask(logmask_t mask); - -/** - * Open or reopen the log file. If path is NULL and the - * function was called with a path before, the same path - * will be used again. - */ -bool log_openLogFile(const char *path); - -/** - * Add a line to the log - */ -void logadd(const logmask_t mask, const char *text, ...); - -/** - * Return last size bytes of log. - */ -bool log_fetch(char *buffer, int size); - -#endif /* LOG_H_ */ |