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
