X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=071fb8322c7b8daba52483d98115760a2ff91b8c;hb=024d93cece051fce3b8bbaae25570a2d6fec2e06;hp=d7a43293f619fca2d0859739b22c5b2132a6d75c;hpb=b2b0c8fcf2e3570f88713a999dcba0db6cf51552;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index d7a4329..071fb83 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -703,7 +703,7 @@ struct cursors { void buttonpress(xcb_button_press_event_t *); void check_conn(void); void clientmessage(xcb_client_message_event_t *); -int conf_load(char *, int); +int conf_load(const char *, int); void configurenotify(xcb_configure_notify_event_t *); void configurerequest(xcb_configure_request_event_t *); void constrain_window(struct ws_win *, struct swm_region *, int); @@ -712,7 +712,7 @@ void enternotify(xcb_enter_notify_event_t *); void event_drain(uint8_t); void event_error(xcb_generic_error_t *); void event_handle(xcb_generic_event_t *); -char *expand_tilde(char *); +char *expand_tilde(const char *); void expose(xcb_expose_event_t *); struct ws_win *find_window(xcb_window_t); int floating_toggle_win(struct ws_win *); @@ -749,7 +749,7 @@ void maprequest(xcb_map_request_event_t *); void new_region(struct swm_screen *, int, int, int, int); int parse_rgb(const char *, uint16_t *, uint16_t *, uint16_t *); void propertynotify(xcb_property_notify_event_t *); -void spawn_select(struct swm_region *, union arg *, char *, int *); +void spawn_select(struct swm_region *, union arg *, const char *, int *); void screenchange(xcb_randr_screen_change_notify_event_t *); void shutdown_cleanup(void); void store_float_geom(struct ws_win *, struct swm_region *); @@ -799,7 +799,7 @@ cursors_cleanup(void) } char * -expand_tilde(char *s) +expand_tilde(const char *s) { struct passwd *ppwd; int i, max; @@ -829,6 +829,8 @@ expand_tilde(char *s) s = &s[i]; ppwd = strlen(user) == 0 ? getpwuid(getuid()) : getpwnam(user); + free(user); + if (ppwd == NULL) result = strdup(sc); else @@ -2049,7 +2051,7 @@ isxlfd(char *s) } void -fontset_init() +fontset_init(void) { char *default_string; char **missing_charsets; @@ -4237,7 +4239,7 @@ get_win_name(xcb_window_t win) xcb_get_property_value_length(r)); free(r); - return name; + return (name); } void @@ -4462,7 +4464,7 @@ search_win(struct swm_region *r, union arg *args) } void -search_resp_uniconify(char *resp, unsigned long len) +search_resp_uniconify(const char *resp, unsigned long len) { char *name; struct ws_win *win; @@ -4492,7 +4494,7 @@ search_resp_uniconify(char *resp, unsigned long len) } void -search_resp_name_workspace(char *resp, unsigned long len) +search_resp_name_workspace(const char *resp, unsigned long len) { struct workspace *ws; @@ -4518,7 +4520,7 @@ search_resp_name_workspace(char *resp, unsigned long len) } void -search_resp_search_workspace(char *resp) +search_resp_search_workspace(const char *resp) { char *p, *q; int ws_idx; @@ -4549,7 +4551,7 @@ search_resp_search_workspace(char *resp) } void -search_resp_search_window(char *resp) +search_resp_search_window(const char *resp) { char *s; int idx; @@ -5370,7 +5372,7 @@ TAILQ_HEAD(spawn_list, spawn_prog); struct spawn_list spawns = TAILQ_HEAD_INITIALIZER(spawns); int -spawn_expand(struct swm_region *r, union arg *args, char *spawn_name, +spawn_expand(struct swm_region *r, union arg *args, const char *spawn_name, char ***ret_args) { struct spawn_prog *prog = NULL; @@ -5449,7 +5451,7 @@ spawn_expand(struct swm_region *r, union arg *args, char *spawn_name, } void -spawn_custom(struct swm_region *r, union arg *args, char *spawn_name) +spawn_custom(struct swm_region *r, union arg *args, const char *spawn_name) { union arg a; char **real_args; @@ -5467,7 +5469,8 @@ spawn_custom(struct swm_region *r, union arg *args, char *spawn_name) } void -spawn_select(struct swm_region *r, union arg *args, char *spawn_name, int *pid) +spawn_select(struct swm_region *r, union arg *args, const char *spawn_name, + int *pid) { union arg a; char **real_args; @@ -5509,7 +5512,7 @@ spawn_select(struct swm_region *r, union arg *args, char *spawn_name, int *pid) } void -spawn_insert(char *name, char *args) +spawn_insert(const char *name, const char *args) { char *arg, *cp, *ptr; struct spawn_prog *sp; @@ -6171,6 +6174,7 @@ setquirk(const char *class, const char *name, unsigned long quirk) DNPRINTF(SWM_D_QUIRK, "setquirk: enter %s:%s [%lu]\n", class, name, quirk); + /* Remove/replace existing quirk. */ TAILQ_FOREACH(qp, &quirks, entry) { if (!strcmp(qp->class, class) && !strcmp(qp->name, name)) { if (!quirk) @@ -6181,12 +6185,11 @@ setquirk(const char *class, const char *name, unsigned long quirk) return; } } - if (!quirk) { - warnx("error: setquirk: cannot find class/name combination"); - return; - } - quirk_insert(class, name, quirk); + /* Only insert if quirk is not NONE. */ + if (quirk) + quirk_insert(class, name, quirk); + DNPRINTF(SWM_D_QUIRK, "setquirk: leave\n"); } @@ -6502,7 +6505,7 @@ setautorun(char *selector, char *value, int flags) { int ws_id; char s[1024]; - char *ap, *sp = s; + char *ap, *sp; union arg a; int argc = 0; pid_t pid; @@ -6522,6 +6525,8 @@ setautorun(char *selector, char *value, int flags) if (ws_id < 0 || ws_id >= workspace_limit) errx(1, "autorun: invalid workspace %d", ws_id + 1); + sp = expand_tilde((char *)&s); + /* * This is a little intricate * @@ -6539,6 +6544,7 @@ setautorun(char *selector, char *value, int flags) err(1, "setautorun: realloc"); a.argv[argc - 1] = ap; } + free(sp); if ((a.argv = realloc(a.argv, (argc + 1) * sizeof(char *))) == NULL) err(1, "setautorun: realloc"); @@ -6705,7 +6711,7 @@ struct config_option configopt[] = { }; int -conf_load(char *filename, int keymapping) +conf_load(const char *filename, int keymapping) { FILE *config; char *line, *cp, *optsub, *optval; @@ -8333,7 +8339,6 @@ grab_windows(void) free(r); continue; } - free(r); state = getstate(wins[j]); manage = state != XCB_ICCCM_WM_STATE_WITHDRAWN; @@ -8342,6 +8347,7 @@ grab_windows(void) if (xcb_icccm_get_wm_transient_for_reply(conn, pc, &trans, NULL) && manage) manage_window(wins[j], mapped); + free(r); } free(qtr); }