+unsigned get_log_fd(char *fname, unsigned cur_fd) {
+ struct Time now;
+ unsigned cur_uptime;
+ int ret_fd;
+ gettime(&now);
+ cur_uptime = getuptime(&now);
+ if ((cur_uptime - prev_uptime) > (1000 * epoch_length)) {
+ char nextname[MAX_PATH_LEN];
+ int write_fd;
+ prev_uptime = cur_uptime;
+ cur_epoch = (cur_epoch + 1) % log_epochs;
+ close(cur_fd);
+ snprintf(nextname,MAX_PATH_LEN,"%s.%d",fname,cur_epoch);
+ if ((write_fd = open(nextname, O_WRONLY|O_CREAT)) < 0) {
+ fprintf(stderr, "open(): %s (%s)\n", nextname, strerror(errno));
+ exit(1);
+ }
+ ret_fd = write_fd;
+ }
+ else
+ ret_fd = cur_fd;
+ return(cur_fd);
+}
+