tsort - Sorts an unordered list of ordered pairs (topological sort)
Interfaces documented on this reference page conform to industry standards as follows:
tsort: XPG4, XPG4-UNIX
Refer to the
reference page for more information
about industry standards and associated tags.
Pathname of a test file to be ordered.
The tsort command reads from file or standard input an unordered list of ordered pairs, builds an ordered list, and writes it to standard output.
[Compaq] For creating a subroutine library, do not use tsort; use the following command in its place:
% ar -ts file.a
The input file should contain pairs of nonempty strings separated by spaces. Pairs of different items indicate a relative order. Pairs of identical items indicate presence, but no relative order.
[Compaq] You can use tsort to sort the output of the lorder command.
[Compaq] If file contains an odd number of fields, tsort writes the error message:
tsort: Specify an even number of data fields.
variable does not affect the actions of
The following exit values are returned:
An error occurred.
To create a subroutine library, enter:
lorder charin.o scanfld.o scan.o scanln.o
| tsort | xargs ar qv libsubs.a
(Enter the command entirely on one line, not on two lines as shown above.)
This creates a subroutine library named libsubs.a that contains charin.o, scanfld.o, scan.o, and scanln.o. The ordering of the object modules in the library is important. The ld command requires each module to precede all the other modules that it calls or references. The lorder and tsort commands together add the subroutines to the library in the proper order.
Suppose that scan.o calls scanfld.o and scanln.o. scanfld.o also calls charin.o. First, the lorder command creates a list of pairs that shows these dependencies:
charin.o charin.o scanfld.o scanfld.o scan.o scan.o scanln.o scanln.o scanfld.o charin.o scanln.o charin.o scan.o scanfld.o
Next, the | (vertical bar) sends this list to the tsort command, which converts it into the ordering you need:
scan.o scanfld.o scanln.o charin.o
Note that each module precedes the module it calls. charin.o, which does not call another module, is last.
The second | (vertical bar) then sends this list to xargs, which constructs and runs the following ar command:
ar qv libsubs.a scan.o scanfld.o scanln.o charin.o
command creates the properly ordered library.
The following environment variables affect the execution of
Provides a default value for the internationalization variables
that are unset or null. If
is unset or null, the corresponding value from the default locale is used.
If any of the internationalization variables contain an invalid setting, the
utility behaves as if none of the variables had been defined.
If set to a non-empty string value, overrides the values of
all the other internationalization variables.
Determines the locale for the interpretation of sequences
of bytes of text data as characters (for example, single-byte as opposed to
multibyte characters in arguments).
Determines the locale for the format and contents of diagnostic
messages written to standard error.
Determines the location of message catalogues for the processing
Commands: ar(1), lorder(1), xargs(1)