JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
fix some more unused param warnings
[spectrwm.git] / spectrwm.c
index 0e70061..7d96fd0 100644 (file)
@@ -151,7 +151,7 @@ static const char   *buildstr = SPECTRWM_VERSION;
 #define xcb_icccm_wm_hints_t                   xcb_wm_hints_t
 #endif
 
-#define SWM_DEBUG
+/* #define SWM_DEBUG */
 #ifdef SWM_DEBUG
 #define DPRINTF(x...) do {                                                     \
        if (swm_debug)                                                          \
@@ -649,6 +649,7 @@ struct ewmh_hint {
 
 /* function prototypes */
 void    buttonpress(xcb_button_press_event_t *);
+void    check_conn(void);
 void    clientmessage(xcb_client_message_event_t *);
 int     conf_load(char *, int);
 void    configurenotify(xcb_configure_notify_event_t *);
@@ -700,7 +701,7 @@ void         update_window(struct ws_win *);
 char *
 expand_tilde(char *s)
 {
-       struct passwd           *pwd;
+       struct passwd           *ppwd;
        int                     i, max;
        char                    *user;
        const char              *sc = s;
@@ -727,11 +728,11 @@ expand_tilde(char *s)
        user[i] = '\0';
        s = &s[i];
 
-       pwd = strlen(user) == 0 ? getpwuid(getuid()) : getpwnam(user);
-       if (pwd == NULL)
+       ppwd = strlen(user) == 0 ? getpwuid(getuid()) : getpwnam(user);
+       if (ppwd == NULL)
                result = strdup(sc);
        else
-               if (asprintf(&result, "%s%s", pwd->pw_dir, s) == -1)
+               if (asprintf(&result, "%s%s", ppwd->pw_dir, s) == -1)
                        result = NULL;
 out:
        if (result == NULL)
@@ -761,7 +762,11 @@ get_screen(int screen)
        const xcb_setup_t       *r;
        xcb_screen_iterator_t   iter;
 
-       r = xcb_get_setup(conn);
+       if ((r = xcb_get_setup(conn)) == NULL) {
+               DNPRINTF(SWM_D_MISC, "get_screen: xcb_get_setup\n");
+               check_conn();
+       }
+
        iter = xcb_setup_roots_iterator(r);
        for (; iter.rem; --screen, xcb_screen_next(&iter))
                if (screen == 0)
@@ -1004,7 +1009,7 @@ ewmh_update_actions(struct ws_win *win)
 #define _NET_WM_STATE_TOGGLE   2    /* toggle property */
 
 void
-ewmh_update_win_state(struct ws_win *win, long state, long action)
+ewmh_update_win_state(struct ws_win *win, xcb_atom_t state, long action)
 {
        unsigned int            mask = 0;
        unsigned int            changed = 0;
@@ -1014,7 +1019,7 @@ ewmh_update_win_state(struct ws_win *win, long state, long action)
                return;
 
        DNPRINTF(SWM_D_PROP, "ewmh_update_win_state: window: 0x%x, state: %ld, "
-           "action: %ld\n", win->id, state, action);
+           "action: %ld\n", win->id, (unsigned long)state, action);
 
        if (state == ewmh[_NET_WM_STATE_FULLSCREEN].atom)
                mask = EWMH_F_FULLSCREEN;
@@ -1165,8 +1170,10 @@ dumpwins(struct swm_region *r, union arg *args)
 }
 #else
 void
-dumpwins(struct swm_region *r, union arg *args)
+dumpwins(struct swm_region *r, union arg *s)
 {
+       (void)r;
+       (void)s;
 }
 #endif /* SWM_DEBUG */
 
@@ -1903,7 +1910,7 @@ bar_refresh(void)
 void
 bar_setup(struct swm_region *r)
 {
-       char                    *font, *fontpos, *dup, *search;
+       char                    *font, *fontpos, *d, *search;
        int                     count;
        xcb_screen_t            *screen;
        uint32_t                wa[3];
@@ -1919,9 +1926,9 @@ bar_setup(struct swm_region *r)
                err(1, "bar_setup: calloc: failed to allocate memory.");
 
        if (bar_font == NULL) {
-               if ((dup = strdup(bar_fonts)) == NULL)
+               if ((d = strdup(bar_fonts)) == NULL)
                        errx(1, "insufficient memory.");
-               search = dup;
+               search = d;
                while ((font = strsep(&search, ",")) != NULL) {
                        if (*font == '\0')
                                continue;
@@ -1950,7 +1957,7 @@ bar_setup(struct swm_region *r)
                                break;
                        }
                }
-               free(dup);
+               free(d);
        }
 
        if (bar_font == NULL)
@@ -1987,8 +1994,9 @@ bar_setup(struct swm_region *r)
        xcb_create_pixmap(conn, screen->root_depth, r->bar->buffer, r->bar->id,
            WIDTH(r->bar), HEIGHT(r->bar));
 
-       xcb_randr_select_input(conn, r->bar->id,
-           XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE);
+       if (xrandr_support)
+               xcb_randr_select_input(conn, r->bar->id,
+                   XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE);
 
        if (bar_enabled)
                map_window_raised(r->bar->id);
@@ -2754,6 +2762,8 @@ priorws(struct swm_region *r, union arg *args)
 {
        union arg               a;
 
+       (void)args;
+
        DNPRINTF(SWM_D_WS, "priorws: id: %d, screen[%d]:%dx%d+%d+%d, ws: %d\n",
            args->id, r->s->idx, WIDTH(r), HEIGHT(r), X(r), Y(r), r->ws->idx);
 
@@ -5774,7 +5784,7 @@ setconfquirk(char *selector, char *value, int flags)
 {
        char                    *cp, *class, *name;
        int                     retval;
-       unsigned long           quirks;
+       unsigned long           qrks;
 
        /* suppress unused warning since var is needed */
        (void)flags;
@@ -5786,8 +5796,8 @@ setconfquirk(char *selector, char *value, int flags)
        *cp = '\0';
        class = selector;
        name = cp + 1;
-       if ((retval = parsequirks(value, &quirks)) == 0)
-               setquirk(class, name, quirks);
+       if ((retval = parsequirks(value, &qrks)) == 0)
+               setquirk(class, name, qrks);
        return (retval);
 }
 
@@ -6133,7 +6143,7 @@ setautorun(char *selector, char *value, int flags)
 int
 setlayout(char *selector, char *value, int flags)
 {
-       int                     ws_id, i, x, mg, ma, si, raise, f = 0;
+       int                     ws_id, i, x, mg, ma, si, ar, f = 0;
        int                     st = SWM_V_STACK, num_screens;
        char                    s[1024];
        struct workspace        *ws;
@@ -6147,7 +6157,7 @@ setlayout(char *selector, char *value, int flags)
 
        bzero(s, sizeof s);
        if (sscanf(value, "ws[%d]:%d:%d:%d:%d:%1023c",
-           &ws_id, &mg, &ma, &si, &raise, s) != 6)
+           &ws_id, &mg, &ma, &si, &ar, s) != 6)
                errx(1, "invalid layout entry, should be 'ws[<idx>]:"
                    "<master_grow>:<master_add>:<stack_inc>:<always_raise>:"
                    "<type>'");
@@ -6177,7 +6187,7 @@ setlayout(char *selector, char *value, int flags)
                ws = (struct workspace *)&screens[i].ws;
                ws[ws_id].cur_layout = &layouts[st];
 
-               ws[ws_id].always_raise = raise;
+               ws[ws_id].always_raise = ar;
                if (st == SWM_MAX_STACK)
                        continue;
 
@@ -6273,7 +6283,7 @@ conf_load(char *filename, int keymapping)
        FILE                    *config;
        char                    *line, *cp, *optsub, *optval;
        size_t                  linelen, lineno = 0;
-       int                     wordlen, i, optind;
+       int                     wordlen, i, optidx;
        struct config_option    *opt;
 
        DNPRINTF(SWM_D_CONF, "conf_load: begin\n");
@@ -6309,16 +6319,16 @@ conf_load(char *filename, int keymapping)
                            filename, lineno);
                        goto out;
                }
