# HG changeset patch # User Pascal Bellard # Date 1248972398 -7200 # Node ID bc37eb38a4f44c9309131e6c0fa702e841e9efaf # Parent 750f6987718fac40e81d3ebd45b827070068d780 tazpkg-web:search.cgi display description.txt diff -r 750f6987718f -r bc37eb38a4f4 mirror-tools/stuff/var/www/pkgs/search.cgi --- a/mirror-tools/stuff/var/www/pkgs/search.cgi Thu Jul 30 11:32:00 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -#!/bin/sh -# Tiny CGI search engine for SliTaz packages on http://pkgs.slitaz.org/ -# Christophe Lincoln -# - -read QUERY_STRING -for i in $(echo $QUERY_STRING | sed 's/&/ /g'); do - eval $i -done -LANG=$lang -SEARCH=$query -SLITAZ_VERSION=$version -OBJECT=$object -DATE=`date +%Y-%m-%d\ \%H:%M:%S` -VERSION=cooking -if [ "$REQUEST_METHOD" = "GET" ]; then - SEARCH="" - for i in $(echo $REQUEST_URI | sed 's/[?&]/ /g'); do - SLITAZ_VERSION=cooking - case "$i" in - lang=*) - LANG=${i#*=};; - file=*) - SEARCH=${i#*=} - OBJECT=File;; - desc=*) - SEARCH=${i#*=} - OBJECT=Desc;; - tags=*) - SEARCH=${i#*=} - OBJECT=Tags;; - receipt=*) - SEARCH=${i#*=} - OBJECT=Receipt;; - filelist=*) - SEARCH=${i#*=} - OBJECT=File_list;; - package=*) - SEARCH=${i#*=} - OBJECT=Package;; - depends=*) - SEARCH=${i#*=} - OBJECT=Depends;; - version=s*|version=2*) - SLITAZ_VERSION=stable;; - version=1*) - SLITAZ_VERSION=1.0;; - esac - done - [ -n "$SEARCH" ] && REQUEST_METHOD="POST" -fi - -case "$OBJECT" in -File) selected_file="selected";; -Desc) selected_desc="selected";; -Tags) selected_tags="selected";; -Receipt) selected_receipt="selected";; -File_list) selected_file_list="selected";; -Depends) selected_depends="selected";; -esac - -case "$SLITAZ_VERSION" in -1.0) selected_1="selected";; -stable) selected_stable="selected";; -esac - -# unescape query -SEARCH="$(echo $SEARCH | sed 's/%2B/+/g' | sed 's/%3A/:/g' | sed 's|%2F|/|g')" - -if [ -z "$LANG" ]; then - for i in $(echo $HTTP_ACCEPT_LANGUAGE | sed 's/[,;]/ /g'); do - case "$i" in - fr|de|pt|cn) - LANG=$i - break;; - esac - done -fi - -package="Package" -file="File" -desc="Description" -tags="Tags" -receipt="Receipt" -file_list="File list" -depends="Depends" -search="Search" -cooking="cooking" -stable="stable" -result="Result for : $SEARCH" -noresult="No package $SEARCH" -deptree="Dependency tree for : $SEARCH" -rdeptree="Reverse dependency tree for : $SEARCH" -charset="ISO-8859-1" - -case "$LANG" in - -fr) package="Paquet" - receipt="Recette" - depends="Dépendances" - search="Recherche" - result="Recherche de : $SEARCH" - noresult="Paquet $SEARCH introuvable" - deptree="Arbre des dépendances de $SEARCH" - rdeptree="Arbre inversé des dépendances de $SEARCH" - file_list="Liste des fichiers" - file="Fichier";; - -de) package="Paket" - depends="Abhängigkeiten" - desc="Beschreibung" - search="Suche" - cooking="Cooking" - stable="Stable" - result="Resultate für : $SEARCH" - noresult="Kein Paket für $SEARCH" - deptree="Abhängigkeiten von: $SEARCH" - rdeptree="Abhängigkeit für: $SEARCH" - file_list="Datei liste" - file="Datei";; - -pt) package="Pacote" - search="Buscar" - cooking="cooking" - stable="stable" - result="Resultado para : $SEARCH" - noresult="Sem resultado: $SEARCH" - deptree="Árvore de dependências para: $SEARCH" - rdeptree="Árvore de dependências reversa para: $SEARCH" - depends="Dependências" - desc="Descrição" - file_list="Arquivo lista" - file="Arquivo";; - -cn) package="软件包:" - cooking="å¼€å‘版" - stable="稳定版" - desc="æè¿°" - tags="标签" - depends="ä¾èµ–" - file="文件" - file_list="文件列表" - search="Search" - result="Result for : $SEARCH" - noresult="No package $SEARCH" - deptree="Dependency tree for : $SEARCH" - rdeptree="Reverse dependency tree for : $SEARCH" - charset="UTF-8";; - -*) LANG="en";; - -esac - -WOK=/home/slitaz/$SLITAZ_VERSION/wok - -echo Content-type: text/html -echo - -# Search form -search_form() -{ - cat << _EOT_ - -
-
- - - : - - - -
-
-_EOT_ -} - -# xHTML Header. -xhtml_header() -{ - cat << _EOF_ - - - - SliTaz Packages - Search $SEARCH - - - - - - - - - - - - - - - - -_EOF_ -} - -# xHTML Footer. -xhtml_footer() -{ - cat << _EOT_ -
-$(ls /home/slitaz/$SLITAZ_VERSION/wok | wc -l) packages and $(unlzma -c /home/slitaz/$SLITAZ_VERSION/packages/files.list.lzma | wc -l) files in $SLITAZ_VERSION database -
- - - -
-
-
-
- - -
-

