Annotation of researchv10no/cmd/trace/trace7.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include "trace.h"
        !             3: #include "trace.d"
        !             4: 
        !             5: struct Swiffle *slist, *slast, *flast;
        !             6: int nswiff = 0, fswiff = 0;
        !             7: 
        !             8: struct Swiffle *
        !             9: unswiffle(avoid)
        !            10:        struct STATE *avoid;
        !            11: {
        !            12:        register struct Swiffle *try;
        !            13:        register int i;
        !            14:        struct Swiffle *result = (struct Swiffle *) NULL;
        !            15: 
        !            16:        for (i = nswiff, try = slist; i > 0; i--, try = try->next)
        !            17:                if (try->st != avoid)
        !            18:                {       result = try;
        !            19:                        getput(try, i);
        !            20:                        break;
        !            21:                }
        !            22: 
        !            23:        return result;
        !            24: }
        !            25: 
        !            26: swiffle(this, that)
        !            27:        struct STATE *this;
        !            28:        struct VISIT *that;
        !            29: {
        !            30:        struct Swiffle *getswiff(), *try;
        !            31: 
        !            32:        try = getswiff();
        !            33:        try->st = this;
        !            34:        try->vi = that;
        !            35: 
        !            36:        if (nswiff++ == 0)
        !            37:                slist = try;
        !            38:        else
        !            39:        {       slast->next = try;
        !            40:                try->last = slast;
        !            41:        }
        !            42:        slast = try;
        !            43: }
        !            44: 
        !            45: getput(try, n)
        !            46:        struct Swiffle *try;
        !            47: {
        !            48: /* unlink from slist: */
        !            49:        if (try == slist)
        !            50:                slist = try->next;
        !            51:        else
        !            52:                try->last->next = try->next;
        !            53: 
        !            54:        if (n > 1)
        !            55:                try->next->last = try->last;
        !            56: 
        !            57:        if (try == slast)
        !            58:        {       if (try == slist)
        !            59:                        slast = (struct Swiffle *) NULL;
        !            60:                else
        !            61:                        slast = try->last;
        !            62:        }
        !            63:        nswiff--;
        !            64: 
        !            65: /* relink in flist: */
        !            66: 
        !            67:        try->next = (struct Swiffle *) NULL;
        !            68: 
        !            69:        if (fswiff++ == 0)
        !            70:                try->last = (struct Swiffle *) NULL;
        !            71:        else
        !            72:        {       flast->next = try;
        !            73:                try->last = flast;
        !            74:        }
        !            75:        flast = try;
        !            76: }
        !            77: 
        !            78: struct Swiffle *
        !            79: getswiff()
        !            80: {      struct Swiffle *try;
        !            81:        char *Smalloc();
        !            82: 
        !            83:        if (fswiff == 0)
        !            84:                try = (struct Swiffle *) Smalloc(sizeof(struct Swiffle));
        !            85:        else
        !            86:        {       fswiff--;
        !            87:                try = flast;
        !            88:                if ((flast = try->last) != NULL)
        !            89:                        flast->next = (struct Swiffle *) NULL;
        !            90:        }
        !            91:        try->next = try->last = (struct Swiffle *) NULL;
        !            92: 
        !            93:        return try;
        !            94: }

unix.superglobalmegacorp.com

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