-               optind = -1;
+               optidx = -1;
                for (i = 0; i < LENGTH(configopt); i++) {
                        opt = &configopt[i];
                        if (!strncasecmp(cp, opt->optname, wordlen) &&
                            (int)strlen(opt->optname) == wordlen) {
-                               optind = i;
+                               optidx = i;
                                break;
                        }
                }
-               if (optind == -1) {
+               if (optidx == -1) {
                        warnx("%s: line %zd: unknown option %.*s",
                            filename, lineno, wordlen, cp);
                        goto out;
@@ -6357,10 +6367,10 @@ conf_load(char *filename, int keymapping)
                /* get RHS value */
                optval = strdup(cp);
                /* call function to deal with it all */
-               if (configopt[optind].func(optsub, optval,
-                   configopt[optind].funcflags) != 0)
+               if (configopt[optidx].func(optsub, optval,
+                   configopt[optidx].funcflags) != 0)
                        errx(1, "%s: line %zd: invalid data for %s",
-                           filename, lineno, configopt[optind].optname);
+                           filename, lineno, configopt[optidx].optname);
                free(optval);
                free(optsub);
                free(line);
@@ -7401,6 +7411,39 @@ clientmessage(xcb_client_message_event_t *e)
        xcb_flush(conn);
 }
 
