diff options
| author | Mattias Andrée <maandree@operamail.com> | 2014-08-16 12:50:22 +0200 | 
|---|---|---|
| committer | Mattias Andrée <maandree@operamail.com> | 2014-08-16 12:50:22 +0200 | 
| commit | b6c791ace8395b8db6f9c126f95002fe5751584b (patch) | |
| tree | 483a61676f9f6d8dfd9811027b40fcee0acadfd0 | |
| parent | add copying and license (diff) | |
| download | timeprefix-b6c791ace8395b8db6f9c126f95002fe5751584b.tar.gz timeprefix-b6c791ace8395b8db6f9c126f95002fe5751584b.tar.bz2 timeprefix-b6c791ace8395b8db6f9c126f95002fe5751584b.tar.xz  | |
code + readme
Signed-off-by: Mattias Andrée <maandree@operamail.com>
| -rw-r--r-- | README | 7 | ||||
| -rw-r--r-- | src/timeprefix.c | 65 | 
2 files changed, 72 insertions, 0 deletions
@@ -0,0 +1,7 @@ +A small program to prefixes the current time a line +is written to its stdin. + +If you use this to generate log files, you can use +`sort --merge` to create on log file from multiple +log files. + diff --git a/src/timeprefix.c b/src/timeprefix.c new file mode 100644 index 0000000..165cb27 --- /dev/null +++ b/src/timeprefix.c @@ -0,0 +1,65 @@ +/** + * timeprefix – Prefix each line with the time it as written + *  + * Copyright © 2014  Mattias Andrée (maandree@member.fsf.org) + *  + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *  + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + *  + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#include <stdio.h> +#include <time.h> +#include <stddef.h> +#include <stdlib.h> + + +static struct tm* utctime; + + +static void printline(const char* line) +{ +  struct timespec boottime; +  time_t realtime; +   +  clock_gettime(CLOCK_BOOTTIME, &boottime); +  realtime = time(NULL); +  gmtime_r(&realtime, utctime); +   +  printf("[%010lu.%04lu %i-%02i-%02i %02i:%02i:%02i UTC] %s", +	 boottime.tv_sec, boottime.tv_nsec / 100000, +	 utctime->tm_year + 1900, utctime->tm_mon + 1, utctime->tm_mday, +	 utctime->tm_hour, utctime->tm_min, utctime->tm_sec, +	 line); +   +  fflush(stdout); +} + + +int main(int argc, char** argv) +{ +  size_t buf_size = 512; +  char* buf = NULL; +   +  utctime = malloc(sizeof(struct tm)); +   +  printline("--- Program started ---\n"); +   +  buf = malloc(buf_size * sizeof(char));; +  while (getline(&buf, &buf_size, stdin) != -1) +    printline(buf); +   +  printline("--- Program exited ---\n"); +   +  free(buf); +  return 0; +} +  | 
