mikshaw
  
 
 
  
 
 
Group: Members 
Posts: 4856 
Joined: July 2004 | 
  | 
Posted: Oct. 20 2006,16:46 | 
   | 
 
 
  
| Code Sample  |  #!/bin/bash
  # uci.dmenu, mikshaw 2006 # Uses dmenu (dwm.suckless.org) to display and [u]mount uci packages # # changelog (yyyy.mm.dd) #  2006.10.20: Added optional check for mydsl boot code and mydsl commandline param #              Exit if PACKAGELIST is empty #              Added non-recursive search option #  2006.10.19: Stripped prefix and suffix from packagename display
  PREFIX="/home/dsl/mydsl" # where are your uci files DMENU='dmenu -font snap -normbg #000000 -normfg #666666 -selbg #222222 -selfg #888888' # wmiimenu works too NOR="" 
  for i in $@; do case $1 in h|-h|-help|--help) cat << EOF   Options:     -b, b      Use "mydsl=" boot option, if available     -n, n      No recursive search     directory  Path to a MyDSL directory EOF exit 0 ;; b|-b)  # use "mydsl=" boot option for PREFIX (overrides the PREFIX variable above) # based on Robert's mydsl code in /etc/init.d/dsl-config, minus the automounting   source /etc/init.d/dsl-functions   CMDLINE=`cat /proc/cmdline`   MYDSL=`getbootparam mydsl`   MYDSL_DEVICE="${MYDSL%%/*}"   MYDSL_DIR="${MYDSL#*/}"   if [ "$MYDSL_DEVICE" = "$MYDSL_DIR" ]; then MYDSL_DIR=""; fi   find_mountpoint "$MYDSL_DEVICE"   [ -d "$MOUNTPOINT/$MYDSL_DIR" ] && PREFIX="$MOUNTPOINT/$MYDSL_DIR"   shift ;; n|-n)   NOR=1   shift ;; *)   [ -d "$1" ] && PREFIX="$1"   shift ;; esac done
  if [ -n "$NOR" ]; then FIND="ls $PREFIX/*.uci" else FIND="find $PREFIX/ -name *.uci" fi PACKAGELIST=`$FIND 2>/dev/null` # find all *.uci files in $PREFIX #PACKAGELIST=`find $PREFIX/ -name "*.uci" 2>/dev/null` # find all *.uci files in $PREFIX [ -z "$PACKAGELIST" ]  && exit
  showmenu() { for i in $PACKAGELIST; do TMPNAME=`basename $i .uci` # shows only the package name for a clean, compact display if grep "$i " /etc/mtab &>/dev/null; then   echo "*$TMPNAME" # asterisk on mounted files else   echo "$TMPNAME" fi done | sort | $DMENU }
  PKG=`showmenu|sed 's/\*//'` # run showmenu() and remove asterisks from stdout for i in $PACKAGELIST; do # find the selected item string in the list  if [ "`basename $i .uci`" == "$PKG" ]; then FNAME="$i"; break; fi done [ -r "$FNAME" ] && mydsl-load "$FNAME"
  |  
  EDIT: added options for non-recursive search and use of "mydsl=" boot code 
  -------------- http://www.tldp.org/LDP/intro-linux/html/index.html
 |