From 4dab5984b7a221ef4e0b871411f58f6f33116547 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 18 May 2010 10:42:28 -0400 Subject: [PATCH] mrafs logs don't clobber existing logs if a restart happens too quickly, we can wipe existing log files in mrafs log mode. cheat. assume we won't have too many sub-second starts. Change-Id: I86d652410d0f18609d305decff54f122e2b87f10 Reviewed-on: http://gerrit.openafs.org/1984 Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- src/util/serverLog.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/util/serverLog.c b/src/util/serverLog.c index 98e5eb052..8bc51afbd 100644 --- a/src/util/serverLog.c +++ b/src/util/serverLog.c @@ -279,6 +279,7 @@ OpenLog(const char *fileName) if (mrafsStyleLogs) { time_t t; + struct stat buf; FT_GetTimeOfDay(&Start, 0); t = Start.tv_sec; TimeFields = localtime(&t); @@ -286,11 +287,17 @@ OpenLog(const char *fileName) if (strncmp(fileName, (char *)&ourName, strlen(fileName))) strcpy((char *)&ourName, (char *)fileName); } + makefilename: afs_snprintf(FileName, MAXPATHLEN, "%s.%d%02d%02d%02d%02d%02d", ourName, TimeFields->tm_year + 1900, TimeFields->tm_mon + 1, TimeFields->tm_mday, TimeFields->tm_hour, TimeFields->tm_min, TimeFields->tm_sec); + if(lstat(FileName, &buf) == 0) { + /* avoid clobbering a log */ + TimeFields->tm_sec++; + goto makefilename; + } if (!isfifo) renamefile(fileName, FileName); /* don't check error code */ tempfd = open(fileName, O_WRONLY | O_TRUNC | O_CREAT | (isfifo?O_NONBLOCK:0), 0666); -- 2.39.5