summaryrefslogtreecommitdiff
path: root/degesch.c
diff options
context:
space:
mode:
Diffstat (limited to 'degesch.c')
-rw-r--r--degesch.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/degesch.c b/degesch.c
index fcff422..4befc02 100644
--- a/degesch.c
+++ b/degesch.c
@@ -12803,6 +12803,21 @@ show_logo (struct app_context *ctx)
log_global_indent (ctx, "#m", g_logo[i]);
}
+static void
+format_input_and_die (struct app_context *ctx)
+{
+ char buf[513];
+ while (fgets (buf, sizeof buf, stdin))
+ {
+ struct formatter f;
+ formatter_init (&f, ctx, NULL);
+ formatter_add (&f, "#m", buf);
+ formatter_flush (&f, stdout, false);
+ formatter_free (&f);
+ }
+ exit (EXIT_SUCCESS);
+}
+
int
main (int argc, char *argv[])
{
@@ -12814,11 +12829,14 @@ main (int argc, char *argv[])
{
{ 'h', "help", NULL, 0, "display this help and exit" },
{ 'V', "version", NULL, 0, "output version information and exit" },
+ // This is mostly intended for previewing formatted MOTD files
+ { 'f', "format", NULL, OPT_LONG_ONLY, "format IRC text from stdin" },
{ 0, NULL, NULL, 0, NULL }
};
struct opt_handler oh;
opt_handler_init (&oh, argc, argv, opts, NULL, "Experimental IRC client.");
+ bool format_mode = false;
int c;
while ((c = opt_handler_get (&oh)) != -1)
@@ -12830,6 +12848,9 @@ main (int argc, char *argv[])
case 'V':
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
exit (EXIT_SUCCESS);
+ case 'f':
+ format_mode = true;
+ break;
default:
print_error ("wrong options");
opt_handler_usage (&oh, stderr);
@@ -12855,6 +12876,7 @@ main (int argc, char *argv[])
// The following part is a bit brittle because of interdependencies
init_colors (&ctx);
+ if (format_mode) format_input_and_die (&ctx);
init_global_buffer (&ctx);
show_logo (&ctx);
setup_signal_handlers ();