-Dernière modification : $DATE - -Top of the page -

-

-Copyright © 2009 SliTaz - -GNU General Public License -

- -
- - -
-

-Valid XHTML 1.0 -

-
- - - -_EOT_ -} - -# recursive dependencies scan -dep_scan() -{ -for i in $1; do - case " $ALL_DEPS " in - *\ $i\ *) continue;; - esac - ALL_DEPS="$ALL_DEPS $i" - if [ -n "$2" ]; then - echo -n "$2" - ( - . $WOK/$i/receipt - cat << _EOT_ -$PACKAGE : $SHORT_DESC -_EOT_ - ) - fi - [ -f $WOK/$i/receipt ] || continue - DEPENDS="" - . $WOK/$i/receipt - [ -n "$DEPENDS" ] && dep_scan "$DEPENDS" "$2 " -done -} - -# recursive reverse dependencies scan -rdep_scan() -{ -SEARCH=$1 -case "$SEARCH" in -glibc-base|gcc-lib-base) cat <every packages are supposed to depend on them. -EOT - return;; -esac -for i in $WOK/* ; do - DEPENDS="" - . $i/receipt - echo "$(basename $i) $(echo $DEPENDS)" -done | awk -v search=$SEARCH ' -function show_deps(deps, all_deps, pkg, space) -{ - if (all_deps[pkg] == 1) return - all_deps[pkg] = 1 - if (space != "") printf "%s%s\n",space,pkg - for (i = 1; i <= split(deps[pkg], mydeps, " "); i++) { - show_deps(deps, all_deps, mydeps[i],"////" space) - } -} - -{ - all_deps[$1] = 0 - for (i = 2; i <= NF; i++) - deps[$i] = deps[$i] " " $1 -} - -END { - show_deps(deps, all_deps, search, "") -} -' | while read pkg; do - . $WOK/${pkg##*/}/receipt - cat << _EOT_ -$(echo ${pkg%/*} | sed 's|/| |g') $PACKAGE : $SHORT_DESC -_EOT_ -done -} - -# Check package exists -package_exist() -{ - [ -f $WOK/$1/receipt ] && return 0 - cat << _EOT_ - -

$noresult

-
-_EOT_
-	return 1
-}
-
-# Display search form and result if requested.
-if [ "$REQUEST_METHOD" != "POST" ]; then
-	xhtml_header
-	cat << _EOT_
-
-
-
-
-
-
- - -
- - -

$package

-

$search

-_EOT_ - search_form - xhtml_footer -else - xhtml_header - cat << _EOT_ - - -
-
-
-
- - -
- - -

$package

-

$search

-_EOT_ - search_form - if [ "$OBJECT" = "Depends" ]; then - if package_exist $SEARCH ; then - cat << _EOT_ - -

$deptree

-
-_EOT_
-			ALL_DEPS=""
-			dep_scan $SEARCH ""
-			SUGGESTED=""
-			. $WOK/$SEARCH/receipt
-			if [ -n "$SUGGESTED" ]; then
-				cat << _EOT_
-
- -

$deptree (SUGGESTED)

-
-_EOT_
-				ALL_DEPS=""
-				dep_scan "$SUGGESTED" "    "
-			fi
-			cat << _EOT_
-
- -

$rdeptree

-
-_EOT_
-			ALL_DEPS=""
-			rdep_scan $SEARCH
-		fi
-	elif [ "$OBJECT" = "File" ]; then
-		cat << _EOT_
-
-

$result

-
-_EOT_
-		last=""
-		unlzma -c /home/slitaz/$SLITAZ_VERSION/packages/files.list.lzma \
-		| grep $SEARCH | while read pkg file; do
-			echo "$file" | grep -q $SEARCH || continue
-			if [ "$last" != "${pkg%:}" ]; then
-				last=${pkg%:}
-				(
-				. $WOK/$last/receipt
-				cat << _EOT_
-
-$PACKAGE $SHORT_DESC
-_EOT_
-				)
-			fi
-			echo "    $file"
-		done
-	elif [ "$OBJECT" = "File_list" ]; then
-		package_exist $SEARCH && cat << _EOT_
-
-

$result

-
-_EOT_
-		last=""
-		unlzma -c /home/slitaz/$SLITAZ_VERSION/packages/files.list.lzma \
-		| grep ^$SEARCH: |  sed 's/.*: /    /' | sort
-	elif [ "$OBJECT" = "Desc" ]; then
-		cat << _EOT_
-
-

$result

