3 # simple html form (eg for logins) filler (and manager) for uzbl.
4 # uses settings files like: $keydir/<domain>
5 # files contain lines like: <fieldname>: <value>
9 # edit: force editing the file (falls back to new if not found)
10 # new: start with a new file.
11 # load: try to load from file into form
13 # something else (or empty): if file not available: new, otherwise load.
15 keydir=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/forms
16 [ -d "`dirname $keydir`" ] || exit 1
17 [ -d "$keydir" ] || mkdir "$keydir"
31 [ -d $keydir ] || mkdir $keydir || exit 1
33 if [ "$action" != 'edit' -a "$action" != 'new' -a "$action" != 'load' ]
36 [[ -e $keydir/$domain ]] && action=load
37 elif [ "$action" == 'edit' ] && [[ ! -e $keydir/$domain ]]
41 domain=$(echo $url | sed -re 's|(http\|https)+://([A-Za-z0-9\.]+)/.*|\2|')
44 #regex='s|.*<input.*?name="([[:graph:]]+)".*?/>.*|\1: |p' # sscj's first version, does not work on http://wiki.archlinux.org/index.php?title=Special:UserLogin&returnto=Main_Page
45 regex='s|.*<input.*?name="([^"]*)".*|\1: |p' #works on arch wiki, but not on http://lists.uzbl.org/listinfo.cgi/uzbl-dev-uzbl.org TODO: improve
48 if [ "$action" = 'load' ]
50 [[ -e $keydir/$domain ]] || exit 2
51 gawk -F': ' '{ print "js document.getElementsByName(\"" $1 "\")[0].value = \"" $2 "\";"}' $keydir/$domain >> $fifo
53 if [ "$action" == 'new' ]
55 curl "$url" | grep '<input' | sed -nre "$regex" > $keydir/$domain
57 [[ -e $keydir/$domain ]] || exit 3 #this should never happen, but you never know.
58 $editor $keydir/$domain #TODO: if user aborts save in editor, the file is already overwritten