int scan_subsection(char *s, int l) {
    int n, i, line_end, line_start, in_indent=1, ilevel=0, plevel=0;
    ss *thess= NULL; // A simple stack.
    for (n= 0;n<l;++n) {
        if (in_indent) {
            if (s[n] != ' ') {
                in_indent= 0;
                line_start= n;
            }
            else {
                ++ilevel;
            }
        }
        if (s[n] == '\n') {
            if (!in_indent) {
                line_end= n;
                in_indent= 1;
                if (ilevel > plevel) {
                    thess= ss_push(plevel,thess);
                    printf(" \173 \057\057 %d\n",ilevel);
                }
                else if (ilevel < plevel) {
                    printf("\n");
                    while (thess && ilevel < plevel) {
                        spacesx(ss_val(thess));
                        printf("\175 \057\057 + %d\n",plevel);
                        plevel= ss_val(thess);
                        thess= ss_pop(thess);
                    }
                    if (plevel != ilevel) {
                        printf("Indentation error at %d!\n",line_start);
                    }
                }
                else {
                    printf("\n");
                }
                spacesx(ilevel);
                for (i=line_start;i<line_end;++i) {
                    printf("%c",s[i]);
                }
                plevel= ilevel;
                ilevel= 0;
            }
        }
    }
    while (thess) {
        printf("\n");
        spacesx(ss_val(thess));
        printf("\175 \057\057  %d wrap-up\n",ss_val(thess));
        thess= ss_pop(thess);
    }
    free(thess);
    return -1;
}
