Note: You are viewing an old version of this page. View the current version.

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