Re: Change to "kludge option processing" in /bin/ps

From: Cyrille Lefevre (clefevre-lists_at_9online.fr)
Date: 05/31/04

  • Next message: Brian Feldman: "Re: ether_crc32_[bl]e()"
    To: <arch@freebsd.org>, "Garance A Drosihn" <drosih@rpi.edu>
    Date: Mon, 31 May 2004 17:08:47 +0200
    
    

    "Garance A Drosihn" <drosih@rpi.edu> wrote:
    > After staring at the kludge-option processing in `ps' for awhile, I
    > found enough edge-cases where it simply did not work "right" (for my
    > definition of "right", at keast...), so I rewrote it. As part of that,
    > I also removed the ancient "BACKWARD_COMPATIBILITY" compile-time
    > option, where:
    > ps -options arg1 arg2
    > (with no '-' on "arg1" and "arg2") was treated as:
    > ps -options -N arg1 -M arg2

    how about to keep the historical compability if there is no `-' and
    to get rid of it if there is a trailing `-' ?

    > I did this because I have often been puzzled/annoyed when I type:
    > ps 12
    > to get process 12, and then realize I wanted it shown in a
    > different format so I type:
    > ps -u 12

    well, this should be fixed, but w/o breaking the historical compability.

    > and I get a completely different list of processes, or I type:
    > ps 12 34

    old plain ps does not support multiple process IDs, the newer one would,
    at most, accept "ps '12 34'" or "ps '12,34'", but not "ps 12 34".

    > and I only see process 12, or I type
    > ps 12 34 56
    > and get the error message:
    > ps: 56: No such file or directory
    > This BACKWARD_COMPATIBILITY is not documented in the usage()
    > or the man page, so I'd like to replace it.

    this is historical and should not be touch even if not documented,
    or better, this has to be documented.

    > So, I changed `ps' to check for any additional arguments after
    > processing all '-'-options, and if those start with a digit then
    > `ps' will try to use the entire argument as a pid or pidlist.
    > If an extra argument does not start with a digit, then `ps' just
    > prints an error and exits.

    so, the historical behaviour of ps will be broken :(

    > I want to do more testing on this before committing, but I thought
    > that all this was enough of a change that I should also give people
    > a chance to scream before I commit it. Also, I'm not sure if I
    > might have clobbered some subtle aspect of the kludge processing.

    before to commit new changes, think about how to fix the following ones :)

    # ps -p ,,
      PID TT STAT TIME COMMAND
        0 ?? ZW 0:00.00 (sshd)
    # psx -p ,,
    psx: no process id specified

    # ps -p 1,
      PID TT STAT TIME COMMAND
        0 ?? ZW 0:00.00 (sshd)

    # psx -p 1,
    psx: no process id specified
      PID TTY TIME COMMAND
        1 ?? 00:00:07 init

    PS : as you can see, the changes I proposed does work in such cases :P

    also, what about the proposed changes I have submitted ?

    http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/65803

    the next step will be the dynamic field sizing and probably
    the support of "-k sortlist" option, both from NetBSD.

    > If anyone wants to try the update, it is available at:
    >
    > http://people.freebsd.org/~gad/ps-kludge.diff
    >
    > [disclaimer: at the moment it's only had about 15 minutes of
    > testing, but I *think* this is about the way I want it to work]
    >
    > Assuming there aren't any major objections to these ideas, I plan
    > to do some more testing on this and commit it next weekend.

    as said before, I dislike the change as proposed, but would accept it
    w/ a little more work.

    Cyrille Lefevre.

    -- 
    home: mailto:cyrille.lefevre@laposte.net
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
    

  • Next message: Brian Feldman: "Re: ether_crc32_[bl]e()"