Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
spectrwm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add variable for debug purposes.
[spectrwm.git]
/
spectrwm.c
diff --git
a/spectrwm.c
b/spectrwm.c
index
4ded077
..
0e70061
100644
(file)
--- a/
spectrwm.c
+++ b/
spectrwm.c
@@
-701,8
+701,8
@@
char *
expand_tilde(char *s)
{
struct passwd *pwd;
expand_tilde(char *s)
{
struct passwd *pwd;
- int i;
- char user[LOGIN_NAME_MAX];
+ int i, max;
+ char *user;
const char *sc = s;
char *result;
const char *sc = s;
char *result;
@@
-715,6
+715,13
@@
expand_tilde(char *s)
}
++s;
}
++s;
+
+ if ((max = sysconf(_SC_LOGIN_NAME_MAX)) == -1)
+ errx(1, "expand_tilde: sysconf");
+
+ if ((user = calloc(1, max + 1)) == NULL)
+ errx(1, "expand_tilde: calloc");
+
for (i = 0; s[i] != '/' && s[i] != '\0'; ++i)
user[i] = s[i];
user[i] = '\0';
for (i = 0; s[i] != '/' && s[i] != '\0'; ++i)
user[i] = s[i];
user[i] = '\0';
@@
-751,12
+758,14
@@
parse_rgb(const char *rgb, uint16_t *rr, uint16_t *gg, uint16_t *bb)
xcb_screen_t *
get_screen(int screen)
{
xcb_screen_t *
get_screen(int screen)
{
- xcb_screen_iterator_t i;
+ const xcb_setup_t *r;
+ xcb_screen_iterator_t iter;
- i = xcb_setup_roots_iterator(xcb_get_setup(conn));
- for (; i.rem; --screen, xcb_screen_next(&i))
+ r = xcb_get_setup(conn);
+ iter = xcb_setup_roots_iterator(r);
+ for (; iter.rem; --screen, xcb_screen_next(&iter))
if (screen == 0)
if (screen == 0)
- return (i.data);
+ return (iter.data);
return (NULL);
}
return (NULL);
}
@@
-1340,7
+1349,9
@@
custom_region(char *val)
sidx, num_screens);
sidx--;
sidx, num_screens);
sidx--;
- screen = get_screen(sidx);
+ if ((screen = get_screen(sidx)) == NULL)
+ errx(1, "ERROR: can't get screen %d.", sidx);
+
if (w < 1 || h < 1)
errx(1, "region %ux%u+%u+%u too small", w, h, x, y);
if (w < 1 || h < 1)
errx(1, "region %ux%u+%u+%u too small", w, h, x, y);
@@
-1894,10
+1905,13
@@
bar_setup(struct swm_region *r)
{
char *font, *fontpos, *dup, *search;
int count;
{
char *font, *fontpos, *dup, *search;
int count;
- xcb_screen_t *screen = get_screen(r->s->idx);
+ xcb_screen_t *screen;
uint32_t wa[3];
XRenderColor color;
uint32_t wa[3];
XRenderColor color;
+ if ((screen = get_screen(r->s->idx)) == NULL)
+ errx(1, "ERROR: can't get screen %d.", r->s->idx);
+
if (r->bar != NULL)
return;
if (r->bar != NULL)
return;
@@
-7399,7
+7413,8
@@
enable_wm(void)
/* this causes an error if some other window manager is running */
num_screens = xcb_setup_roots_length(xcb_get_setup(conn));
for (i = 0; i < num_screens; i++) {
/* this causes an error if some other window manager is running */
num_screens = xcb_setup_roots_length(xcb_get_setup(conn));
for (i = 0; i < num_screens; i++) {
- sc = get_screen(i);
+ if ((sc = get_screen(i)) == NULL)
+ errx(1, "ERROR: can't get screen %d.", i);
DNPRINTF(SWM_D_INIT, "enable_wm: screen %d, root: 0x%x\n",
i, sc->root);
wac = xcb_change_window_attributes_checked(conn, sc->root,
DNPRINTF(SWM_D_INIT, "enable_wm: screen %d, root: 0x%x\n",
i, sc->root);
wac = xcb_change_window_attributes_checked(conn, sc->root,
@@
-7504,7
+7519,10
@@
scan_xrandr(int i)
xcb_randr_get_crtc_info_cookie_t cic;
xcb_randr_get_crtc_info_reply_t *cir = NULL;
xcb_randr_crtc_t *crtc;
xcb_randr_get_crtc_info_cookie_t cic;
xcb_randr_get_crtc_info_reply_t *cir = NULL;
xcb_randr_crtc_t *crtc;
- xcb_screen_t *screen = get_screen(i);
+ xcb_screen_t *screen;
+
+ if ((screen = get_screen(i)) == NULL)
+ errx(1, "ERROR: can't get screen %d.", i);
num_screens = xcb_setup_roots_length(xcb_get_setup(conn));
if (i >= num_screens)
num_screens = xcb_setup_roots_length(xcb_get_setup(conn));
if (i >= num_screens)
@@
-7672,6
+7690,7
@@
setup_screens(void)
struct workspace *ws;
uint32_t gcv[1], wa[1];
const xcb_query_extension_reply_t *qep;
struct workspace *ws;
uint32_t gcv[1], wa[1];
const xcb_query_extension_reply_t *qep;
+ xcb_screen_t *screen;
xcb_cursor_t cursor;
xcb_font_t cursor_font;
xcb_randr_query_version_cookie_t c;
xcb_cursor_t cursor;
xcb_font_t cursor_font;
xcb_randr_query_version_cookie_t c;
@@
-7688,12
+7707,15
@@
setup_screens(void)
c = xcb_randr_query_version(conn, 1, 1);
r = xcb_randr_query_version_reply(conn, c, NULL);
if (r) {
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;
+ if (r->major_version >= 1) {
+ qep = xcb_get_extension_data(conn, &xcb_randr_id);
+ if (qep) {
+ xrandr_support = 1;
+ xrandr_eventbase = qep->first_event;
+ }
+ }
free(r);
}
free(r);
}
- qep = xcb_get_extension_data(conn, &xcb_randr_id);
- xrandr_eventbase = qep->first_event;
cursor_font = xcb_generate_id(conn);
xcb_open_font(conn, cursor_font, strlen("cursor"), "cursor");
cursor_font = xcb_generate_id(conn);
xcb_open_font(conn, cursor_font, strlen("cursor"), "cursor");
@@
-7709,7
+7731,9
@@
setup_screens(void)
screens[i].idx = i;
TAILQ_INIT(&screens[i].rl);
TAILQ_INIT(&screens[i].orl);
screens[i].idx = i;
TAILQ_INIT(&screens[i].rl);
TAILQ_INIT(&screens[i].orl);
- screens[i].root = get_screen(i)->root;
+ if ((screen = get_screen(i)) == NULL)
+ errx(1, "ERROR: can't get screen %d.", i);
+ screens[i].root = screen->root;
/* set default colors */
setscreencolor("red", i + 1, SWM_S_COLOR_FOCUS);
/* set default colors */
setscreencolor("red", i + 1, SWM_S_COLOR_FOCUS);