Mercurial > hg > mlmmj
changeset 409:f5fa790cb7ef
Remove call to myunlock, since it's closed right after
author | mmj |
---|---|
date | Fri, 14 Jan 2005 06:31:15 +1100 |
parents | 9460abf5d0e5 |
children | ec14099453d6 |
files | src/incindexfile.c src/log_oper.c |
diffstat | 2 files changed, 20 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/incindexfile.c Fri Jan 14 06:29:39 2005 +1100 +++ b/src/incindexfile.c Fri Jan 14 06:31:15 2005 +1100 @@ -79,8 +79,7 @@ lseek(fd, 0, SEEK_SET); writen(fd, intbuf, strlen(intbuf)); - myunlock(fd); - close(fd); + close(fd); /* Lock is also released */ myfree(indexfilename); return index;
--- a/src/log_oper.c Fri Jan 14 06:29:39 2005 +1100 +++ b/src/log_oper.c Fri Jan 14 06:31:15 2005 +1100 @@ -38,33 +38,49 @@ #include "wrappers.h" #include "memory.h" -int log_oper(const char *logfilename, const char *str) +int log_oper(const char *prefix, const char *basename, const char *str) { int fd; - char ct[26], *logstr; + char ct[26], *logstr, *logfilename, *tmp; struct stat st; time_t t; + logfilename = concatstr(2, prefix, basename); if(lstat(logfilename, &st) < 0 && errno != ENOENT) { log_error(LOG_ARGS, "Could not stat logfile %s", logfilename); + myfree(logfilename); return -1; } else if((st.st_mode & S_IFMT) == S_IFLNK) { log_error(LOG_ARGS, "%s is a symbolic link, not opening", logfilename); + myfree(logfilename); return -1; } + if(st.st_size > (size_t)524288) { + tmp = concatstr(2, logfilename, ".rotated"); + if(rename(logfilename, tmp) < 0) { + log_error(LOG_ARGS, "Could not rename %s,%s", + logfilename, tmp); + myfree(tmp); + } + } + fd = open(logfilename, O_RDWR|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR); if(fd < 0) { log_error(LOG_ARGS, "Could not open %s", logfilename); + myfree(logfilename); return -1; } if((time(&t) == (time_t)-1) || (ctime_r(&t, ct) == NULL)) strncpy(ct, "Unknown time", sizeof(ct)); + else + ct[24] = '\0'; if(myexcllock(fd) < 0) { log_error(LOG_ARGS, "Could not lock %s", logfilename); + myfree(logfilename); return -1; } @@ -72,10 +88,8 @@ if(writen(fd, logstr, strlen(logstr)) < 0) log_error(LOG_ARGS, "Could not write to %s", logfilename); - if(myunlock(fd) < 0) - log_error(LOG_ARGS, "Could not unlock %s", logfilename); - close(fd); + myfree(logfilename); myfree(logstr); return 0;