(linenum→info "unix/slp.c:2238")

glibc/2.7/manual/tsort.awk

    1: #! /usr/bin/awk -f
    2: # Generate topologically sorted list of manual chapters.
    3: # (C) Copyright 1998, 1999 Free Software Foundation, Inc.
    4: # Written by Ulrich Drepper <drepper@cygnus.com>, 1998.
    5: 
    6: BEGIN {
    7:   cnt = 0
    8:   dnt = 0
    9: }
   10: {
   11:   to[dnt] = $1
   12:   from[dnt] = $2
   13:   ++dnt
   14:   all[cnt++] = $1
   15: }
   16: END {
   17:   do {
   18:     moved = 0
   19:     for (i = 0; i < dnt; ++i) {
   20:       for (j = 0; j < cnt; ++j) {
   21:         if (all[j] == from[i]) {
   22:           for (k = j + 1; k < cnt; ++k) {
   23:             if (all[k] == to[i]) {
   24:               break;
   25:             }
   26:           }
   27:           if (k < cnt) {
   28:             for (l = k - 1; l >= j; --l) {
   29:               all[l + 1] = all[l]
   30:             }
   31:             all[j] = to[i]
   32:             break;
   33:           }
   34:         }
   35:       }
   36:       if (j < cnt) {
   37:         moved = 1
   38:         break
   39:       }
   40:     }
   41:   } while (moved)
   42: 
   43:   for (i = 0; i < cnt; ++i) {
   44:     print all[i];
   45:   }
   46: }
Syntax (Markdown)