Fall back to the default latin composition table. - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 613a36b923aee53922ad62bbf78a0023c229af75
 (DIR) parent c39a4076c24b965ae6d99a9cca2a01a014e109eb
 (HTM) Author: Rob King <jking@deadpixi.com>
       Date:   Thu, 11 Aug 2016 23:23:12 -0500
       
       Fall back to the default latin composition table.
       
       Diffstat:
         libXg/latin1.c                      |      30 +++++++++++++++---------------
       
       1 file changed, 15 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/libXg/latin1.c b/libXg/latin1.c
       @@ -226,6 +226,7 @@ struct latin latintab[] = {
            0, 0,
        };
        
       +
        struct latin *mappings = NULL;
        
        void
       @@ -237,6 +238,10 @@ freelatin(void)
        void
        initlatin(void)
        {
       +    mappings = calloc(MAPPING_MAX + 1, sizeof(struct latin));
       +    if (mappings)
       +        atexit(freelatin);
       +
                FILE *keyboard = NULL;
                if (getenv("HOME")){
                        char path[1024] = {0};
       @@ -244,17 +249,8 @@ initlatin(void)
                        keyboard = fopen(path, "r");
                }
        
       -        if (!keyboard){
       -                mappings = latintab;
       -                return;
       -        }
       -
       -        mappings = calloc(MAPPING_MAX + 1, sizeof(struct latin));
       -        if (!mappings){
       -                mappings = latintab;
       -                fclose(keyboard);
       -                return;
       -        }
       +    if (!keyboard)
       +        return;
        
                int j = 0;
                while (j < MAPPING_MAX){
       @@ -269,7 +265,6 @@ initlatin(void)
                }
        
                fclose(keyboard);
       -        atexit(freelatin);
        }
        
        long
       @@ -277,9 +272,14 @@ latin1(unsigned char *k)
        {
                struct latin *l;
        
       -        for(l=mappings; l->l; l++)
       -                if(k[0]==l->c[0] && k[1]==l->c[1])
       -                        return l->l;
       +    for (l = mappings; l->l; l++)
       +        if (k[0] == l->c[0] && k[1] == l->c[1])
       +            return l->l;
       +
       +    for (l = latintab; l->l; l++)
       +        if (k[0] == l->c[0] && k[1] == l->c[1])
       +            return l->l;
       +
                return -1;
        }