xref: /freebsd/stand/forth/version.4th (revision 95eb4b873b6a8b527c5bd78d7191975dfca38998)
1\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
2\ All rights reserved.
3\
4\ Redistribution and use in source and binary forms, with or without
5\ modification, are permitted provided that the following conditions
6\ are met:
7\ 1. Redistributions of source code must retain the above copyright
8\    notice, this list of conditions and the following disclaimer.
9\ 2. Redistributions in binary form must reproduce the above copyright
10\    notice, this list of conditions and the following disclaimer in the
11\    documentation and/or other materials provided with the distribution.
12\
13\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16\ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23\ SUCH DAMAGE.
24\
25
26marker task-version.4th
27
28vocabulary version-processing
29only forth also version-processing definitions
30
31variable versionX
32variable versionY
33
34\ Default $loader_version value if not overridden or using tribute screen
35: str_loader_version ( -- C-ADDR/U|-1 ) -1 ;
36
37\ Initialize text placement to defaults
3880 versionX !	\ NOTE: this is the ending column (text is right-justified)
3924 versionY !
40
41only forth definitions also version-processing
42
43: print_version ( -- )
44
45	\ Get the text placement position (if set)
46	s" loader_version_x" getenv dup -1 <> if
47		?number drop versionX ! -1
48	then drop
49	s" loader_version_y" getenv dup -1 <> if
50		?number drop versionY ! -1
51	then drop
52
53	\ Default version if none was set
54	s" loader_version" getenv dup -1 = if
55		drop
56		\ Use above default if no logo is requested
57		s" loader_logo" getenv dup -1 = if
58			drop str_loader_version
59		else
60			\ For tributes, do nothing (defer to logo-*.4th)
61			2dup s" tribute" compare-insensitive 0= if
62				2drop
63				s" logo" sfind if
64					drop exit \ see logo-tribute.4th
65				else
66					drop str_loader_version
67				then
68			else 2dup s" tributebw" compare-insensitive 0= if
69				2drop
70				s" logo" sfind if
71					drop exit \ see logo-tributebw.4th
72				else
73					drop str_loader_version
74				then
75			else
76				2drop str_loader_version
77			then then
78		then
79	then dup -1 = if
80		drop exit \ default version (above) is disabled
81	then
82
83	\ Right justify the text
84	dup versionX @ swap - versionY @ at-xy
85
86	\ Print the version (optionally in cyan)
87	loader_color? dup ( c-addr/u -- c-addr/u bool bool )
88	if 6 fg then
89	-rot type
90	if me then
91
92	0 25 at-xy
93;
94
95only forth definitions
96