Move config.h include from st.c to x.c - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 65976c1a29f2945c3cfb6af74cd6440cf193021d
 (DIR) parent 32d3b1d00f66eda4f5446f3b32cabed2c9a77a40
 (HTM) Author: Devin J. Pohly <djpohly@gmail.com>
       Date:   Tue, 17 Oct 2017 15:21:04 -0500
       
       Move config.h include from st.c to x.c
       
       config.h includes references to KeySyms and other X stuff.  Until we
       come up with a cleaner way to separate configuration, it is simpler
       (leads to more code removal) to have this here.
       
       Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
       
       Diffstat:
         M config.def.h                        |      73 +++++++++++++++----------------
         M st.c                                |      47 +++----------------------------
         M st.h                                |      50 +++++++++----------------------
         M win.h                               |       3 ---
         M x.c                                 |      37 +++++++++++++++++++++++++++++++
       
       5 files changed, 91 insertions(+), 119 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -5,8 +5,8 @@
         *
         * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
         */
       -char font[] = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
       -int borderpx = 2;
       +static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
       +static int borderpx = 2;
        
        /*
         * What program is execed by st depends of these precedence rules:
       @@ -16,54 +16,54 @@ int borderpx = 2;
         * 4: value of shell in /etc/passwd
         * 5: value of shell in config.h
         */
       -static char shell[] = "/bin/sh";
       -static char *utmp = NULL;
       -static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400";
       +char *shell = "/bin/sh";
       +char *utmp = NULL;
       +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
        
        /* identification sequence returned in DA and DECID */
       -static char vtiden[] = "\033[?6c";
       +char *vtiden = "\033[?6c";
        
        /* Kerning / character bounding-box multipliers */
       -float cwscale = 1.0;
       -float chscale = 1.0;
       +static float cwscale = 1.0;
       +static float chscale = 1.0;
        
        /*
         * word delimiter string
         *
         * More advanced example: " `'\"()[]{}"
         */
       -static char worddelimiters[] = " ";
       +char *worddelimiters = " ";
        
        /* selection timeouts (in milliseconds) */
       -unsigned int doubleclicktimeout = 300;
       -unsigned int tripleclicktimeout = 600;
       +static unsigned int doubleclicktimeout = 300;
       +static unsigned int tripleclicktimeout = 600;
        
        /* alt screens */
        int allowaltscreen = 1;
        
        /* frames per second st should at maximum draw to the screen */
       -unsigned int xfps = 120;
       -unsigned int actionfps = 30;
       +static unsigned int xfps = 120;
       +static unsigned int actionfps = 30;
        
        /*
         * blinking timeout (set to 0 to disable blinking) for the terminal blinking
         * attribute.
         */
       -unsigned int blinktimeout = 800;
       +static unsigned int blinktimeout = 800;
        
        /*
         * thickness of underline and bar cursors
         */
       -unsigned int cursorthickness = 2;
       +static unsigned int cursorthickness = 2;
        
        /*
         * bell volume. It must be a value between -100 and 100. Use 0 for disabling
         * it
         */
       -int bellvolume = 0;
       +static int bellvolume = 0;
        
        /* default TERM value */
       -char termname[] = "st-256color";
       +char *termname = "st-256color";
        
        /*
         * spaces per tab
       @@ -80,10 +80,10 @@ char termname[] = "st-256color";
         *
         *        stty tabs
         */
       -static unsigned int tabspaces = 8;
       +unsigned int tabspaces = 8;
        
        /* Terminal colors (16 first used in escape sequence) */
       -const char *colorname[] = {
       +static const char *colorname[] = {
                /* 8 normal colors */
                "black",
                "red3",
       @@ -118,8 +118,8 @@ const char *colorname[] = {
         */
        unsigned int defaultfg = 7;
        unsigned int defaultbg = 0;
       -unsigned int defaultcs = 256;
       -unsigned int defaultrcs = 257;
       +static unsigned int defaultcs = 256;
       +static unsigned int defaultrcs = 257;
        
        /*
         * Default shape of cursor
       @@ -128,33 +128,33 @@ unsigned int defaultrcs = 257;
         * 6: Bar ("|")
         * 7: Snowman ("☃")
         */
       -unsigned int cursorshape = 2;
       +static unsigned int cursorshape = 2;
        
        /*
         * Default columns and rows numbers
         */
        
       -unsigned int cols = 80;
       -unsigned int rows = 24;
       +static unsigned int cols = 80;
       +static unsigned int rows = 24;
        
        /*
         * Default colour and shape of the mouse cursor
         */
       -unsigned int mouseshape = XC_xterm;
       -unsigned int mousefg = 7;
       -unsigned int mousebg = 0;
       +static unsigned int mouseshape = XC_xterm;
       +static unsigned int mousefg = 7;
       +static unsigned int mousebg = 0;
        
        /*
         * Color used to display font attributes when fontconfig selected a font which
         * doesn't match the ones requested.
         */
       -unsigned int defaultattr = 11;
       +static unsigned int defaultattr = 11;
        
        /*
         * Internal mouse shortcuts.
         * Beware that overloading Button1 will disable the selection.
         */
       -MouseShortcut mshortcuts[] = {
       +static MouseShortcut mshortcuts[] = {
                /* button               mask            string */
                { Button4,              XK_ANY_MOD,     "\031" },
                { Button5,              XK_ANY_MOD,     "\005" },
       @@ -164,7 +164,7 @@ MouseShortcut mshortcuts[] = {
        #define MODKEY Mod1Mask
        #define TERMMOD (ControlMask|ShiftMask)
        
       -Shortcut shortcuts[] = {
       +static Shortcut shortcuts[] = {
                /* mask                 keysym          function        argument */
                { XK_ANY_MOD,           XK_Break,       sendbreak,      {.i =  0} },
                { ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },
       @@ -209,26 +209,26 @@ Shortcut shortcuts[] = {
         * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
         * to be mapped below, add them to this array.
         */
       -KeySym mappedkeys[] = { -1 };
       +static KeySym mappedkeys[] = { -1 };
        
        /*
         * State bits to ignore when matching key or button events.  By default,
         * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
         */
       -uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
       +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
        
        /*
         * Override mouse-select while mask is active (when MODE_MOUSE is set).
         * Note that if you want to use ShiftMask with selmasks, set this to an other
         * modifier, set to 0 to not use it.
         */
       -uint forceselmod = ShiftMask;
       +static uint forceselmod = ShiftMask;
        
        /*
         * This is the huge key array which defines all compatibility to the Linux
         * world. Please decide about changes wisely.
         */
       -Key key[] = {
       +static Key key[] = {
                /* keysym           mask            string      appkey appcursor crlf */
                { XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1,    0},
                { XK_KP_Home,       ShiftMask,      "\033[1;2H",     0,   +1,    0},
       @@ -451,7 +451,7 @@ Key key[] = {
         * ButtonRelease and MotionNotify.
         * If no match is found, regular selection is used.
         */
       -uint selmasks[] = {
       +static uint selmasks[] = {
                [SEL_RECTANGULAR] = Mod1Mask,
        };
        
       @@ -459,8 +459,7 @@ uint selmasks[] = {
         * Printable characters in ASCII, used to estimate the advance width
         * of single wide characters.
         */
       -char ascii_printable[] =
       +static char ascii_printable[] =
                " !\"#$%&'()*+,-./0123456789:;<=>?"
                "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
                "`abcdefghijklmnopqrstuvwxyz{|}~";
       -
 (DIR) diff --git a/st.c b/st.c
       @@ -109,19 +109,6 @@ typedef struct {
                int narg;              /* nb of args */
        } STREscape;
        
       -/* function definitions used in config.h */
       -static void clipcopy(const Arg *);
       -static void clippaste(const Arg *);
       -static void numlock(const Arg *);
       -static void selpaste(const Arg *);
       -static void printsel(const Arg *);
       -static void printscreen(const Arg *) ;
       -static void iso14755(const Arg *);
       -static void toggleprinter(const Arg *);
       -static void sendbreak(const Arg *);
       -
       -/* config.h for applying patches and the configuration. */
       -#include "config.h"
        
        static void execsh(char **);
        static void stty(char **);
       @@ -199,14 +186,6 @@ static uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8};
        static Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000};
        static Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};
        
       -/* config.h array lengths */
       -size_t colornamelen = LEN(colorname);
       -size_t mshortcutslen = LEN(mshortcuts);
       -size_t shortcutslen = LEN(shortcuts);
       -size_t selmaskslen = LEN(selmasks);
       -size_t keyslen = LEN(key);
       -size_t mappedkeyslen = LEN(mappedkeys);
       -
        ssize_t
        xwrite(int fd, const char *s, size_t len)
        {
       @@ -586,24 +565,6 @@ getsel(void)
        }
        
        void
       -selpaste(const Arg *dummy)
       -{
       -        xselpaste();
       -}
       -
       -void
       -clipcopy(const Arg *dummy)
       -{
       -        xclipcopy();
       -}
       -
       -void
       -clippaste(const Arg *dummy)
       -{
       -        xclippaste();
       -}
       -
       -void
        selclear(void)
        {
                if (sel.ob.x == -1)
       @@ -1572,7 +1533,7 @@ csihandle(void)
                        break;
                case 'c': /* DA -- Device Attributes */
                        if (csiescseq.arg[0] == 0)
       -                        ttywrite(vtiden, sizeof(vtiden) - 1);
       +                        ttywrite(vtiden, strlen(vtiden));
                        break;
                case 'C': /* CUF -- Cursor <n> Forward */
                case 'a': /* HPR -- Cursor <n> Forward */
       @@ -1791,7 +1752,7 @@ strhandle(void)
                                        dec = base64dec(strescseq.args[2]);
                                        if (dec) {
                                                xsetsel(dec, CurrentTime);
       -                                        clipcopy(NULL);
       +                                        xclipcopy();
                                        } else {
                                                fprintf(stderr, "erresc: invalid base64\n");
                                        }
       @@ -2134,7 +2095,7 @@ tcontrolcode(uchar ascii)
                case 0x99:   /* TODO: SGCI */
                        break;
                case 0x9a:   /* DECID -- Identify Terminal */
       -                ttywrite(vtiden, sizeof(vtiden) - 1);
       +                ttywrite(vtiden, strlen(vtiden));
                        break;
                case 0x9b:   /* TODO: CSI */
                case 0x9c:   /* TODO: ST */
       @@ -2206,7 +2167,7 @@ eschandle(uchar ascii)
                        }
                        break;
                case 'Z': /* DECID -- Identify Terminal */
       -                ttywrite(vtiden, sizeof(vtiden) - 1);
       +                ttywrite(vtiden, strlen(vtiden));
                        break;
                case 'c': /* RIS -- Reset to inital state */
                        treset();
 (DIR) diff --git a/st.h b/st.h
       @@ -190,6 +190,13 @@ typedef struct {
        void die(const char *, ...);
        void redraw(void);
        
       +void iso14755(const Arg *);
       +void numlock(const Arg *);
       +void printscreen(const Arg *);
       +void printsel(const Arg *);
       +void sendbreak(const Arg *);
       +void toggleprinter(const Arg *);
       +
        int tattrset(int);
        void tnew(int, int);
        void tresize(int, int);
       @@ -225,42 +232,13 @@ extern pid_t pid;
        extern int oldbutton;
        
        /* config.h globals */
       -extern char font[];
       -extern int borderpx;
       -extern float cwscale;
       -extern float chscale;
       -extern unsigned int doubleclicktimeout;
       -extern unsigned int tripleclicktimeout;
       +extern char *shell;
       +extern char *utmp;
       +extern char *stty_args;
       +extern char *vtiden;
       +extern char *worddelimiters;
        extern int allowaltscreen;
       -extern unsigned int xfps;
       -extern unsigned int actionfps;
       -extern unsigned int cursorthickness;
       -extern int bellvolume;
       -extern unsigned int blinktimeout;
       -extern char termname[];
       -extern const char *colorname[];
       -extern size_t colornamelen;
       +extern char *termname;
       +extern unsigned int tabspaces;
        extern unsigned int defaultfg;
        extern unsigned int defaultbg;
       -extern unsigned int defaultcs;
       -extern unsigned int defaultrcs;
       -extern unsigned int cursorshape;
       -extern unsigned int cols;
       -extern unsigned int rows;
       -extern unsigned int mouseshape;
       -extern unsigned int mousefg;
       -extern unsigned int mousebg;
       -extern unsigned int defaultattr;
       -extern MouseShortcut mshortcuts[];
       -extern size_t mshortcutslen;
       -extern Shortcut shortcuts[];
       -extern size_t shortcutslen;
       -extern KeySym mappedkeys[];
       -extern size_t mappedkeyslen;
       -extern uint ignoremod;
       -extern uint forceselmod;
       -extern Key key[];
       -extern size_t keyslen;
       -extern uint selmasks[];
       -extern size_t selmaskslen;
       -extern char ascii_printable[];
 (DIR) diff --git a/win.h b/win.h
       @@ -18,6 +18,3 @@ void xsettitle(char *);
        void xsetpointermotion(int);
        void xselpaste(void);
        void xsetsel(char *, Time);
       -void zoom(const Arg *);
       -void zoomabs(const Arg *);
       -void zoomreset(const Arg *);
 (DIR) diff --git a/x.c b/x.c
       @@ -20,6 +20,25 @@ static char *argv0;
        #include "st.h"
        #include "win.h"
        
       +/* function definitions used in config.h */
       +static void clipcopy(const Arg *);
       +static void clippaste(const Arg *);
       +static void selpaste(const Arg *);
       +static void zoom(const Arg *);
       +static void zoomabs(const Arg *);
       +static void zoomreset(const Arg *);
       +
       +/* config.h for applying patches and the configuration. */
       +#include "config.h"
       +
       +/* config.h array lengths */
       +size_t colornamelen = LEN(colorname);
       +size_t mshortcutslen = LEN(mshortcuts);
       +size_t shortcutslen = LEN(shortcuts);
       +size_t selmaskslen = LEN(selmasks);
       +size_t keyslen = LEN(key);
       +size_t mappedkeyslen = LEN(mappedkeys);
       +
        /* XEMBED messages */
        #define XEMBED_FOCUS_IN  4
        #define XEMBED_FOCUS_OUT 5
       @@ -189,6 +208,24 @@ static char *opt_name  = NULL;
        static char *opt_title = NULL;
        
        void
       +clipcopy(const Arg *dummy)
       +{
       +        xclipcopy();
       +}
       +
       +void
       +clippaste(const Arg *dummy)
       +{
       +        xclippaste();
       +}
       +
       +void
       +selpaste(const Arg *dummy)
       +{
       +        xselpaste();
       +}
       +
       +void
        zoom(const Arg *arg)
        {
                Arg larg;