1*e4a6e799Ssimonb#! /usr/bin/env perl 2*e4a6e799Ssimonbuse strict; 3*e4a6e799Ssimonb 4*e4a6e799Ssimonb# Silly little program to generate the help.c source file 5*e4a6e799Ssimonb# from the less.hlp text file. 6*e4a6e799Ssimonb# The output of this script is a C program defining a char array 7*e4a6e799Ssimonb# whose content is the input to this script. 8*e4a6e799Ssimonb 9*e4a6e799Ssimonb{ 10*e4a6e799Ssimonb my ($sec,$min,$hour,$mday,$mon,$year) = gmtime(); 11*e4a6e799Ssimonb printf "/* This file was generated by mkhelp.pl from less.hlp at %d:%02d on %d/%d/%d */\n", 12*e4a6e799Ssimonb $hour, $min, $year+1900, $mon+1, $mday; 13*e4a6e799Ssimonb print "#include \"less.h\"\n"; 14*e4a6e799Ssimonb print "constant char helpdata[] = {\n"; 15*e4a6e799Ssimonb my $ch = 0; 16*e4a6e799Ssimonb my $prevch; 17*e4a6e799Ssimonb for (;;) { 18*e4a6e799Ssimonb $prevch = $ch; 19*e4a6e799Ssimonb $ch = getc(); 20*e4a6e799Ssimonb last if not defined $ch; 21*e4a6e799Ssimonb if ($ch eq "'") { 22*e4a6e799Ssimonb print "'\\'',"; 23*e4a6e799Ssimonb } elsif ($ch eq "\\") { 24*e4a6e799Ssimonb print "'\\\\',"; 25*e4a6e799Ssimonb } elsif ($ch eq "\b") { 26*e4a6e799Ssimonb print "'\\b',"; 27*e4a6e799Ssimonb } elsif ($ch eq "\t") { 28*e4a6e799Ssimonb print "'\\t',"; 29*e4a6e799Ssimonb } elsif ($ch eq "\n") { 30*e4a6e799Ssimonb print "'\\n',\n" if $prevch ne "\r"; 31*e4a6e799Ssimonb } elsif ($ch eq "\r") { 32*e4a6e799Ssimonb print "'\\n',\n" if $prevch ne "\n"; 33*e4a6e799Ssimonb } else { 34*e4a6e799Ssimonb if (ord($ch) >= ord(' ') && ord($ch) < 0x7f) { 35*e4a6e799Ssimonb print "'$ch',"; 36*e4a6e799Ssimonb } else { 37*e4a6e799Ssimonb printf "0x%02x,", ord($ch); 38*e4a6e799Ssimonb } 39*e4a6e799Ssimonb } 40*e4a6e799Ssimonb } 41*e4a6e799Ssimonb # Add an extra null char to avoid having a trailing comma. 42*e4a6e799Ssimonb print " 0 };\n"; 43*e4a6e799Ssimonb print "constant int size_helpdata = sizeof(helpdata) - 1;\n"; 44*e4a6e799Ssimonb} 45