+void
+check_conn(void)
+{
+       int      errcode = xcb_connection_has_error(conn);
+#ifdef XCB_CONN_ERROR
+       char    *s;
+       switch (errcode) {
+       case XCB_CONN_ERROR:
+               s = "Socket error, pipe error or other stream error.";
+               break;
+       case XCB_CONN_CLOSED_EXT_NOTSUPPORTED:
+               s = "Extension not supported.";
+               break;
+       case XCB_CONN_CLOSED_MEM_INSUFFICIENT:
+               s = "Insufficient memory.";
+               break;
+       case XCB_CONN_CLOSED_REQ_LEN_EXCEED:
+               s = "Request length was exceeded.";
+               break;
+       case XCB_CONN_CLOSED_PARSE_ERR:
+               s = "Error parsing display string.";
+               break;
+       default:
+               s = "Unknown error.";
+       }
+       if (errcode)
+               errx(errcode, "X CONNECTION ERROR: %s", s);
+#else
+       if (errcode)
+               errx(errcode, "X CONNECTION ERROR");
+#endif
+}
+
 int
 enable_wm(void)
 {
@@ -7704,17 +7747,17 @@ setup_screens(void)
 
        /* initial Xrandr setup */
        xrandr_support = 0;
-       c = xcb_randr_query_version(conn, 1, 1);
-       r = xcb_randr_query_version_reply(conn, c, NULL);
-       if (r) {
-               if (r->major_version >= 1) {
-                       qep = xcb_get_extension_data(conn, &xcb_randr_id);
-                       if (qep) {
+       qep = xcb_get_extension_data(conn, &xcb_randr_id);
+       if (qep->present) {
+               c = xcb_randr_query_version(conn, 1, 1);
+               r = xcb_randr_query_version_reply(conn, c, NULL);
+               if (r) {
+                       if (r->major_version >= 1) {
                                xrandr_support = 1;
                                xrandr_eventbase = qep->first_event;
                        }
+                       free(r);
                }
-               free(r);
        }
 
        cursor_font = xcb_generate_id(conn);
@@ -7840,6 +7883,8 @@ workaround(void)
 void
 event_error(xcb_generic_error_t *e)
 {
+       (void)e;
+
        DNPRINTF(SWM_D_EVENT, "event_error: %s(%u) from %s(%u), sequence: %u, "
            "resource_id: %u, minor_code: %u\n",
            xcb_event_get_error_label(e->error_code), e->error_code,