/*      $NetBSD: mkhelp.c,v 1.3 2013/09/04 19:44:21 tron Exp $  */

/*
* Copyright (C) 1984-2012  Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
*
* For more information, see the README file.
*/


/*
* Silly little program to generate the help.c source file
* from the less.hlp text file.
* help.c just contains a char array whose contents are
* the contents of less.hlp.
*/

#include <stdio.h>

       int
main(argc, argv)
       int argc;
       char *argv[];
{
       int ch;
       int prevch;

       printf("/* This file was generated by mkhelp from less.hlp */\n");
       printf("#include \"less.h\"\n");
       printf("constant char helpdata[] = {\n");
       ch = 0;
       while (prevch = ch, (ch = getchar()) != EOF)
       {
               switch (ch)
               {
               case '\'':
                       printf("'\\'',");
                       break;
               case '\\':
                       printf("'\\\\',");
                       break;
               case '\b':
                       printf("'\\b',");
                       break;
               case '\t':
                       printf("'\\t',");
                       break;
               case '\n':
                       if (prevch != '\r')
                               printf("'\\n',\n");
                       break;
               case '\r':
                       if (prevch != '\n')
                               printf("'\\n',\n");
                       break;
               default:
                       if (ch >= ' ' && ch < 0x7f)
                               printf("'%c',", ch);
                       else
                               printf("0x%02x,", ch);
                       break;
               }
       }
       /* Add an extra null char to avoid having a trailing comma. */
       printf(" 0 };\n");
       printf("constant int size_helpdata = sizeof(helpdata) - 1;\n");
       return (0);
}