View Raw SPL
/* generate list of windows that meet winstatus */
_winstat(separator, winstat, addlabel)
{
        local i, s = "", p, q;

        if (argc < 3) addlabel = 0;
        if (argc < 2) winstat  = 9;
        if (argc < 1) separator = strescape("\n");

        for (i = 1; i <= numwindows; i++)
        {
                /* window */
                p = q = sprintf("W%d", i);

                if (addlabel < 0)
                {
                        /* numeric */
                        p = sprintf("%d", i);
                }
                else if (addlabel > 0)
                {
                        /* window label */
                        p = sprintf("%s: %s", p, eval(sprintf("getlabel(W%d)", i)));
                }

                /* check if winstatus TRUE */
                if (eval(sprintf("Winstatus(%s, %d)", q, winstat)) == 1)
                {
                        if (strlen(s) > 0) s = strcat(s, separator);
                        s = strcat(s, p);
                }
        }

        return(s);
}