diff options
author | gcc <gcc@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2006-08-17 01:18:26 +0000 |
---|---|---|
committer | gcc <gcc@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2006-08-17 01:18:26 +0000 |
commit | 15f34685e7a9b5caf761af2ebf6afa20438d440b (patch) | |
tree | dc04ce3cdf040f198743c15b64557824de174680 /libc/manual/tsort.awk | |
parent | 1e848e0e775a36f6359161f5deb890942ef42ff3 (diff) |
Import glibc-mainline for 2006-08-16
git-svn-id: svn://svn.eglibc.org/fsf/trunk@4 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/manual/tsort.awk')
-rw-r--r-- | libc/manual/tsort.awk | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libc/manual/tsort.awk b/libc/manual/tsort.awk new file mode 100644 index 000000000..8e77ffe4b --- /dev/null +++ b/libc/manual/tsort.awk @@ -0,0 +1,46 @@ +#! /usr/bin/awk -f +# Generate topologically sorted list of manual chapters. +# (C) Copyright 1998, 1999 Free Software Foundation, Inc. +# Written by Ulrich Drepper <drepper@cygnus.com>, 1998. + +BEGIN { + cnt = 0 + dnt = 0 +} +{ + to[dnt] = $1 + from[dnt] = $2 + ++dnt + all[cnt++] = $1 +} +END { + do { + moved = 0 + for (i = 0; i < dnt; ++i) { + for (j = 0; j < cnt; ++j) { + if (all[j] == from[i]) { + for (k = j + 1; k < cnt; ++k) { + if (all[k] == to[i]) { + break; + } + } + if (k < cnt) { + for (l = k - 1; l >= j; --l) { + all[l + 1] = all[l] + } + all[j] = to[i] + break; + } + } + } + if (j < cnt) { + moved = 1 + break + } + } + } while (moved) + + for (i = 0; i < cnt; ++i) { + print all[i]; + } +} |