Introduction
Introduction Statistics Contact Development Disclaimer Help
add reading from file feature back, improve man page - smu - smu - simple marku…
git clone git://git.codemadness.org/smu
Log
Files
Refs
README
LICENSE
---
commit 9c68585ed395bc9db7339433746ec0dd8298cabc
parent 5573f301eb9eb97b251ff499ddca138417dcf43c
Author: Hiltjo Posthuma <[email protected]>
Date: Thu, 13 May 2021 14:39:48 +0200
add reading from file feature back, improve man page
Diffstat:
M smu.1 | 16 ++++++++++------
M smu.c | 31 ++++++++++++++++++++++-------…
2 files changed, 32 insertions(+), 15 deletions(-)
---
diff --git a/smu.1 b/smu.1
@@ -1,4 +1,4 @@
-.Dd May 11, 2021
+.Dd May 13, 2021
.Dt SMU 1
.Os
.Sh NAME
@@ -10,19 +10,23 @@
.Op Fl l
.Op Fl n
.Op Fl v
+.Op Ar file
.Sh DESCRIPTION
.Nm
-is a simple interpreter for a simplified markdown dialect.
+is a simple interpreter for a simplified Markdown dialect.
+When a
+.Ar file
+is specified it will read from the file, otherwise it reads from stdin.
The options are as follows:
.Bl -tag -width Ds
.It Fl h
-prints usage information to stderr, then exits.
+Prints usage information to stderr, then exits.
.It Fl l
-set loading="lazy" hint attribute for images if it has a width and a height.
+Set loading="lazy" hint attribute for images if it has a width and a height.
.It Fl n
-escapes all HTML tags.
+Escapes all HTML tags.
.It Fl v
-prints version information to stderr, then exits.
+Prints version information to stderr, then exits.
.El
.Sh EXIT STATUS
.Ex -std
diff --git a/smu.c b/smu.c
@@ -1,4 +1,5 @@
#include <ctype.h>
+#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -702,33 +703,43 @@ process(const char *begin, const char *end, int newblock)
void
usage(char **argv)
{
- eprint("usage: %s [-l] [-n]\n", argv[0]);
+ eprint("usage: %s [-l] [-n] [file]\n", argv[0]);
}
int
main(int argc, char *argv[])
{
+ FILE *source = stdin;
char *buffer = NULL;
int s, i;
unsigned long len, bsize;
- if (pledge("stdio", NULL) == -1)
- eprint("pledge");
-
for (i = 1; i < argc; i++) {
- if (!strcmp("-v", argv[i]))
+ if (!strcmp("-v", argv[i])) {
eprint("smu v%s\n", VERSION);
- else if (!strcmp("-n", argv[i]))
+ } else if (!strcmp("-n", argv[i])) {
nohtml = 1;
- else if (!strcmp("-l", argv[i]))
+ } else if (!strcmp("-l", argv[i])) {
lazyimg = 1;
- else
+ } else if (argv[i][0] != '-') {
+ break; /* file specified */
+ } else if (!strcmp("--", argv[i])) {
+ i++;
+ break;
+ } else {
usage(argv);
+ }
}
+ if (i < argc && !(source = fopen(argv[i], "r")))
+ eprint("fopen: %s: %s\n", argv[i], strerror(errno));
+
+ if (pledge("stdio", NULL) == -1)
+ eprint("pledge");
+
bsize = 2 * BUFSIZ;
buffer = ereallocz(buffer, bsize);
len = 0;
- while ((s = fread(buffer + len, 1, BUFSIZ, stdin))) {
+ while ((s = fread(buffer + len, 1, BUFSIZ, source))) {
len += s;
if (BUFSIZ + len + 1 > bsize) {
bsize += BUFSIZ;
@@ -739,6 +750,8 @@ main(int argc, char *argv[])
buffer[len] = '\0';
process(buffer, buffer + len, 1);
free(buffer);
+ if (source != stdin)
+ fclose(source);
return 0;
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.