projects
/
yaz-moved-to-github.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
daa259b
)
Fixed bug #779: Rotation of apdu.log fails.
author
Adam Dickmeiss
<adam@indexdata.dk>
Mon, 1 Jan 2007 22:39:08 +0000
(22:39 +0000)
committer
Adam Dickmeiss
<adam@indexdata.dk>
Mon, 1 Jan 2007 22:39:08 +0000
(22:39 +0000)
src/log.c
patch
|
blob
|
history
diff --git
a/src/log.c
b/src/log.c
index
e7ec51f
..
956e321
100644
(file)
--- a/
src/log.c
+++ b/
src/log.c
@@
-2,7
+2,7
@@
* Copyright (C) 1995-2006, Index Data ApS
* See the file LICENSE for details.
*
* Copyright (C) 1995-2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: log.c,v 1.43 2006-11-27 14:09:32 adam Exp $
+ * $Id: log.c,v 1.44 2007-01-01 22:39:08 adam Exp $
*/
/**
*/
/**
@@
-57,7
+57,7
@@
char *strerror(int n)
static int l_level = YLOG_DEFAULT_LEVEL;
static int l_level = YLOG_DEFAULT_LEVEL;
-enum l_file_type { use_stderr, use_none, use_file };
+enum l_file_type { use_stderr, use_none, use_file };
static enum l_file_type yaz_file_type = use_stderr;
static FILE *yaz_global_log_file = NULL;
static enum l_file_type yaz_file_type = use_stderr;
static FILE *yaz_global_log_file = NULL;
@@
-176,10
+176,10
@@
void yaz_log_init_file(const char *fname)
static void rotate_log(const char *cur_fname)
{
int i;
static void rotate_log(const char *cur_fname)
{
int i;
+
#ifdef WIN32
/* windows can't rename a file if it is open */
#ifdef WIN32
/* windows can't rename a file if it is open */
- fclose(yaz_global_log_file);
- yaz_global_log_file = 0;
+ yaz_log_close();
#endif
for (i = 0; i<9; i++)
{
#endif
for (i = 0; i<9; i++)
{
@@
-301,6
+301,9
@@
static void yaz_log_open_check(struct tm *tm, int force, const char *filemode)
char new_filename[512];
static char cur_filename[512] = "";
char new_filename[512];
static char cur_filename[512] = "";
+ if (yaz_file_type != use_file)
+ return;
+
if (l_fname && *l_fname)
{
strftime(new_filename, sizeof(new_filename)-1, l_fname, tm);
if (l_fname && *l_fname)
{
strftime(new_filename, sizeof(new_filename)-1, l_fname, tm);
@@
-311,7
+314,7
@@
static void yaz_log_open_check(struct tm *tm, int force, const char *filemode)
}
}
}
}
- if (l_max_size > 0 && yaz_global_log_file && yaz_file_type == use_file)
+ if (l_max_size > 0 && yaz_global_log_file)
{
long flen = ftell(yaz_global_log_file);
if (flen > l_max_size)
{
long flen = ftell(yaz_global_log_file);
if (flen > l_max_size)
@@
-320,12
+323,25
@@
static void yaz_log_open_check(struct tm *tm, int force, const char *filemode)
force = 1;
}
}
force = 1;
}
}
- if (force && yaz_file_type == use_file && *cur_filename)
+ if (force && *cur_filename)
{
{
+ FILE *new_file;
+#ifdef WIN32
yaz_log_close();
yaz_log_close();
- yaz_global_log_file = fopen(cur_filename, filemode);
- if (l_level & YLOG_FLUSH)
- setvbuf(yaz_global_log_file, 0, _IONBF, 0);
+#endif
+ new_file = fopen(cur_filename, filemode);
+ if (new_file)
+ {
+ yaz_log_close();
+ yaz_global_log_file = new_file;
+ if (l_level & YLOG_FLUSH)
+ setvbuf(yaz_global_log_file, 0, _IONBF, 0);
+ }
+ else
+ {
+ /* disable log rotate */
+ l_max_size = 0;
+ }
}
}
}
}