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