summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2009-07-26 19:42:27 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2009-07-26 19:42:27 +0000
commit372d908cdf6cb8b6da3978805b6e704774ccec01 (patch)
treec5371e82357062db5ed403ac54e9750a205db8fc
parent89d654191ce1ba9c546014c5504937c867167265 (diff)
Go to the next if the current best process is replaced, don't keep comparing it
with itself. Also fix process name comparison.
-rw-r--r--usr.bin/tmux/procname.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/usr.bin/tmux/procname.c b/usr.bin/tmux/procname.c
index e7f86885a41..dcc10f8433c 100644
--- a/usr.bin/tmux/procname.c
+++ b/usr.bin/tmux/procname.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: procname.c,v 1.2 2009/06/26 10:55:37 nicm Exp $ */
+/* $OpenBSD: procname.c,v 1.3 2009/07/26 19:42:26 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -82,41 +82,48 @@ retry:
continue;
}
- if (is_runnable(p) && !is_runnable(bestp))
+ if (is_runnable(p) && !is_runnable(bestp)) {
bestp = p;
- else if (!is_runnable(p) && is_runnable(bestp))
+ continue;
+ } else if (!is_runnable(p) && is_runnable(bestp))
continue;
- if (!is_stopped(p) && is_stopped(bestp))
+ if (!is_stopped(p) && is_stopped(bestp)) {
bestp = p;
- else if (is_stopped(p) && !is_stopped(bestp))
+ continue;
+ } else if (is_stopped(p) && !is_stopped(bestp))
continue;
- if (p->p_estcpu > bestp->p_estcpu)
+ if (p->p_estcpu > bestp->p_estcpu) {
bestp = p;
- else if (p->p_estcpu < bestp->p_estcpu)
+ continue;
+ } else if (p->p_estcpu < bestp->p_estcpu)
continue;
- if (p->p_slptime < bestp->p_slptime)
+ if (p->p_slptime < bestp->p_slptime) {
bestp = p;
- else if (p->p_slptime > bestp->p_slptime)
+ continue;
+ } else if (p->p_slptime > bestp->p_slptime)
continue;
- if (p->p_flag & P_SINTR && !(bestp->p_flag & P_SINTR))
+ if (p->p_flag & P_SINTR && !(bestp->p_flag & P_SINTR)) {
bestp = p;
- else if (!(p->p_flag & P_SINTR) && bestp->p_flag & P_SINTR)
+ continue;
+ } else if (!(p->p_flag & P_SINTR) && bestp->p_flag & P_SINTR)
continue;
if (LIST_FIRST(&p->p_children) == NULL &&
- LIST_FIRST(&bestp->p_children) != NULL) /* XXX ugh */
+ LIST_FIRST(&bestp->p_children) != NULL) { /* XXX ugh */
bestp = p;
- else if (LIST_FIRST(&p->p_children) != NULL &&
+ continue;
+ } else if (LIST_FIRST(&p->p_children) != NULL &&
LIST_FIRST(&bestp->p_children) == NULL)
continue;
- if (strcmp(p->p_comm, p->p_comm) < 0)
+ if (strcmp(p->p_comm, bestp->p_comm) < 0) {
bestp = p;
- else if (strcmp(p->p_comm, p->p_comm) > 0)
+ continue;
+ } else if (strcmp(p->p_comm, bestp->p_comm) > 0)
continue;
if (p->p_pid > bestp->p_pid)