diff options
author | okan | 2015-06-30 18:44:29 +0000 |
---|---|---|
committer | okan | 2015-06-30 18:44:29 +0000 |
commit | 931b7e89b025a354af81008fc7f799903ea16bee (patch) | |
tree | 13493e742acccde35e1a35953be2f1980fb8acb4 /conf.c | |
parent | c945e52f347e972876d0ee015c01ef60d73bccfa (diff) | |
download | cwm-931b7e89b025a354af81008fc7f799903ea16bee.tar.gz |
keep cmdq sorted
Diffstat (limited to '')
-rw-r--r-- | conf.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: conf.c,v 1.188 2015/06/30 18:42:50 okan Exp $ + * $OpenBSD: conf.c,v 1.189 2015/06/30 18:44:29 okan Exp $ */ #include <sys/types.h> @@ -40,7 +40,7 @@ static void conf_unbind_mouse(struct conf *, struct binding *); int conf_cmd_add(struct conf *c, const char *name, const char *path) { - struct cmd *cmd; + struct cmd *cmd, *prev; cmd = xmalloc(sizeof(*cmd)); @@ -54,6 +54,14 @@ conf_cmd_add(struct conf *c, const char *name, const char *path) conf_cmd_remove(c, name); TAILQ_INSERT_TAIL(&c->cmdq, cmd, entry); + + /* keep queue sorted by name */ + while ((prev = TAILQ_PREV(cmd, cmd_q, entry)) && + (strcmp(prev->name, cmd->name) > 0)) { + TAILQ_REMOVE(&c->cmdq, cmd, entry); + TAILQ_INSERT_BEFORE(prev, cmd, entry); + } + return(1); } |