xref: /netbsd-src/external/bsd/less/dist/mkhelp.c (revision ec18bca04f54d9e8d2db12e694a7fa201d646e52)
1*ec18bca0Stron /*	$NetBSD: mkhelp.c,v 1.3 2013/09/04 19:44:21 tron Exp $	*/
220006a0bStron 
320006a0bStron /*
4*ec18bca0Stron  * Copyright (C) 1984-2012  Mark Nudelman
520006a0bStron  *
620006a0bStron  * You may distribute under the terms of either the GNU General Public
720006a0bStron  * License or the Less License, as specified in the README file.
820006a0bStron  *
9*ec18bca0Stron  * For more information, see the README file.
1020006a0bStron  */
1120006a0bStron 
1220006a0bStron 
1320006a0bStron /*
1420006a0bStron  * Silly little program to generate the help.c source file
1520006a0bStron  * from the less.hlp text file.
1620006a0bStron  * help.c just contains a char array whose contents are
1720006a0bStron  * the contents of less.hlp.
1820006a0bStron  */
1920006a0bStron 
2020006a0bStron #include <stdio.h>
2120006a0bStron 
2220006a0bStron 	int
main(argc,argv)2320006a0bStron main(argc, argv)
2420006a0bStron 	int argc;
2520006a0bStron 	char *argv[];
2620006a0bStron {
2720006a0bStron 	int ch;
2820006a0bStron 	int prevch;
2920006a0bStron 
3020006a0bStron 	printf("/* This file was generated by mkhelp from less.hlp */\n");
3120006a0bStron 	printf("#include \"less.h\"\n");
3220006a0bStron 	printf("constant char helpdata[] = {\n");
3320006a0bStron 	ch = 0;
3420006a0bStron 	while (prevch = ch, (ch = getchar()) != EOF)
3520006a0bStron 	{
3620006a0bStron 		switch (ch)
3720006a0bStron 		{
3820006a0bStron 		case '\'':
3920006a0bStron 			printf("'\\'',");
4020006a0bStron 			break;
4120006a0bStron 		case '\\':
4220006a0bStron 			printf("'\\\\',");
4320006a0bStron 			break;
4420006a0bStron 		case '\b':
4520006a0bStron 			printf("'\\b',");
4620006a0bStron 			break;
4720006a0bStron 		case '\t':
4820006a0bStron 			printf("'\\t',");
4920006a0bStron 			break;
5020006a0bStron 		case '\n':
5120006a0bStron 			if (prevch != '\r')
5220006a0bStron 				printf("'\\n',\n");
5320006a0bStron 			break;
5420006a0bStron 		case '\r':
5520006a0bStron 			if (prevch != '\n')
5620006a0bStron 				printf("'\\n',\n");
5720006a0bStron 			break;
5820006a0bStron 		default:
5920006a0bStron 			if (ch >= ' ' && ch < 0x7f)
6020006a0bStron 				printf("'%c',", ch);
6120006a0bStron 			else
6220006a0bStron 				printf("0x%02x,", ch);
6320006a0bStron 			break;
6420006a0bStron 		}
6520006a0bStron 	}
6620006a0bStron 	/* Add an extra null char to avoid having a trailing comma. */
6720006a0bStron 	printf(" 0 };\n");
6820006a0bStron 	printf("constant int size_helpdata = sizeof(helpdata) - 1;\n");
6920006a0bStron 	return (0);
7020006a0bStron }
71