xref: /netbsd-src/external/bsd/less/dist/mkhelp.py (revision e4a6e799a67c2028562d75b4e61407b22434aa36)
1*e4a6e799Ssimonb#!/usr/bin/env python
2*e4a6e799Ssimonb
3*e4a6e799Ssimonbimport time
4*e4a6e799Ssimonbimport sys
5*e4a6e799Ssimonb
6*e4a6e799Ssimonbtime = time.gmtime()
7*e4a6e799Ssimonbprint("/* This file was generated by mkhelp.py from less.hlp at "\
8*e4a6e799Ssimonb    "%d:%02d GMT on %d/%d/%d */\n" %
9*e4a6e799Ssimonb    (time.tm_hour, time.tm_min, time.tm_year, time.tm_mon, time.tm_mday))
10*e4a6e799Ssimonbprint("#include \"less.h\"")
11*e4a6e799Ssimonbprint("constant char helpdata[] = {")
12*e4a6e799Ssimonbch = 0
13*e4a6e799Ssimonbwhile True:
14*e4a6e799Ssimonb    prevch = ch
15*e4a6e799Ssimonb    ch = sys.stdin.read(1)
16*e4a6e799Ssimonb    if ch == '':
17*e4a6e799Ssimonb        break
18*e4a6e799Ssimonb    if (ch == "'"):
19*e4a6e799Ssimonb         print("'\\'',", end='')
20*e4a6e799Ssimonb    elif (ch == "\\"):
21*e4a6e799Ssimonb        print("'\\\\',", end='')
22*e4a6e799Ssimonb    elif (ch == "\b"):
23*e4a6e799Ssimonb        print ("'\\b',", end='')
24*e4a6e799Ssimonb    elif (ch == "\t"):
25*e4a6e799Ssimonb        print ("'\\t',", end='')
26*e4a6e799Ssimonb    elif (ch == "\n"):
27*e4a6e799Ssimonb        if prevch != "\r": print("'\\n',")
28*e4a6e799Ssimonb    elif (ch == "\r"):
29*e4a6e799Ssimonb        if prevch != "\n": print("'\\n',")
30*e4a6e799Ssimonb    else:
31*e4a6e799Ssimonb        if ((ord(ch) >= ord(' ')) and (ord(ch) < 0x7f)):
32*e4a6e799Ssimonb            print(f"'{ch}',", end='')
33*e4a6e799Ssimonb        else:
34*e4a6e799Ssimonb            print("0x%02x," % ord(ch), end='')
35*e4a6e799Ssimonbprint(" '\\0' };")
36*e4a6e799Ssimonbprint("constant int size_helpdata = sizeof(helpdata) - 1;")
37