Hi, Sort the ps(1) STAT characters alphabetically like in the man page. Note that the 'else' I have removed is redundant.
ok? bluhm Index: bin/ps/print.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/bin/ps/print.c,v retrieving revision 1.80 diff -u -p -r1.80 print.c --- bin/ps/print.c 7 Feb 2022 22:57:47 -0000 1.80 +++ bin/ps/print.c 8 Feb 2022 19:21:07 -0000 @@ -262,35 +262,35 @@ printstate(const struct kinfo_proc *kp, } cp++; + if ((kp->p_psflags & PS_CONTROLT) && kp->p__pgid == kp->p_tpgid) + *cp++ = '+'; if (kp->p_nice < NZERO) *cp++ = '<'; - else if (kp->p_nice > NZERO) - *cp++ = 'N'; - if (kp->p_psflags & PS_TRACED) - *cp++ = 'X'; + if ((flag & P_SYSTEM) == 0 && + kp->p_rlim_rss_cur / 1024 < pgtok(kp->p_vm_rssize)) + *cp++ = '>'; + if (kp->p_eflag & EPROC_CHROOT) + *cp++ = 'c'; if ((kp->p_psflags & (PS_EXITING | PS_ZOMBIE)) == PS_EXITING) *cp++ = 'E'; - if (kp->p_psflags & PS_ISPWAIT) - *cp++ = 'V'; if (flag & P_SYSTEM) *cp++ = 'K'; - if ((flag & P_SYSTEM) == 0 && - kp->p_rlim_rss_cur / 1024 < pgtok(kp->p_vm_rssize)) - *cp++ = '>'; - if (kp->p_eflag & EPROC_SLEADER) - *cp++ = 's'; - if ((kp->p_psflags & PS_CONTROLT) && kp->p__pgid == kp->p_tpgid) - *cp++ = '+'; + if (kp->p_nice > NZERO) + *cp++ = 'N'; if (kp->p_psflags & PS_PLEDGE) *cp++ = 'p'; + if (kp->p_eflag & EPROC_SLEADER) + *cp++ = 's'; if (kp->p_eflag & EPROC_UNVEIL) { if (kp->p_eflag & EPROC_LKUNVEIL) *cp++ = 'U'; else *cp++ = 'u'; } - if (kp->p_eflag & EPROC_CHROOT) - *cp++ = 'c'; + if (kp->p_psflags & PS_ISPWAIT) + *cp++ = 'V'; + if (kp->p_psflags & PS_TRACED) + *cp++ = 'X'; *cp = '\0'; if (state == 'R' && kp->p_cpuid != KI_NOCPU) {