/* Written by Jarett Stevens Program to convert log files beginning with an epoch time-stamp (space delimited) to begin with localtime (YYYY-MM-DD HH:MM:SS) Compiles equally well under Unix with gcc or Windows (MinGW) Usage: fix-time input-file.log > output-file.log */ #include #include #include int main(int argc, char **argv) { long epoch_time ; int buffct ; FILE *input_file ; char line_buffer[2048] ; char epoch_buff[32] ; char out_time_buff[32] ; char c ; epoch_time = buffct = c = 0 ; input_file = NULL ; if ( argc != 2 ) return 1 ; if ( (input_file = fopen(argv[1], "r")) != NULL) { while ( (fgets(line_buffer, 2048, input_file)) != NULL ) { buffct = 0 ; for ( buffct = 0 ; buffct < 32 ; buffct++ ) { if ( (c = line_buffer[buffct]) == ' ' ) { epoch_buff[buffct] = 0 ; break ; } else { epoch_buff[buffct] = c ; } } epoch_time = atoi(epoch_buff) ; (void) strftime(out_time_buff, 32, "%Y-%m-%d %H:%M:%S", localtime(&epoch_time)) ; printf("%s%s", out_time_buff, (line_buffer + buffct)) ; } fclose(input_file) ; } else { perror(argv[1]) ; return 1; } return 0 ; }