summaryrefslogtreecommitdiff
path: root/sfeed_plain.c
diff options
context:
space:
mode:
authorHiltjo Posthuma <hiltjo@codemadness.org>2012-08-03 12:03:17 +0200
committerHiltjo Posthuma <hiltjo@codemadness.org>2012-08-03 12:03:17 +0200
commitdb5ffcaa8c133d249aafa4a64f3d827dd513d995 (patch)
treedd3ece08c9f65ebcab6cd7406d87b6b932e19900 /sfeed_plain.c
New initial repo
Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
Diffstat (limited to 'sfeed_plain.c')
-rw-r--r--sfeed_plain.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/sfeed_plain.c b/sfeed_plain.c
new file mode 100644
index 0000000..d4045c9
--- /dev/null
+++ b/sfeed_plain.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <time.h>
+#include "common.c"
+
+void
+printutf8padded(const char *s, size_t len) {
+ unsigned int n = 0, i = 0;
+
+ for(; s[i] && n < len; i++) {
+ if((s[i] & 0xc0) != 0x80) /* start of character */
+ n++;
+ putchar(s[i]);
+ }
+ for(; n < len; n++)
+ putchar(' ');
+}
+
+int
+main(void) {
+ char *line = NULL, *fields[FieldLast];
+ time_t parsedtime, comparetime;
+ size_t size = 0;
+
+ tzset();
+ comparetime = time(NULL) - (3600 * 24); /* 1 day is old news */
+ while(parseline(&line, &size, fields, FieldLast, stdin, FieldSeparator) > 0) {
+ parsedtime = (time_t)strtol(fields[FieldUnixTimestamp], NULL, 10);
+ printf(" %c ", (parsedtime >= comparetime) ? 'N' : ' ');
+ if(fields[FieldFeedName][0] != '\0')
+ printf("%-15.15s ", fields[FieldFeedName]);
+ printtime(parsedtime);
+ fputs(" ", stdout);
+ printutf8padded(fields[FieldTitle], 70);
+ fputs(" ", stdout);
+ printlink(fields[FieldLink], fields[FieldFeedUrl]);
+ putchar('\n');
+ }
+ free(line);
+ return EXIT_SUCCESS;
+}