summaryrefslogtreecommitdiff
path: root/util/sbase/tsort.1
diff options
context:
space:
mode:
Diffstat (limited to 'util/sbase/tsort.1')
-rw-r--r--util/sbase/tsort.170
1 files changed, 70 insertions, 0 deletions
diff --git a/util/sbase/tsort.1 b/util/sbase/tsort.1
new file mode 100644
index 00000000..b2e0c6ae
--- /dev/null
+++ b/util/sbase/tsort.1
@@ -0,0 +1,70 @@
+.Dd February 16, 2016
+.Dt TSORT 1
+.Os sbase
+.Sh NAME
+.Nm tsort
+.Nd topological sort
+.Sh SYNOPSIS
+.Nm
+.Op Ar file
+.Sh DESCRIPTION
+.Nm
+topologically sorts a graph.
+The graph is read either from
+.Ar file
+or from standard input.
+The result is not optimized for any particular usage.
+Loops are detected and reported to standard error, but does not stop the
+sort.
+.Pp
+The input is a list of edges (vertex pairs), where
+the edge is directed from the first vertex to the
+second vertex.
+.Sh OPTIONS
+None.
+.Sh EXIT STATUS
+.Bl -tag -width Ds
+.It 0
+The graph as successfully sorted.
+.It 1
+The graph as successfully sorted, but contained loops.
+.It > 1
+An error occurred.
+.El
+.Sh EXAMPLES
+.Bd -literal -offset left
+The input
+
+ a a
+ a b
+ a c
+ a c
+ a d
+ b c
+ c b
+ e f
+
+or equivalently
+
+ a a a b a c a c a d
+ b c c b e f
+
+represents the graph
+
+ ┌─┐
+ ↓ │
+ ┏━━━┓
+ ┌──────┃ a ┃──────┐
+ │ ┗━━━┛ │
+ │ │ │ │
+ ↓ ↓ ↓ ↓
+ ┏━━━┓───→┏━━━┓ ┏━━━┓
+ ┃ b ┃ ┃ c ┃ ┃ d ┃
+ ┗━━━┛←───┗━━━┛ ┗━━━┛
+
+ ┏━━━┓ ┏━━━┓
+ ┃ e ┃───→┃ f ┃
+ ┗━━━┛ ┗━━━┛
+.Ed
+.Sh STANDARDS
+POSIX.1-2013.