tst-getpw: Rewrite.
[platform/upstream/glibc.git] / scripts / soversions.awk
index 6207088..247f061 100644 (file)
@@ -1,38 +1,43 @@
-# awk script for shlib-versions.v.i -> soversions.i; see Makeconfig.
-
-# Only lines matching `config' (set with -v) are relevant to us.
-config !~ $1 { next }
+# awk script for shlib-versions.v -> soversions.i; see Makeconfig.
 
 # Obey the first matching DEFAULT line.
-$2 == "DEFAULT" {
-  if (!matched_default) {
-    matched_default = 1;
-    $1 = $2 = "";
-    default_setname = $0;
-  }
+$1 == "DEFAULT" {
+  $1 = "";
+  default_set[++ndefault_set] = $0;
   next
 }
 
 # Collect all lib lines before emitting anything, so DEFAULT
 # can be interspersed.
 {
-  lib = number = $2;
+  lib = number = $1;
   sub(/=.*$/, "", lib);
   sub(/^.*=/, "", number);
   if (lib in numbers) next;
   numbers[lib] = number;
-  if (NF > 2) {
-    $1 = $2 = "";
+  order[lib] = ++order_n;
+  if (NF > 1) {
+    $1 = "";
     versions[lib] = $0
   }
 }
 
 END {
   for (lib in numbers) {
-    set = (lib in versions) ? versions[lib] : default_setname;
-    if (set)
-      print lib, numbers[lib], set;
-    else
-      print lib, numbers[lib];
+    if (lib in versions)
+      set = versions[lib];
+    else {
+      set = "";
+      if (ndefault_set >= 1)
+       set = default_set[1];
+    }
+    line = set ? (lib FS numbers[lib] FS set) : (lib FS numbers[lib]);
+    if (!(lib in lineorder) || order[lib] < lineorder[lib]) {
+      lineorder[lib] = order[lib];
+      lines[lib] = "DEFAULT" FS line;
+    }
+  }
+  for (c in lines) {
+    print lines[c]
   }
 }