Differences between version 2 and previous revision of flag.sh.
Other diffs: Previous Major Revision, Previous Author
Newer page: | version 2 | Last edited on Friday, 14 November 2008 11:39:27 | by CyberLeo | Revert |
Older page: | version 1 | Last edited on Friday, 14 November 2008 11:38:17 | by CyberLeo | Revert |
@@ -45,43 +45,42 @@
v2.incomplete
<verbatim>
#!/bin/sh
-firstchar() {
- eval
$(echo
-en "${data}" | sed
-e 's/^\
(.\)\(.*\
)$
/char="\1" data="\2"
/g
')
-}
+# Places for flags:
+#
$HOME/.flag
-cache <
- Autogenerated flag
(refreshed when hostname changes
)
+#
/etc
/flag <- Site admin
's flag
+# $HOME/.flag <- Local user's flag
+# Check them in that order.
-hexdec
() {
- if [ -z "${1}" ]
- then
- echo "0"
- return
- fi
- echo $(( 0x${1} + 0 ))
+hash_string
(){
+ # Hash the passed string into 8 hex characters
}
-flag
(){
- if [ -z
"${1
}" ]
+flagcache
(){
+ eval $(cat "${HOME}/.flag-cache")
+ # Now have flag_hex and flag_host
+ myhost="$(/bin/hostname)"
+ if [ "${flag_host}" != "${myhost
}" ]
then
- echo "Usage:
flag 'hexcode' [symbol]
"
- echo "Generates an ANSI color
flag using the specified
hex codes
"
- echo
"Uses the optional symbol (or
.) to draw the
flag"
- return
+ flag_hex="$(hash_string "${myhost}")
"
+ echo "flag_host='${myhost}'\nflag_
hex='${flag_hex}'
" >
"${HOME}/
.flag-cache
"
fi
- data="${1}"
- sym="${2}"
- [ -z "${sym}" ] && sym=" "
- while [ -n "${data}" ]
- do
- firstchar
- ord=$(hexdec "${char}")
- bright="0"
- [ "$(( ${ord} & 8 ))" -gt 0 ] && bright="1"
- fore="3$(( ${ord} & 7 ))"
- back="4$(( ${ord} & 7 ))"
- printf "\[\033[%s;%s;%s;7m\]%s" "${bright}" "${fore}" "${back}" "${sym}"
- done
- printf "\[\033[0m\]"
}
-[ -f "/etc/
flag" ] && flag "$(cat /etc/flag)"
+if
[ -f "${HOME}
/.
flag" ]
+then
+ flag_hex="$(cat "${HOME}/.flag")"
+fi
+
+if [ -z "${flag_hex}"
&& -f "/etc/
flag" ]
+then
+ flag_hex=
"$(cat "
/etc/flag"
)"
+fi
+
+if [ -z "${flag_hex}" ]
+then
+ flagcache
+fi
+
+# Now we definitely have flag_hex
</verbatim>
version 2
v1
#!/bin/sh firstchar() { eval $(echo -en "${data}" | sed -e 's/^\(.\)\(.*\)$/char="\1" data="\2"/g') } hexdec() { if [ -z "${1}" ] then echo "0" return fi echo $(( 0x${1} + 0 )) } flag(){ if [ -z "${1}" ] then echo "Usage: flag 'hexcode' [symbol]" echo "Generates an ANSI color flag using the specified hex codes" echo "Uses the optional symbol (or .) to draw the flag" return fi data="${1}" sym="${2}" [ -z "${sym}" ] && sym=" " while [ -n "${data}" ] do firstchar ord=$(hexdec "${char}") bright="0" [ "$(( ${ord} & 8 ))" -gt 0 ] && bright="1" fore="3$(( ${ord} & 7 ))" back="4$(( ${ord} & 7 ))" printf "\[\033[%s;%s;%s;7m\]%s" "${bright}" "${fore}" "${back}" "${sym}" done printf "\[\033[0m\]" } [ -f "/etc/flag" ] && flag "$(cat /etc/flag)"
v2.incomplete
#!/bin/sh # Places for flags: # $HOME/.flag-cache <- Autogenerated flag (refreshed when hostname changes) # /etc/flag <- Site admin's flag # $HOME/.flag <- Local user's flag # Check them in that order. hash_string(){ # Hash the passed string into 8 hex characters } flagcache(){ eval $(cat "${HOME}/.flag-cache") # Now have flag_hex and flag_host myhost="$(/bin/hostname)" if [ "${flag_host}" != "${myhost}" ] then flag_hex="$(hash_string "${myhost}")" echo "flag_host='${myhost}'\nflag_hex='${flag_hex}'" > "${HOME}/.flag-cache" fi } if [ -f "${HOME}/.flag" ] then flag_hex="$(cat "${HOME}/.flag")" fi if [ -z "${flag_hex}" && -f "/etc/flag" ] then flag_hex="$(cat "/etc/flag")" fi if [ -z "${flag_hex}" ] then flagcache fi # Now we definitely have flag_hex