11133e27eSPeter Avalos /* 2*320d7c8aSAaron LI * Copyright (C) 1984-2023 Mark Nudelman 31133e27eSPeter Avalos * 41133e27eSPeter Avalos * You may distribute under the terms of either the GNU General Public 51133e27eSPeter Avalos * License or the Less License, as specified in the README file. 61133e27eSPeter Avalos * 7e639dc31SJohn Marino * For more information, see the README file. 81133e27eSPeter Avalos */ 91133e27eSPeter Avalos 100c7ad07eSAntonio Huete Jimenez #include "xbuf.h" 111133e27eSPeter Avalos 121133e27eSPeter Avalos /* 131133e27eSPeter Avalos * Format of a lesskey file: 141133e27eSPeter Avalos * 151133e27eSPeter Avalos * LESSKEY_MAGIC (4 bytes) 161133e27eSPeter Avalos * sections... 171133e27eSPeter Avalos * END_LESSKEY_MAGIC (4 bytes) 181133e27eSPeter Avalos * 191133e27eSPeter Avalos * Each section is: 201133e27eSPeter Avalos * 211133e27eSPeter Avalos * section_MAGIC (1 byte) 221133e27eSPeter Avalos * section_length (2 bytes) 231133e27eSPeter Avalos * key table (section_length bytes) 241133e27eSPeter Avalos */ 251133e27eSPeter Avalos #define C0_LESSKEY_MAGIC '\0' 261133e27eSPeter Avalos #define C1_LESSKEY_MAGIC 'M' 271133e27eSPeter Avalos #define C2_LESSKEY_MAGIC '+' 281133e27eSPeter Avalos #define C3_LESSKEY_MAGIC 'G' 291133e27eSPeter Avalos 301133e27eSPeter Avalos #define CMD_SECTION 'c' 311133e27eSPeter Avalos #define EDIT_SECTION 'e' 321133e27eSPeter Avalos #define VAR_SECTION 'v' 331133e27eSPeter Avalos #define END_SECTION 'x' 341133e27eSPeter Avalos 351133e27eSPeter Avalos #define C0_END_LESSKEY_MAGIC 'E' 361133e27eSPeter Avalos #define C1_END_LESSKEY_MAGIC 'n' 371133e27eSPeter Avalos #define C2_END_LESSKEY_MAGIC 'd' 381133e27eSPeter Avalos 391133e27eSPeter Avalos /* */ 401133e27eSPeter Avalos #define KRADIX 64 410c7ad07eSAntonio Huete Jimenez 420c7ad07eSAntonio Huete Jimenez struct lesskey_cmdname 430c7ad07eSAntonio Huete Jimenez { 440c7ad07eSAntonio Huete Jimenez char *cn_name; 450c7ad07eSAntonio Huete Jimenez int cn_action; 460c7ad07eSAntonio Huete Jimenez }; 470c7ad07eSAntonio Huete Jimenez 480c7ad07eSAntonio Huete Jimenez struct lesskey_table 490c7ad07eSAntonio Huete Jimenez { 500c7ad07eSAntonio Huete Jimenez struct lesskey_cmdname *names; 510c7ad07eSAntonio Huete Jimenez struct xbuffer buf; 520c7ad07eSAntonio Huete Jimenez int is_var; 530c7ad07eSAntonio Huete Jimenez }; 540c7ad07eSAntonio Huete Jimenez 550c7ad07eSAntonio Huete Jimenez struct lesskey_tables 560c7ad07eSAntonio Huete Jimenez { 570c7ad07eSAntonio Huete Jimenez struct lesskey_table *currtable; 580c7ad07eSAntonio Huete Jimenez struct lesskey_table cmdtable; 590c7ad07eSAntonio Huete Jimenez struct lesskey_table edittable; 600c7ad07eSAntonio Huete Jimenez struct lesskey_table vartable; 610c7ad07eSAntonio Huete Jimenez }; 620c7ad07eSAntonio Huete Jimenez 630c7ad07eSAntonio Huete Jimenez extern int parse_lesskey(char *infile, struct lesskey_tables *tables); 64