1#!/bin/sh 2# $1: package name, $2: field name, 3# $3: 0: find all files(default), 1: find the control file, 2: find the list file. 4 5 6APPS_PATH=/opt 7CONF_FILE=$APPS_PATH/etc/ipkg.conf 8LIST_DIR=$APPS_PATH/lib/ipkg/lists 9LIST_FILES= 10TEMP_CONF_FILE=/tmp/package.txt 11got_field=0 12field_gone= 13field_value= 14 15 16if [ -z "$1" ] || [ -z "$2" ]; then 17 echo "Usage: app_get_field.sh <Package name> <Field name> [0|1|2]" 18 exit 1 19fi 20 21if [ -n "$3" ] && [ "$3" != "0" ] && [ "$3" != "1" ] && [ "$3" != "2" ]; then 22 echo "Usage: app_get_field.sh <Package name> <Field name> [0|1|2]" 23 exit 1 24fi 25 26if [ "$3" != "2" ]; then 27 pkg_control_file=$APPS_PATH/lib/ipkg/info/$1.control 28 if [ -f "$pkg_control_file" ]; then 29 field_gone=`grep "$2: " $pkg_control_file` 30 if [ -n "$field_gone" ]; then 31 field_value=`grep "$2: " $pkg_control_file |awk '{print $2}'` 32 echo "$field_value" 33 exit 0 34 fi 35 fi 36 37 if [ "$3" == "1" ]; then 38 exit 0 39 fi 40fi 41 42if [ ! -f "$CONF_FILE" ]; then 43 exit 1 44fi 45 46LIST_FILES=`grep -n '^src.*' $CONF_FILE |sort -r |awk '{print "'$LIST_DIR'/"$2}'` 47if [ -z "$LIST_FILES" ]; then 48 exit 1 49fi 50 51for f in $LIST_FILES; do 52 if [ ! -f "$f" ]; then 53 continue 54 fi 55 56 field_gone=`grep "Package: "$1"$" $f` 57 if [ -z "$field_gone" ]; then 58 continue 59 fi 60 grep -A 15 "Package: "$1"$" $f > $TEMP_CONF_FILE 61 62 field_gone=`grep "$2: " $TEMP_CONF_FILE` 63 if [ -z "$field_gone" ]; then 64 continue 65 fi 66 67 field_value=`grep "$2: " $TEMP_CONF_FILE |sed '2,$d' |awk '{FS="'$2': "; print $2}' |sed 's/, /,/g'` 68 rm -f $TEMP_CONF_FILE 69 echo "$field_value" 70 exit 0 71done 72