Changeset 169


Ignore:
Timestamp:
2006-09-16T03:09:22+02:00 (9 years ago)
Author:
moo
Message:

comments/loops improved in mkstructinfo while avoiding gawk assertion bug with LANG=C

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/config.m4

    r148 r169  
    5959
    6060  AC_PATH_PROGS([AWK], [gawk awk])
     61  dnl clean locale for gawk 3.1.5 assertion bug
     62  if echo | LANG=C "$AWK" -- '' > /dev/null 2>&1 ; then
     63    AWK="LANG=C $AWK"
     64  else
     65    if echo | /usr/bin/env - "$AWK" -- '' > /dev/null 2>&1 ; then
     66      AWK="/usr/bin/env - $AWK"
     67    fi
     68  fi
    6169  PHP_SUBST([AWK])
    6270  AC_PATH_PROGS([M4], [m4])
  • trunk/mkstructinfo.awk

    r52 r169  
    44    brace = 0;
    55    buffer_len = 0;
     6}
     7/^#/ {
     8    next;
    69}
    710/^}.*;/ {
     
    5154{
    5255    if (brace == 1 && instruct) {
     56        gsub(/\/\*(.+?)\*\//, " "); # removes one line comment
    5357        sub(/.*[{}]/, "");
    5458        gsub(/\[[^\]]+\]/, ""); # ignore [...]
     
    6973                next;
    7074            }
     75            # unsigned int *a,  b; int c;
    7176            gsub(/[*]/, " ");
     77            # unsigned int a,  b; int c;
    7278            gsub(/ +/, " ");
     79            # unsigned int a, b; int c;
    7380            gsub(/ *[,;]/, ";");
     81            # unsigned int a; b; int c;
    7482            if (!match($0, /;/)) {
    7583                next;
    7684            }
    7785            split($0, chunks, ";");
    78             # get var of "int *var, var;" etc
    79             for (i in chunks) {
     86            # [unsigned int a, b, c]
     87
     88            for (i = 1; i in chunks; i ++) {
    8089                if (chunks[i] == "") {
    8190                    delete chunks[i];
     
    8392                }
    8493                split(chunks[i], pieces, " ");
     94                # [unsigned, int, a]
     95                # [b]
     96                # [c]
    8597
    86                 for (j in pieces) {
     98                last_piece = "";
     99                for (j = 1; j in pieces; j ++) {
    87100                    last_piece = pieces[j];
    88                     delete pieces[i];
     101                    delete pieces[j];
    89102                }
    90103                if (last_piece == "") {
    91104                    print "=====" chunks[i];
    92105                }
     106                # a
     107                # b
     108                # c
     109
    93110                buffer[buffer_len] = last_piece;
    94111                buffer_len ++;
    95                 delete chunks[i];
     112                delete chunks[i]
    96113            }
     114            last_piece = "";
    97115        }
    98116        next;
Note: See TracChangeset for help on using the changeset viewer.