summaryrefslogtreecommitdiff
path: root/mkhelp.pl
diff options
context:
space:
mode:
Diffstat (limited to 'mkhelp.pl')
-rwxr-xr-xmkhelp.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/mkhelp.pl b/mkhelp.pl
new file mode 100755
index 000000000000..a826e208dca9
--- /dev/null
+++ b/mkhelp.pl
@@ -0,0 +1,44 @@
+#! /usr/bin/perl
+use strict;
+
+# Silly little program to generate the help.c source file
+# from the less.hlp text file.
+# The output of this script is a C program defining a char array
+# whose content is the input to this script.
+
+{
+ my ($sec,$min,$hour,$mday,$mon,$year) = gmtime();
+ printf "/* This file was generated by mkhelp.pl from less.hlp at %d:%02d on %d/%d/%d */\n",
+ $hour, $min, $year+1900, $mon+1, $mday;
+ print "#include \"less.h\"\n";
+ print "constant char helpdata[] = {\n";
+ my $ch = 0;
+ my $prevch;
+ for (;;) {
+ $prevch = $ch;
+ $ch = getc();
+ last if not defined $ch;
+ if ($ch eq "'") {
+ print "'\\'',";
+ } elsif ($ch eq "\\") {
+ print "'\\\\',";
+ } elsif ($ch eq "\b") {
+ print "'\\b',";
+ } elsif ($ch eq "\t") {
+ print "'\\t',";
+ } elsif ($ch eq "\n") {
+ print "'\\n',\n" if $prevch ne "\r";
+ } elsif ($ch eq "\r") {
+ print "'\\n',\n" if $prevch ne "\n";
+ } else {
+ if (ord($ch) >= ord(' ') && ord($ch) < 0x7f) {
+ print "'$ch',";
+ } else {
+ printf "0x%02x,", ord($ch);
+ }
+ }
+ }
+ # Add an extra null char to avoid having a trailing comma.
+ print " 0 };\n";
+ print "constant int size_helpdata = sizeof(helpdata) - 1;\n";
+}