# HG changeset patch # User Aleksej Bobylev # Date 1417098389 -7200 # Node ID 8a1ed3d7ebc27deab6b89bcff11902aaa2b5bd46 # Parent 140b3dc5e90b0ba32d2d0ebc1e66dcd0033bb239 libpkg.sh: unset TAGS too in unset_receipt(); and code reformatting diff -r 140b3dc5e90b -r 8a1ed3d7ebc2 rootfs/lib/libtaz.sh --- a/rootfs/lib/libtaz.sh Fri Oct 17 15:27:22 2014 +0200 +++ b/rootfs/lib/libtaz.sh Thu Nov 27 16:26:29 2014 +0200 @@ -31,7 +31,7 @@ do case "$opt" in --*=*) export "${opt#--}" ;; - --*) export ${opt#--}="yes" ;; + --*) export ${opt#--}="yes" ;; esac done [ "$HTTP_REFERER" ] && output="html" @@ -70,8 +70,8 @@ local sepchar="=" [ "$HTTP_REFERER" ] && local sepchar="
" case $output in - raw|gtk) local sepchar="-" && local cols="8" ;; - html) local sepchar="
" ;; + raw|gtk) local sepchar="-"; local cols="8" ;; + html) local sepchar="
" ;; *) local cols=$(get_cols) [ "$cols" ] || cols=80 ;; @@ -89,8 +89,8 @@ # Display a bold message. GTK Yad: Works only in --text="" boldify() { case $output in - raw) echo "$@" ;; - gtk) echo "$@" ;; + raw) echo "$@" ;; + gtk) echo "$@" ;; html) echo "$@" ;; *) echo -e "\\033[1m$@\\033[0m" ;; esac @@ -135,8 +135,7 @@ local sep="\n" local cols=$(get_cols) [ "$cols" ] || cols=80 - for c in $(seq 1 $cols) - do + for c in $(seq 1 $cols); do sep="${sep}=" done echo -en "$(echo "$@" | sed -e 's||\\033[1m|g; s||\\033[0m|g; \ @@ -150,7 +149,7 @@ # Check if user is logged as root. check_root() { if [ $(id -u) != 0 ]; then - lgettext "You must be root to execute:" && echo " $(basename $0) $@" + lgettext "You must be root to execute:"; echo " $(basename $0) $@" exit 1 fi } @@ -193,8 +192,7 @@ local in cols col1=1 line in="$(echo "$1" | sed 's| *| |g')" cols=$(get_cols); [ "$cols" ] || cols=80 - IFS=" -" + IFS=$'\n' for line in $in; do col=$(echo -n "$line" | cut -f1 | wc -m) [ $col -gt $col1 ] && col1=$col diff -r 140b3dc5e90b -r 8a1ed3d7ebc2 rootfs/usr/bin/ipinfo --- a/rootfs/usr/bin/ipinfo Fri Oct 17 15:27:22 2014 +0200 +++ b/rootfs/usr/bin/ipinfo Thu Nov 27 16:26:29 2014 +0200 @@ -10,6 +10,6 @@ iface="$INTERFACE" fi -ifconfig ${iface} | fgrep 'inet addr:' | cut -d ':' -f 2 | awk '{print $1}' +ifconfig ${iface} | fgrep 'inet addr:' | cut -d: -f2 | awk '{print $1}' exit 0 diff -r 140b3dc5e90b -r 8a1ed3d7ebc2 rootfs/usr/bin/sudo --- a/rootfs/usr/bin/sudo Fri Oct 17 15:27:22 2014 +0200 +++ b/rootfs/usr/bin/sudo Thu Nov 27 16:26:29 2014 +0200 @@ -6,20 +6,16 @@ cmd="$@" pwd="$(pwd)" -conf="$HOME/.config/slitaz/subox.conf" - -# Saved root password -if [ -f "$conf" ]; then - pass="$(cat $conf)" -fi +conf="${XDG_CONFIG_HOME:-$HOME/.config}/slitaz/subox.conf" case "$1" in usage|*help|"") echo -e "\nExecute a command as root" echo -e "Usage: $(basename $0) [command]\n" ;; *) - if [ "$pass" ]; then - echo "$pass" | su -c "cd $pwd; $cmd" + if [ -f "$conf" ]; then + # Saved root password + cat "$conf" | su -c "cd $pwd; $cmd" else su -c "cd $pwd; $cmd" fi ;; diff -r 140b3dc5e90b -r 8a1ed3d7ebc2 rootfs/usr/lib/slitaz/httphelper.sh --- a/rootfs/usr/lib/slitaz/httphelper.sh Fri Oct 17 15:27:22 2014 +0200 +++ b/rootfs/usr/lib/slitaz/httphelper.sh Thu Nov 27 16:26:29 2014 +0200 @@ -19,22 +19,23 @@ header() { local i [ -z "$1" ] && set -- "Content-type: text/html; charset=UTF-8" - for i in "$@" "" - do + for i in "$@" ""; do echo -e "$i\r" done } http_urlencode() { - sed -e "s|%|%25|g;s|!|%21|g;s|\*|%2A|g;s|'|%27|g;s|(|%28|g" \ - -e "s|)|%29|g;s|;|%3B|g;s|:|%3A|g;s|@|%40|g;s|&|%26|g" \ - -e "s|=|%3D|g;s|+|%2B|g;s|\$|%24|g;s|,|%2C|g;s|/|%2F|g" \ - -e "s|\?|%3F|g;s|#|%25|g;s|\[|%5B|g;s|\]|%5D|g;s| |+|g" + sed \ + -e "s|%|%25|g; s|!|%21|g; s|\*|%2A|g; s|'|%27|g; s|(|%28|g" \ + -e "s|)|%29|g; s|;|%3B|g; s|:|%3A|g; s|@|%40|g; s|&|%26|g" \ + -e "s|=|%3D|g; s|+|%2B|g; s|\$|%24|g; s|,|%2C|g; s|/|%2F|g" \ + -e "s|\?|%3F|g; s|#|%25|g; s|\[|%5B|g; s|\]|%5D|g; s| |+|g" } htmlentities() { - echo $1 | sed -e 's|&|\&|g;s|<|\<|g;s|>|\>|g' \ - -e 's|"|\"|g;s|'"'"'|\´|g;s|\t|\ |g' + echo $1 | sed \ + -e 's|&|\&|g; s|<|\<|g; s|>|\>|g' \ + -e 's|"|\"|g; s|'"'"'|\'|g; s|\t|\ |g' } # MD5 crypt a string such as password (httpd -m dont give same result ?) @@ -49,83 +50,98 @@ _ARRAY() { -[ -z "$2" ] && eval echo \$${1}__NAMES || - [ -n "$(eval echo \$${1}__NAMES)" ] && eval echo \$${1}_${2}_${3:-1} + if [ -z "$2" ]; then + eval echo \$${1}__NAMES + else + [ -n "$(eval echo \$${1}__NAMES)" ] && eval echo \$${1}_${2}_${3:-1} + fi } -GET() { _ARRAY GET "$1" $2; } -POST() { _ARRAY POST "$1" $2; } -FILE() { _ARRAY FILE "$1" $2; } -COOKIE() { _ARRAY COOKIE "$1" $2; } +GET() { _ARRAY GET "$1" $2; } +POST() { _ARRAY POST "$1" $2; } +FILE() { _ARRAY FILE "$1" $2; } +COOKIE() { _ARRAY COOKIE "$1" $2; } httpinfo() { -local i -local j -local x -env | sort | sed "s/=/='/;s/$/'/" -for x in GET POST COOKIE ; do - for i in $($x) ; do - if [ $($x $i count) -gt 1 ]; then - for j in $(seq 1 $($x $i count)); do - echo "$x($i,$j)='$($x $i $j)'" - done - else - echo "$x($i)='$($x $i)'" - fi + local i + local j + local x + env | sort | sed "s/=/='/;s/$/'/" + for x in GET POST COOKIE ; do + for i in $($x) ; do + if [ $($x $i count) -gt 1 ]; then + for j in $(seq 1 $($x $i count)); do + echo "$x($i,$j)='$($x $i $j)'" + done + else + echo "$x($i)='$($x $i)'" + fi + done done -done -for i in $(FILE) ; do - for j in name size type tmpname ; do - echo "FILE($i,$j)='$(FILE $i $j)'" + for i in $(FILE) ; do + for j in name size type tmpname ; do + echo "FILE($i,$j)='$(FILE $i $j)'" + done done -done } read_query_string() { -local i -local names -local cnt -names="" -IFS="&" -for i in $2 ; do - var=${i%%[^A-Za-z_0-9]*} - case " $names " in - *\ $var\ *) eval cnt=\$${1}_${var}_count ;; - *) cnt=0 - names="$names $var" ;; - esac - eval ${1}_${var}_count=$((++cnt)) - eval ${1}_${var}_$cnt=\'$(busybox httpd -d "${i#*=}" | sed "s/'/\'\\\\\'\'/g")\' -done -unset IFS -eval ${1}__NAMES=\'${names# }\' + local i + local names + local cnt + names="" + IFS="&" + for i in $2 ; do + var=${i%%[^A-Za-z_0-9]*} + case " $names " in + *\ $var\ *) + eval cnt=\$${1}_${var}_count ;; + *) + cnt=0 + names="$names $var" ;; + esac + eval ${1}_${var}_count=$((++cnt)) + eval ${1}_${var}_$cnt=\'$(busybox httpd -d "${i#*=}" | sed "s/'/\'\\\\\'\'/g")\' + done + unset IFS + eval ${1}__NAMES=\'${names# }\' } + + [ -z "$GET__NAMES" ] && read_query_string GET "$QUERY_STRING" [ -z "$COOKIE_NAMES" ] && read_query_string COOKIE "$(echo "$HTTP_COOKIE" | sed 's/; /\&/g')" + + ddcut() { -page=4096 -skip=$1 -count=$(($2 - $1 -2)) -tmp=$(($skip / $page)) -[ $tmp -ne 0 ] && dd bs=$page skip=$tmp count=0 -skip=$(($skip - ($tmp * $page) )) -dd bs=1 skip=$skip count=0 -tmp=$(( ($page - $skip) % $page )) -if [ $tmp -ne 0 -a $tmp -le $count ]; then - dd bs=1 count=$tmp - count=$(($count - $tmp)) -fi -tmp=$(($count / $page)) -[ $tmp -ne 0 ] && dd bs=$page count=$tmp -dd bs=1 count=$(($count - ($tmp * $page) )) + page=4096 + skip=$1 + count=$(($2 - $1 -2)) + + tmp=$(($skip / $page)) + [ $tmp -ne 0 ] && dd bs=$page skip=$tmp count=0 + + skip=$(($skip - ($tmp * $page) )) + dd bs=1 skip=$skip count=0 + + tmp=$(( ($page - $skip) % $page )) + if [ $tmp -ne 0 -a $tmp -le $count ]; then + dd bs=1 count=$tmp + count=$(($count - $tmp)) + fi + + tmp=$(($count / $page)) + [ $tmp -ne 0 ] && dd bs=$page count=$tmp + dd bs=1 count=$(($count - ($tmp * $page) )) } + + if [ "$REQUEST_METHOD$POST__NAMES" == "POST" ]; then prefix=/tmp/httpd_post mkdir $prefix$$ @@ -138,73 +154,79 @@ cat > ${post}0 read args < ${post}0 delim="${args%?}" + case "$delim" in - - -*) awk "/$delim/ { o+=index(\$0,\"$delim\")-1; print o } - { o+=1+length() }" < ${post}0 | while read offset; do - if [ $offset -ne 0 ]; then - ddcut $last $offset < ${post}0 > $post$n 2> /dev/null - n=$(($n+1)) - fi - last=$offset + + -*) + awk "/$delim/ { o+=index(\$0,\"$delim\")-1; print o } + { o+=1+length() }" < ${post}0 | \ + while read offset; do + if [ $offset -ne 0 ]; then + ddcut $last $offset < ${post}0 > $post$n 2> /dev/null + n=$(($n+1)) + fi + last=$offset done rm -f ${post}0 - CR=`printf '\r'` + for i in $post* ; do - head -n 2 $i | grep -q filename= || echo '' >> $i - filename= - while read line; do - case "$line" in - - *Content-Disposition*) - name=$(echo $line | sed 's/.* name="\([^"]*\)".*$/\1/') - name=${name%%[^A-Za-z_0-9]*} - case "$line" in - *filename=*) filename=$(echo $line | sed 's/.* filename="\([^"]*\)".*$/\1/') ;; - esac ;; - - *Content-Type*) - type=$(echo $line | sed 's/.*-Type: \(.*\).$/\1/') ;; - - $CR) - if [ -n "$filename" ]; then - tmp=$(mktemp $prefix$$/uploadXXXXXX) - cat > $tmp - FILE__NAMES="$FILE__NAMES $name" - FILE__NAMES="${FILE__NAMES# }" - eval FILE_${name}_tmpname=$tmp - eval FILE_${name}_name=$filename - eval FILE_${name}_size=$(stat -c %s $tmp) - eval FILE_${name}_type=$type - elif [ -n "$name" ]; then - eval cnt=\$POST_${name}_count - cnt=$(($cnt + 1)) - eval var=\$POST_${name}_$cnt - while read line; do - [ -n "$var" ] && var="$var -" - var="$var$line" - done - eval POST_${name}_$cnt="\$var" - eval POST_${name}_count=$cnt - case " $POST__NAMES " in - *\ $name\ *) ;; - *) POST__NAMES="$POST__NAMES $name" - POST__NAMES="${POST__NAMES# }" ;; + head -n2 $i | grep -q filename= || echo '' >> $i + filename= + while read line; do + case "$line" in + + *Content-Disposition*) + name=$(echo $line | sed 's/.* name="\([^"]*\)".*$/\1/') + name=${name%%[^A-Za-z_0-9]*} + case "$line" in + *filename=*) + filename=$(echo $line | sed 's/.* filename="\([^"]*\)".*$/\1/') ;; + esac ;; + + *Content-Type*) + type=$(echo $line | sed 's/.*-Type: \(.*\).$/\1/') ;; + + $'\r') + if [ -n "$filename" ]; then + tmp=$(mktemp $prefix$$/uploadXXXXXX) + cat > $tmp + FILE__NAMES="$FILE__NAMES $name" + FILE__NAMES="${FILE__NAMES# }" + eval FILE_${name}_tmpname=$tmp + eval FILE_${name}_name=$filename + eval FILE_${name}_size=$(stat -c %s $tmp) + eval FILE_${name}_type=$type + elif [ -n "$name" ]; then + eval cnt=\$POST_${name}_count + cnt=$(($cnt + 1)) + eval var=\$POST_${name}_$cnt + while read line; do + [ -n "$var" ] && var="$var"$'\n' + var="$var$line" + done + eval POST_${name}_$cnt="\$var" + eval POST_${name}_count=$cnt + case " $POST__NAMES " in + *\ $name\ *) + ;; + *) + POST__NAMES="$POST__NAMES $name" + POST__NAMES="${POST__NAMES# }" ;; + esac + fi + break ;; + + *) ;; esac - fi - break ;; - *) - esac - done < $i - rm -f $i + done < $i + rm -f $i done #rmdir $(dirname $post) ;; - - *) + + *) rm -rf $(dirname $post) read_query_string POST "$args" ;; - + esac fi diff -r 140b3dc5e90b -r 8a1ed3d7ebc2 rootfs/usr/lib/slitaz/libpkg.sh --- a/rootfs/usr/lib/slitaz/libpkg.sh Fri Oct 17 15:27:22 2014 +0200 +++ b/rootfs/usr/lib/slitaz/libpkg.sh Thu Nov 27 16:26:29 2014 +0200 @@ -13,13 +13,12 @@ # Unset all receipt variables. unset_receipt() { unset PACKAGE VERSION EXTRAVERSION SHORT_DESC HOST_ARCH TARBALL \ - DEPENDS BUILD_DEPENDS WANTED WGET_URL PROVIDE CROSS_BUG + DEPENDS BUILD_DEPENDS WANTED WGET_URL PROVIDE CROSS_BUG TAGS } # Converts pkg.tazpkg to pkg package_name() { - local name=$(basename $1) - echo ${name%.tazpkg} + basename $1 .tazpkg } # Check mirror ID: return false if no changes or mirror unreachable @@ -30,12 +29,12 @@ if wget -qs ${mirror%/}/ID; then wget -q ${mirror%/}/ID else - _n "Mirror is unreachable"; false - status && return 1 + _n "Mirror is unreachable" + false; status; return 1 fi if [ "$(cat ID)" == "$(cat ID.bak)" ]; then - _n "Mirror is up-to-date"; true - status && return 1 + _n "Mirror is up-to-date" + true; status; return 1 fi }