Changeset 169 for trunk


Ignore:
Timestamp:
2006-09-16T03:09:22+02:00 (8 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.