]> git.draconx.ca Git - dxcommon.git/blobdiff - scripts/gen-options.awk
Avoid local array parameters in awk scripts.
[dxcommon.git] / scripts / gen-options.awk
index c6d361cd89159956c1ef71f948abcd7a845c4bbc..f2cdfe7825ab6f600334a7bb76fbe32408b6f1a4 100755 (executable)
@@ -458,25 +458,28 @@ function output_packed_macros(i, tmp, accum, max, totalbits)
 # placing them into dst[0] ... dst[n].
 #
 # Returns the number of elements.
-function bucketsort(dst, src, buckets, max, count, i, t)
+function bucketsort(dst, src, max, count, i, t)
 {
+  # Note: ULTRIX 4.5 nawk does not support local array parameters
+  split("", bucketsort_buckets);
+
   for (t in src) {
     i = length(src[t])
     if (i > max) { max = i }
-    buckets[i]++
+    bucketsort_buckets[i]++
   }
 
   for (i = max; i > 0; i--) {
-    if (i in buckets) {
-      t = buckets[i]
-      buckets[i] = count
+    if (i in bucketsort_buckets) {
+      t = bucketsort_buckets[i]
+      bucketsort_buckets[i] = count
       count += t
     }
   }
 
   for (t in src) {
     i = length(t = src[t])
-    dst[buckets[i]++] = t
+    dst[bucketsort_buckets[i]++] = t
   }
 
   return count
@@ -505,15 +508,16 @@ function to_enum(lopt)
 # For optimal results, strings should be added in descending length order.
 function add_to_strtab(strtab, str, offsets, pos)
 {
-    if ( (pos = index(strtab, str " ") - 1) < 0) {
-      pos = length(strtab)
-      if (pos) {
-        strtab = strtab " " str
-        pos++
-      } else {
-        strtab = strtab str
-      }
+  if ( (pos = index(strtab, str " ") - 1) < 0) {
+    pos = length(strtab)
+    if (pos) {
+      strtab = strtab " " str
+      pos++
+    } else {
+      strtab = strtab str
     }
-    offsets[str] = pos
-    return strtab
+  }
+
+  offsets[str] = pos
+  return strtab
 }