Diff

## To Artifact [50cddefa11]:

 ``` 1 2 3 4 5 6 7 ``` ``` /^End of search list/{ in_searchpath = 0; } (in_searchpath == 1){ searchpath = \$0; sub(/^ */, "", searchpath); ``` ```> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ``` ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ``` ```# strtonum --- convert string to number # # Arnold Robbins, arnold@skeeve.com, Public Domain # February, 2004 function mystrtonum(str, ret, chars, n, i, k, c) { if (str ~ /^0[0-7]*\$/) { # octal n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) if ((k = index("01234567", c)) > 0) k-- # adjust for 1-basing in awk ret = ret * 8 + k } } else if (str ~ /^0[xX][0-9a-fA-f]+/) { # hexadecimal str = substr(str, 3) # lop off leading 0x n = length(str) ret = 0 for (i = 1; i <= n; i++) { c = substr(str, i, 1) c = tolower(c) if ((k = index("0123456789", c)) > 0) k-- # adjust for 1-basing in awk else if ((k = index("abcdef", c)) > 0) k += 9 ret = ret * 16 + k } } else if (str ~ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))\$/) { # decimal number, possibly floating point ret = str + 0 } else ret = "NOT-A-NUMBER" return ret } /^End of search list/{ in_searchpath = 0; } (in_searchpath == 1){ searchpath = \$0; sub(/^ */, "", searchpath); ``` ︙ ︙ ```62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ``` ```} END{ for (key in copy) { split(key, parts, SUBSEP); src = parts[1]; idx = strtonum(parts[2]); dest = copy[key]; destcopy[dest,idx] = src; destcopyfiles[dest] = 1; } for (destfile in destcopyfiles) { ``` ``` | ``` ```105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 ``` ```} END{ for (key in copy) { split(key, parts, SUBSEP); src = parts[1]; idx = mystrtonum(parts[2]); dest = copy[key]; destcopy[dest,idx] = src; destcopyfiles[dest] = 1; } for (destfile in destcopyfiles) { ``` ︙ ︙