Annotation of 43BSD/contrib/icon/rt/cvpos.c, revision 1.1

1.1     ! root        1: #include "../h/rt.h"
        !             2: 
        !             3: /*
        !             4:  * cvpos - convert position to strictly positive position
        !             5:  *  given string or list length.
        !             6:  */
        !             7: 
        !             8: cvpos(pos, len)
        !             9: long pos;
        !            10: register int len;
        !            11:    {
        !            12:    DclSave
        !            13:    register int p;
        !            14: 
        !            15:    /*
        !            16:     * Fail if the position isn't in the range of an int. (?)
        !            17:     */
        !            18:    if ((long)(p = pos) != pos)
        !            19:       fail();
        !            20:    /*
        !            21:     * Fail if the position is off either end of the string.
        !            22:     */
        !            23:    if (p < -len || p > len + 1)
        !            24:       fail();
        !            25:    /*
        !            26:     * If the position is greater than zero, just return it.  Otherwise,
        !            27:     *  convert the zero/negative position.
        !            28:     */
        !            29:    if (pos > 0)
        !            30:       return (p);
        !            31:    return (len + p + 1);
        !            32:    }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.