-
-_EOT_
-		last=""
-		grep -i $SEARCH /home/slitaz/$SLITAZ_VERSION/packages/packages.desc | \
-		sort | while read pkg extras ; do
-				. $WOK/$pkg/receipt
-				cat << _EOT_
-$PACKAGE : $SHORT_DESC
-_EOT_
-			done
-	elif [ "$OBJECT" = "Tags" ]; then
-		cat << _EOT_
-
-

$result

-
-_EOT_
-		last=""
-		grep ^TAGS= $WOK/*/receipt |  grep -i $SEARCH | \
-		sed "s|$WOK/\(.*\)/receipt:.*|\1|" | sort | while read pkg ; do
-				. $WOK/$pkg/receipt
-				cat << _EOT_
-$PACKAGE : $SHORT_DESC
-_EOT_
-			done
-	elif [ "$OBJECT" = "Receipt" ]; then
-		package_exist $SEARCH && cat << _EOT_
-
-

$result

-
-
-$(if [ -f  $WOK/$SEARCH/taz/*/receipt ]; then
-	cat $WOK/$SEARCH/taz/*/receipt
-  else
-    cat $WOK/$SEARCH//receipt
-  fi | sed -e 's/&/\&/g' -e 's//\>/g')
-
-_EOT_ - else - cat << _EOT_ - -

$result

-
-_EOT_
-		for pkg in `ls $WOK | grep $SEARCH`
-		do
-			. $WOK/$pkg/receipt
-			cat << _EOT_
-$PACKAGE : $SHORT_DESC
-_EOT_
-		done
-		equiv=/home/slitaz/$SLITAZ_VERSION/packages/packages.equiv
-		vpkgs="$(cat $equiv | cut -d= -f1 | grep $SEARCH)"
-		for vpkg in $vpkgs ; do
-	cat << _EOT_
-
- -

$result (package providing $vpkg)

-
-_EOT_
-			for pkg in $(grep $vpkg= $equiv | sed "s/$vpkg=//"); do
-				. $WOK/${pkg#*:}/receipt
-				cat << _EOT_
-$PACKAGE : $SHORT_DESC
-_EOT_
-			done
-		done
-	fi
-	cat << _EOT_
-
-_EOT_ - xhtml_footer -fi - -exit 0 diff -r 750f6987718f -r bc37eb38a4f4 tazpkg-web/stuff/search.cgi --- a/tazpkg-web/stuff/search.cgi Thu Jul 30 11:32:00 2009 +0000 +++ b/tazpkg-web/stuff/search.cgi Thu Jul 30 18:46:38 2009 +0200 @@ -270,9 +270,9 @@ _EOT_ } -# recursive dependencies scan -dep_scan() -{ +# recursive dependencies scan +dep_scan() +{ for i in $1; do case " $ALL_DEPS " in *\ $i\ *) continue;; @@ -294,9 +294,9 @@ done } -# recursive reverse dependencies scan -rdep_scan() -{ +# recursive reverse dependencies scan +rdep_scan() +{ SEARCH=$1 case "$SEARCH" in glibc-base|gcc-lib-base) cat < & +htmlize() +{ + sed -e 's/&/\&/g' -e 's//\>/g' +} + # Display search form and result if requested. if [ "$REQUEST_METHOD" != "POST" ]; then xhtml_header @@ -449,19 +455,30 @@ unlzma -c $PACKAGES_REPOSITORY/files.list.lzma \ | grep ^$SEARCH: | sed 's/.*: / /' | sort elif [ "$OBJECT" = "Desc" ]; then - cat << _EOT_ + if [ -f $WOK/$SEARCH/description.txt ]; then + cat << _EOT_ + +

$result

+
+
+$(htmlize < $WOK/$SEARCH/description.txt)
+
+_EOT_ + else + cat << _EOT_

$result

 _EOT_
-		last=""
-		grep -i $SEARCH $PACKAGES_REPOSITORY/packages.desc | \
-		sort | while read pkg extras ; do
+			last=""
+			grep -i $SEARCH $PACKAGES_REPOSITORY/packages.desc | \
+			sort | while read pkg extras ; do
 				. $WOK/$pkg/receipt
 				cat << _EOT_
 $PACKAGE : $SHORT_DESC
 _EOT_
 			done
+		fi
 	elif [ "$OBJECT" = "Tags" ]; then
 		cat << _EOT_
 
@@ -485,8 +502,8 @@
 $(if [ -f  $WOK/$SEARCH/taz/*/receipt ]; then
 	cat $WOK/$SEARCH/taz/*/receipt
   else
-    cat $WOK/$SEARCH//receipt
-  fi | sed -e 's/&/\&/g' -e 's//\>/g')
+    cat $WOK/$SEARCH/receipt
+  fi | htmlize)
 
_EOT_ else @@ -498,8 +515,10 @@ for pkg in `ls $WOK | grep $SEARCH` do . $WOK/$pkg/receipt + DESC=" description" + [ -f $WOK/$pkg/description.txt ] || DESC="" cat << _EOT_ -$PACKAGE : $SHORT_DESC +$PACKAGE : $SHORT_DESC$DESC _EOT_ done equiv=$PACKAGES_REPOSITORY/packages.equiv