diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-07-26 19:42:27 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-07-26 19:42:27 +0000 |
commit | 372d908cdf6cb8b6da3978805b6e704774ccec01 (patch) | |
tree | c5371e82357062db5ed403ac54e9750a205db8fc | |
parent | 89d654191ce1ba9c546014c5504937c867167265 (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.c | 37 |
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) |