mkhelp.c revision 170257
1/*
2 * Copyright (C) 1984-2007  Mark Nudelman
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Less License, as specified in the README file.
6 *
7 * For more information about less, or for information on how to
8 * contact the author, see the README file.
9 */
10
11
12/*
13 * Silly little program to generate the help.c source file
14 * from the less.hlp text file.
15 * help.c just contains a char array whose contents are
16 * the contents of less.hlp.
17 */
18
19#include <stdio.h>
20
21	int
22main(argc, argv)
23	int argc;
24	char *argv[];
25{
26	int ch;
27	int prevch;
28
29	printf("/* This file was generated by mkhelp from less.hlp */\n");
30	printf("#include \"less.h\"\n");
31	printf("constant char helpdata[] = {\n");
32	ch = 0;
33	while (prevch = ch, (ch = getchar()) != EOF)
34	{
35		switch (ch)
36		{
37		case '\'':
38			printf("'\\'',");
39			break;
40		case '\\':
41			printf("'\\\\',");
42			break;
43		case '\b':
44			printf("'\\b',");
45			break;
46		case '\t':
47			printf("'\\t',");
48			break;
49		case '\n':
50			if (prevch != '\r')
51				printf("'\\n',\n");
52			break;
53		case '\r':
54			if (prevch != '\n')
55				printf("'\\n',\n");
56			break;
57		default:
58			if (ch >= ' ' && ch < 0x7f)
59				printf("'%c',", ch);
60			else
61				printf("0x%02x,", ch);
62			break;
63		}
64	}
65	/* Add an extra null char to avoid having a trailing comma. */
66	printf(" 0 };\n");
67	printf("constant int size_helpdata = sizeof(helpdata) - 1;\n");
68	return (0);
69}
70