160786Sps/*
2240121Sdelphij * Copyright (C) 1984-2012  Mark Nudelman
360786Sps *
460786Sps * You may distribute under the terms of either the GNU General Public
560786Sps * License or the Less License, as specified in the README file.
660786Sps *
7240121Sdelphij * For more information, see the README file.
860786Sps */
960786Sps
1060786Sps
1160786Sps/*
1260786Sps * Silly little program to generate the help.c source file
1360786Sps * from the less.hlp text file.
1460786Sps * help.c just contains a char array whose contents are
1560786Sps * the contents of less.hlp.
1660786Sps */
1760786Sps
1860786Sps#include <stdio.h>
1960786Sps
2060786Sps	int
2160786Spsmain(argc, argv)
2260786Sps	int argc;
2360786Sps	char *argv[];
2460786Sps{
2560786Sps	int ch;
2660786Sps	int prevch;
2760786Sps
2860786Sps	printf("/* This file was generated by mkhelp from less.hlp */\n");
2960786Sps	printf("#include \"less.h\"\n");
3060786Sps	printf("constant char helpdata[] = {\n");
3160786Sps	ch = 0;
3260786Sps	while (prevch = ch, (ch = getchar()) != EOF)
3360786Sps	{
3460786Sps		switch (ch)
3560786Sps		{
3660786Sps		case '\'':
3760786Sps			printf("'\\'',");
3860786Sps			break;
3960786Sps		case '\\':
4060786Sps			printf("'\\\\',");
4160786Sps			break;
4260786Sps		case '\b':
4360786Sps			printf("'\\b',");
4460786Sps			break;
4560786Sps		case '\t':
4660786Sps			printf("'\\t',");
4760786Sps			break;
4860786Sps		case '\n':
4960786Sps			if (prevch != '\r')
5060786Sps				printf("'\\n',\n");
5160786Sps			break;
5260786Sps		case '\r':
5360786Sps			if (prevch != '\n')
5460786Sps				printf("'\\n',\n");
5560786Sps			break;
5660786Sps		default:
5760786Sps			if (ch >= ' ' && ch < 0x7f)
5860786Sps				printf("'%c',", ch);
5960786Sps			else
6060786Sps				printf("0x%02x,", ch);
6160786Sps			break;
6260786Sps		}
6360786Sps	}
6460786Sps	/* Add an extra null char to avoid having a trailing comma. */
6560786Sps	printf(" 0 };\n");
6660786Sps	printf("constant int size_helpdata = sizeof(helpdata) - 1;\n");
6760786Sps	return (0);
6860786Sps}
69