PageRenderTime 53ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/stand/forth/version.4th

https://bitbucket.org/freebsd/freebsd-base
Forth | 96 lines | 83 code | 13 blank | 0 comment | 6 complexity | de4e0513eea1aa039128153f555a5995 MD5 | raw file
  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. \ $FreeBSD$
  26. marker task-version.4th
  27. vocabulary version-processing
  28. only forth also version-processing definitions
  29. variable versionX
  30. variable versionY
  31. \ Default $loader_version value if not overridden or using tribute screen
  32. : str_loader_version ( -- C-ADDR/U|-1 ) -1 ;
  33. \ Initialize text placement to defaults
  34. 80 versionX ! \ NOTE: this is the ending column (text is right-justified)
  35. 24 versionY !
  36. only forth definitions also version-processing
  37. : print_version ( -- )
  38. \ Get the text placement position (if set)
  39. s" loader_version_x" getenv dup -1 <> if
  40. ?number drop versionX ! -1
  41. then drop
  42. s" loader_version_y" getenv dup -1 <> if
  43. ?number drop versionY ! -1
  44. then drop
  45. \ Default version if none was set
  46. s" loader_version" getenv dup -1 = if
  47. drop
  48. \ Use above default if no logo is requested
  49. s" loader_logo" getenv dup -1 = if
  50. drop str_loader_version
  51. else
  52. \ For tributes, do nothing (defer to logo-*.4th)
  53. 2dup s" tribute" compare-insensitive 0= if
  54. 2drop
  55. s" logo" sfind if
  56. drop exit \ see logo-tribute.4th
  57. else
  58. drop str_loader_version
  59. then
  60. else 2dup s" tributebw" compare-insensitive 0= if
  61. 2drop
  62. s" logo" sfind if
  63. drop exit \ see logo-tributebw.4th
  64. else
  65. drop str_loader_version
  66. then
  67. else
  68. 2drop str_loader_version
  69. then then
  70. then
  71. then dup -1 = if
  72. drop exit \ default version (above) is disabled
  73. then
  74. \ Right justify the text
  75. dup versionX @ swap - versionY @ at-xy
  76. \ Print the version (optionally in cyan)
  77. loader_color? dup ( c-addr/u -- c-addr/u bool bool )
  78. if 6 fg then
  79. -rot type
  80. if me then
  81. 0 25 at-xy
  82. ;
  83. only forth definitions