aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-08-16 12:50:22 +0200
committerMattias Andrée <maandree@operamail.com>2014-08-16 12:50:22 +0200
commitb6c791ace8395b8db6f9c126f95002fe5751584b (patch)
tree483a61676f9f6d8dfd9811027b40fcee0acadfd0
parentadd copying and license (diff)
downloadtimeprefix-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--README7
-rw-r--r--src/timeprefix.c65
2 files changed, 72 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..617b92b
--- /dev/null
+++ b/README
@@ -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;
+}
+