From c36fcc3303c2ddaca15303cfdc9879c68d969a2c Mon Sep 17 00:00:00 2001 From: karltk Date: Wed, 6 Aug 2003 21:13:29 +0000 Subject: [PATCH] Help screen preliminarily done svn path=/; revision=37 --- trunk/src/qpkg/qpkg | 693 +++++++++----------------------------------- 1 file changed, 136 insertions(+), 557 deletions(-) diff --git a/trunk/src/qpkg/qpkg b/trunk/src/qpkg/qpkg index e1f477a..41ff77b 100644 --- a/trunk/src/qpkg/qpkg +++ b/trunk/src/qpkg/qpkg @@ -52,580 +52,159 @@ def showUsage(): print "\n" + white("Package selection:") print blue("-f, --find-file") + "\tfinds package that owns file " print blue("-fp, --find-pattern") + "\tfinds package that owns file matching **" - print blue("-m, --masked") + "\tinclude " + yellow("only") + " masked packages" + print blue("-m, --masked") + "\t\tinclude " + yellow("only") + " masked packages" print blue("-n, --non-masked") + "\tinclude " + yellow("only") + " installed packages" print blue("-U, --uninstalled") + "\tinclude " + yellow("only") + " uninstalled packages" print blue("-g, --group") + "\t\tfind by group (can be combined with other searches" print "\n" + white("Information selection:") print blue("-l, --list") + "\t\tlist package content" - print blue("-i, --info") + "\t\tget package description and home page") + print blue("-i, --info") + "\t\tget package description and home page" print blue("-ct, --check-time") print blue("-tc, --time-check") + "\tverify package files' time stamps" + print blue("-cm, --check-md5") + print blue("-mc, --md5-check") + "\tverify package files md5" + print blue("-c, --check") + "\t\tverify mtimes " + yellow("and") + "md5" + print blue("-q, --query-deps") + "\tdisplay all installed packages" + \ + "\n\t\t\tdepending on selected packages" + + print "\n" + white("Operation modifiers:") + print blue("-nc, --no-color") + "\tdo not use colors" + print blue("-v, --verbose") + "\tincrease verbosity [ can be repeated twice ]" + print blue("-vv") + "\t\tsame as " + blue("-v -v") + + print "\n" + yellow("Notes") + print yellow("*") + " " + blue("-f, -fp, -d, -l, -ct, -cm") + " and " + \ + blue("-c") + " apply only to installed packages" + print yellow("*") + " short options may not be combined on the command-line, yet" + print yellow("*") + " the operation of some flags has been changed by the " + \ + "stripping of version\n" + \ + " numbers from some output to see the version numbers play with " + \ + blue("-v") + " and " + blue("-vv") + print yellow("*") + " when using " + blue("-f") + " with " + blue("-l") + \ + " or " + blue("--check.. -v") + " options, only matching files will be\n" + \ + " displayed, unless " + blue("-v") + " is doubled, or " + blue("--vv") + " is used" + + print "\n" + yellow("Examples:") + print "qpkg --dups print duplicates oldest first" + print "qpkg --dups -v ... with versions" + print "qpkg print list of installed packages" + print "qpkg porta -I print versions of installed portage" + print "qpkg porta -i ... + versions in portage tree + descriptions and homepages" + print "qpkg gawk -c -v check integrity of all installed versions of gawk, the\n" + \ + "\t\t\tolder will have \"damaged\" files" + print "qpkg -f /bin/ls print package(s) that own /bin/ls" + +def setupConfigDefaults(): + Config.verbosity = 0 + Config.color = 1 + Config.showUsage = 0 + Config.showPackageContents = 0 + Config.showInstalled = 0 + Config.showMasked = 0 + Config.showDeps = 0 + Config.showSlot = 0 + Config.findFile = 0 + Config.checkMD5 = 0 + Config.checkTime = 0 - """ -${BR}Information Selection: - ${BL}-l, --list${NO}${T}${T}List package content - ${BL}-i, --info${NO}${T}${T}Get package description and home page. - ${BL}-ct, --check-time${NO} - ${BL}-tc, --time-check${NO}${T}Verify package files timestamps - ${BL}-cm, --check-md5${NO} - ${BL}-mc, --md5-check${NO}${T}Verify package files md5 - ${BL}-c, --check${NO}${T}${T}Verify mtimes${YL} and${NO} md5. - ${BL}-q, --query-deps${NO}${T}display all installed packages -${T}${T}${T}depending on selected packages +def parseArgs(): + setupConfigDefaults() -${BR}Operation Modifiers: - ${BL}-nc, --no-color${NO}${T}don't use colors - ${BL}-v, --verbose${NO}${T}Be more verbose [ can be repeated twise ] - ${BL}-vv${NO}${T}${T}${T}Same as ${BL}-v -v${NO} - -${YL}Notes${NO}: -${YL}*${NO} ${BL}-f${NO}, ${BL}-fp, ${BL}-d${NO}, ${BL}-l${NO}, ${BL}-ct${NO}, ${BL}-cm${NO}, and ${BL}-c${NO} apply only to installed packages. -${YL}*${NO} Short options may not be combined on the command-line, yet. -${YL}*${NO} The operation of some flags has been changed by the - stripping of version numbers from some output to see - the version numbers play with ${BL}-v${NO} and ${BL}-vv${NO}. -${YL}*${NO} When using${BL} -f${NO} with ${BL}-l${NO} or ${BL}--check.. -v${NO} options, only - matching files will be displayed, unless ${BL}-v${NO} is doubled, - (yet more verbose) or ${BL}-vv${NO} is used. - - -${YL}Examples${NO}: - ${PROG} --dups print duplicates oldest first - ${PROG} --dups -v .. with versions - ${PROG} print list of installed packages - ${PROG} porta -I print versions of installed portage - ${PROG} porta -i .. + versions in portage tree + descriptions - and homepages - ${PROG} gawk -c -v check integrity all installed versions of gawk - the older will have \"damaged\" files. - ${PROG} -f /bin/ls print package(s) that own /bin/ls -""" - -def parse_args(): if len(sys.argv) < 2: Config.showUsage = 1 return - for i in sys.argv[1:]: - if i in ["-h","--help"]: + + args=sys.argv[1:] + skip=0 + for x in range(len(args)): + # FIXME: Nasty skippery hackery + if skip: + skip-=1 + continue + i=args[x] + if 0: + pass + elif i in ["-h","--help"]: Config.showUsage = 1 - + elif i in ["-i","--info"]: + Config.showInfo = 1 + elif i in ["-d","--dups"]: + Config.showDups = 1 + Config.showInstalled = 1 + elif i in ["-q","--query-deps"]: + Config.showDeps = 1 + elif i in ["-s","--slot"]: + Config.showSlot = 1 + elif i in ["-f","--find-file"]: + Config.findFile = 1 + Config.showInstalled = 1 + elif i in ["-fp","--find-pattern"]: + Config.findFile = 1 + Config.findFilePattern = 1 + Config.showInstalled = 1 + elif i in ["-I","--installed"]: + Config.showInstalled = 1 + elif i in ["-m", "--masked"]: + Config.showMasked = 1 + elif i in ["-n", "--non-masked"]: + Config.showMasked = 0 + elif i in ["-U","--uninstalled"]: + Config.showInstalled = 0 + elif i in ["-g","--group"]: + Config.showCategory = args[x+1] + skip=1 + elif i in ["-l", "--list"]: + Config.showPackageContents = 1 + Config.showInstalled = 1 + elif i in ["-ct","--check-time","-tc","--time-check"]: + Config.checkTime = 1 + Config.showInstalled = 1 + elif i in ["-cm","--check-md5","-mc","--md5-check"]: + Config.checkMD5 = 1 + Config.showInstalled = 1 + elif i in ["-v","--verbose"]: + Config.verbosity += 1 + elif i in ["-vv"]: + Config.verbosity += 2 + elif i in ["-nc","--no-color","--nocolor","--no-colors"]: + Config.color = 0 + else: + print "xx:", i + Config.showUsage=1 + break + +def showPackageContents(): + print "showPackageContents" + +def checkMD5(): + print "checkMD5" + +def checkTimeStamps(): + print "checkTimeStamps" + +def findFile(): + print "findFile" + +def showDeps(): + print "showDeps" + def main(): - parse_args() + parseArgs() if Config.showUsage: showUsage() + elif Config.showPackageContents: + showPackageContents() + elif Config.checkMD5: + checkMD5() + elif Config.checkTime: + checkTimeStamps() + elif Config.findFile: + findFile() + elif Config.showDeps: + showDeps() + else: + raise "Don't know what do do..." if __name__ == "__main__": main() - -""" -ID='$Id$' -VERSION=0.`echo ${ID} | cut -d\ -f3` - -PROG=`basename ${0}` - -# Parse args -verb=0 -group="*" -params=${#} -while [ ${#} -gt 0 ] -do - a=${1} - shift - case "${a}" in - - -h|--help) - usage=y - break - ;; - - -i|--info) - info=y - ;; - - -d|--dups) - dups=y - inst=y - ;; - - -q|--query-deps) - query=y - ;; - - -s|--slot) - slot=y - ;; - - -f|--find-file) - ffind=y - inst=y - ;; - - -fp|--find-pattern) - ffind=y - fpat=y - inst=y - ;; - - -I|--installed) - inst=y - ;; - - -m|--masked) - grepmask="-L" - ;; - - -n|--non-masked) - grepmask="-l" - ;; - - -U|--uninstalled) - uninst=y - ;; - - -g|--group) - group=$1 - shift - ;; - - -l|--list) - list=y - inst=y - ;; - - -ct|--check-time|-tc|--time-check) - tcheck=y - inst=y - ;; - - -cm|--check-md5|-mc|--md5-check) - mcheck=y - inst=y - ;; - - -c|--check) - mcheck=y - tcheck=y - inst=y - ;; - - -v|--verbose) - let $((verb++)) - ;; - - -vv) - let $((verb++)) - let $((verb++)) - ;; - - -nc|--no-color|--nocolor|--no-colors|--nocolors) - nocolor=y - ;; - - -*) - echo -e ${CY}${PROG}${NO}:${YL} Invalid option ${RD}$a 1>&2 - usage=y - break - ;; - *) - if [ -n "${arg}" ]; then - echo -e ${CY}${PROG}: ${YL}Only one argument supported - usage=y - break - fi - arg=$a - ;; - - esac -done - -#This is a dumb way to handle things, take it out next time -T="\t" - -#Set up colors -if [ ! "${nocolor}" ]; then - NO="\x1b[0;0m" - BR="\x1b[0;01m" - CY="\x1b[36;01m" - RD="\x1b[31;01m" - GR="\x1b[32;01m" - YL="\x1b[33;01m" - BL="\x1b[34;01m" - STAR=" *" -elif [ ! "${inst}" ] && [ ! "${uninst}" ]; then - STAR=" *" -fi - - -# check for option conflicts -if [ "${inst}" -a "${uninst}" \ - -o \( "${ffind}" -o "${list}" -o "${tcheck}" -o "${mcheck}" \) \ - -a "${uninst}" ]; then - echo -e ${CY}${PROG}${NO}:${YL} conflicting options/modes${NO} - usage=y -fi - -if [ "${usage}" ]; then - echo -e "${CY}${PROG} v. ${VERSION}${NO} - -${CY}${PROG}${NO} is GenToolKit's \"query package\" tool, using it, you can -find packages owning files on your filesystem, check the integrity -of installed packages, and do other queries against installed or -uninstalled packages. - -${BR}Usage: -${T}${CY}${PROG}${NO} [${BR}options${NO}] [${YL}pkgname${NO}] [${BL}-g${YL} group${NO}] [${BL}-f${YL} ${NO}|${BL}-fp${YL} ${NO}] -${T}${CY}${PROG}${NO} ${BL}--dups${NO} [${BL}--slot${NO}] -${T}${CY}${PROG}${NO} ${BL}--help${NO} - -${BR}Duplicate Locating: - ${BL}-d, --dups${NO}${T}${T}print packages that have multiple versions installed - ${BL}-s, --slot${NO}${T}${T}make ${BL}-d${NO} SLOT only print dups of the same SLOT - -${BR}Package Selection: - ${BL}-f, --find-file${NO}${T}finds package that owns file - ${BL}-fp, --find-pattern${NO}${T}finds to package that owns file matching ** - ${BL}-m, --masked${NO}${T}Include${YL} only${NO} masked packages - ${BL}-n, --non-masked${NO}${T}Include${YL} only${NO} non-masked packages - ${BL}-I, --installed${NO}${T}Include${YL} only${NO} installed packages - ${BL}-U, --uninstalled${NO}${T}Include${YL} only${NO} uninstalled packages - ${BL}-g, --group${NO}${T}${T}Find by goup (can be combined with other searches) - -${BR}Information Selection: - ${BL}-l, --list${NO}${T}${T}List package content - ${BL}-i, --info${NO}${T}${T}Get package description and home page. - ${BL}-ct, --check-time${NO} - ${BL}-tc, --time-check${NO}${T}Verify package files timestamps - ${BL}-cm, --check-md5${NO} - ${BL}-mc, --md5-check${NO}${T}Verify package files md5 - ${BL}-c, --check${NO}${T}${T}Verify mtimes${YL} and${NO} md5. - ${BL}-q, --query-deps${NO}${T}display all installed packages -${T}${T}${T}depending on selected packages - -${BR}Operation Modifiers: - ${BL}-nc, --no-color${NO}${T}don't use colors - ${BL}-v, --verbose${NO}${T}Be more verbose [ can be repeated twise ] - ${BL}-vv${NO}${T}${T}${T}Same as ${BL}-v -v${NO} - -${YL}Notes${NO}: -${YL}*${NO} ${BL}-f${NO}, ${BL}-fp, ${BL}-d${NO}, ${BL}-l${NO}, ${BL}-ct${NO}, ${BL}-cm${NO}, and ${BL}-c${NO} apply only to installed packages. -${YL}*${NO} Short options may not be combined on the command-line, yet. -${YL}*${NO} The operation of some flags has been changed by the - stripping of version numbers from some output to see - the version numbers play with ${BL}-v${NO} and ${BL}-vv${NO}. -${YL}*${NO} When using${BL} -f${NO} with ${BL}-l${NO} or ${BL}--check.. -v${NO} options, only - matching files will be displayed, unless ${BL}-v${NO} is doubled, - (yet more verbose) or ${BL}-vv${NO} is used. - - -${YL}Examples${NO}: - ${PROG} --dups print duplicates oldest first - ${PROG} --dups -v .. with versions - ${PROG} print list of installed packages - ${PROG} porta -I print versions of installed portage - ${PROG} porta -i .. + versions in portage tree + descriptions - and homepages - ${PROG} gawk -c -v check integrity all installed versions of gawk - the older will have \"damaged\" files. - ${PROG} -f /bin/ls print package(s) that own /bin/ls -" - exit -fi - -#For the --dups switch only -if [ "${dups}" ]; then -if [ "${grepmask}" ]; then - mask=`python -c 'import portage; print portage.settings["ACCEPT_KEYWORDS"];' 2> /dev/null` - echo -e "Currently accepted keywords: ${BL}${mask}${NO}" - echo -e - mask=`echo ${mask} | perl -pe 's/\s+/|/'` -fi - - #First dig out the list of packages with duplicates - find /var/db/pkg -iname "*${arg}*.ebuild" 2> /dev/null > /tmp/qpkg.lst - dups=`cat /tmp/qpkg.lst | cut -f7 -d/ | - sed -e 's:\.ebuild$::; s:-r[0-9]*$::; s:-[^-]*$::; /^$/d' | - sort | - uniq -d` - - #Next get all the exact versions - duppak=`cat /tmp/qpkg.lst | fgrep "${dups}"` - - #Now cut that down to the directory name so we can be smart - dirs=`sed -e 's:/[^/]*$::' /tmp/qpkg.lst` - - #Go through each package's DB and create a sortable file - #to play with - declare -i defcount=`cat /var/cache/edb/counter` - for DIR in ${dirs} - do #Package COUNTER - NUM=`cat "${DIR}/COUNTER" 2> /dev/null` - [ -z "${NUM}" ] && NUM=defcount - #Package slot if requested - [ ${slot} ] && SLOT=`cat "${DIR}/SLOT"` - #Package fullname - PKG=`ls --color=no -1 ${DIR}/*.ebuild|cut -f5,7 -d"/"` - #Package basename - NAME=`echo "${PKG}"|sed -e 's:\.ebuild$::; s:-r[0-9]\+$::; s:-[0-9].*$::'` - echo "${NUM} ${PKG} ${NAME}${SLOT}" - #Finish loop, and sort that nice sortable file based on - #installation order, and then based on package basename - #bash hates me so I decided to use a temp file - done |sort -t" " -k3 -k1g,2|uniq -D -f2 > /tmp/qpkg.lst - duppak=`cat /tmp/qpkg.lst` - rm /tmp/qpkg.lst - - #If max verbosity is set output with full path to each ebuild - if [ "${verb}" -gt 1 ]; then - echo -n "${duppak}"|cut -f2 -d" "| \ - sed -e "s:^:${BL}/var/db/pkg/${BR}:" \ - -e "s:\(/\)\([^/]*\)\(.ebuild\):\1${CY}\2${NO}\1\2\3:" - - #If normal verbosity output package group, package name and package version - elif [ "${verb}" -gt 0 ]; then - echo -n "${duppak}"|cut -f2 -d" "| \ - sed -e "s:\(^[^/]*/\)\(.*\)\(\.ebuild\):${BR}\1${CY}\2${NO}:" - - #Otherwise just output package group and package name - else - echo -n "${duppak}"|cut -f2 -d" "| \ - sed -e "s:-r[0-9]\+$::" \ - -e "s:-[0-9].*$::" \ - -e "s:\(^[^/]*/\)\(.*\):${BR}\1${CY}\2${NO}:"|uniq - fi - exit -fi - -# get list of ebuilds to work on -if [ "${ffind}" ]; then - # file find mode - list all ebuilds for - # package/CONTENTS containing - if [ "${fpat}" ]; then - dirs=`ls /var/db/pkg/${group}/*/CONTENTS \ - | xargs grep -l "${arg}" \ - | xargs --no-run-if-empty -n 1 dirname` - else - # if the user didnt specify a full path assume they - # want to check in the working dir #17331 - [ "${arg:0:1}" != "/" ] && arg="${PWD}/${arg}" - - dirs=`ls /var/db/pkg/${group}/*/CONTENTS \ - | xargs grep -l " ${arg}\( .*\)*$" \ - | xargs --no-run-if-empty -n 1 dirname` - fi - ipak=`( - for d in ${dirs} -;do - [ "-" = "$d" ] && break - ls ${d}/*.ebuild - done)` -else - # normal mode - list ebuilds for ebuild name containing - - # installed packages - if [ ! "${uninst}" ]; then - ipak=`find /var/db/pkg/ -iname "*.ebuild" 2>/dev/null` - if [[ ${group} != "*" ]]; then - ipak=`echo ${ipak}|sed -e "s: :\n:g"|grep ${group}` - fi - if [ ${arg} ]; then - # avoid ${arg}="db" from pulling in every installed package - temp="/var/db/pkg/.*${arg}" - ipak=`echo ${ipak}|sed -e "s: :\n:g"|grep ${temp}` - fi - if [ -n "${mask}" ]; then - ipak=`echo ${ipak}|xargs -r egrep ${grepmask} "^KEYWORDS=.*[[:space:]\"\'](${mask})[[:space:]\"\']"` - fi - fi - # not installed packages (yet:-) - if [ ! "${inst}" ]; then - upak=`find /usr/portage/ -iname "*.ebuild" 2>/dev/null|grep -v --regex="/usr/portage/[^/]*\.ebuild"` - if [[ ${group} != "*" ]]; then - upak=`echo ${upak}|sed -e "s: :\n:g"|grep ${group}` - fi - if [ ${arg} ]; then - upak=`echo ${upak}|sed -e "s: :\n:g"|grep ${arg}` - fi - if [ -n "${mask}" ]; then - upak=`echo ${upak}|xargs -r egrep ${grepmask} "^KEYWORDS=.*[[:space:]\"\'](${mask})[[:space:]\"\']"` - fi - fi -fi - -X="\([^/]*\)" - -for p in ${ipak} ${upak} -;do - [ "${p}" = "-" ] && break - - # cut common prefix from ebuild name and mark installed/uninstalled packages - # Note: iii/uuu will be replaced by the pipe at the end - n=${p%.ebuild} - var_db_pkg="/var/db/pkg/" - n=${n/${var_db_pkg}/iii } - usr_portage="/usr/portage/" - n=${n/${usr_portage}/uuu } - n=${n/\/*\//\/} - - d=${p%\/*.ebuild} # faster d=`dirname ${p}` - echo ${n} - - # if we have no passed parameters then - # we can skip the extra conditional checks - [[ ${params} == 0 ]] && continue; - - if [ "${mask}" ]; then - keywords=`grep KEYWORDS ${p}| cut -d\" -f2` - echo -e "${T}Keywords: ${BL}${keywords}${NO}" - fi - - if [ ${verb} -gt 1 ];then - echo "vvv ${p}" - fi - - if [ "${info}" ]; then - home=`grep HOMEPAGE ${p}| cut -d\" -f2` - desc=`grep DESCRIPTION ${p}| cut -d\" -f2` - echo -e "${T}${BL}${desc}${NO} [ ${YL}${home}${NO} ]" - fi - - if [ "${query}" ]; then - echo -e "${BL}DEPENDED ON BY:${NO}" - package="`echo ${n}|sed -e 's:-r[0-9]\+$::' \ - -e 's:-[0-9].*$::' \ - -e 's:^iii ::' \ - -e 's:^uuu ::'`" - place="`echo ${n}|cut -f1 -d' '`" - [[ "${place}" == "iii" ]] && color="${GR}" || color="${RD}" - grep -R "${package}" /var/db/pkg/*/*/RDEPEND | \ - cut -f5,6 -d"/" | sed -e "s:^:\t${color}:;s:$:${NO}:" | sort | uniq -# gawk -F "/" '{printf("${place}\n\t%s/%s${NO}",$5,$6)}' | sort | uniq - fi - - # cat package content, remove obj/sym/dir, md5 and mtime when not verbose - # display only match in file-find mode unless extra verbose - if [ "${list}" ]; then - echo -e ${BL}CONTENTS:${NO} - - if [ ${verb} -gt 1 ]; then - cat ${d}/CONTENTS - else - if [ "${ffind}" ]; then - if [ "${fpat}" ]; then - grep "${arg}" $d/CONTENTS - else - grep " ${arg}\( .*\)*$" $d/CONTENTS - fi - else - cat $d/CONTENTS - fi | - if [ ${verb} -gt 0 ]; then - cat - else - sed -e "s:\(^obj \)\([^ ]*\)\(.*$\):\1${BR}\2${NO}:; - s:\(^sym \)\([^ ]*\)\( -> \)\([^ ]*\)\(.*$\):\1${CY}\2${NO}\3\4:; - s:\(^dir \)\([^ ]*\)\(.*$\):\1${YL}\2${NO}:" - fi - fi - - echo - - # check files mtime and md5, display summary at the end - elif [ "${tcheck}" -o "${mcheck}" ]; then - # counters - fe=0 - fs=0 - # read the CONTENTS file and check md5 and mtime if needed - # process only matching files in find-file mode unless extra verbose - cat ${d}/CONTENTS | - if [ "${ffind}" -a ${verb} -lt 2 ];then - if [ "${fpat}" ]; then - grep "${arg}" - else - grep " ${arg} " - fi - else - cat - fi | - ( - while read -a line - do - fs=$((fs + 1)) - - unset md5 - unset _md5 - unset mtime - unset _mtime - unset err - - name=${line[1]} - - missing= - [ ! -e ${name} ] && missing=1 - - # colorize name and compute mtime/md5 - if [ "obj" = ${line[0]} ]; then - [ -e ${name} ] && { - [ "${tcheck}" ] && mtime=${line[3]} - [ "${tcheck}" ] && _mtime=`date -r ${name} +%s` - - [ "${mcheck}" ] && md5=${line[2]} - [ "${mcheck}" ] && _md5=`md5sum ${name}|cut -f1 -d" "` - } - - name=${BR}${name}${NO} - - elif [ "sym" = ${line[0]} ]; then - name=${CY}${name}${NO} - - elif [ "dir" = ${line[0]} ]; then - name=${YL}${name}${NO} - fi - - # compare - if [ "$missing" ]; then - err=1 - name="${name} ${RD}!not exist!${NO}" - fi - if [ "${md5}" != "${_md5}" ]; then - #If the md5 fails the first time check it with - #everything changed to lowercase :-D - md5=`echo "${md5}"|tr A-Z a-z` - if [ "${md5}" != "${_md5}" ]; then - err=1 - name="${name} ${RD}!md5!${NO}" - fi - fi - if [ "${mtime}" != "${_mtime}" ]; then - err=1 - name="${name} ${RD}!mtime!${NO}" - fi - - [ ${verb} -gt 1 ] && echo -e ${name} - [[ ${verb} -eq 1 ]] && [[ $err -eq 1 ]] && echo -e ${name} - - fe=$((fe + err)) - done - if [ "$fe" = "0" ]; then - echo -e ${YL}$fe${CY}/$fs${NO} - else - echo -e ${RD}$fe${CY}/$fs${NO} - fi - echo - ) - fi - -done | ( - if [ ! \( "${tcheck}" -o "${mcheck}" -o "${info}" -o "${list}" -o "${query}" -o "${mask}" -o ${verb} -gt 0 \) ]; then - sed -e "s:-r[0-9]\+$::" -e "s:-[0-9][^-]*$::"|sort -k2|uniq -f1 - elif [ ! \( "${tcheck}" -o "${mcheck}" -o "${info}" -o "${list}" -o "${query}" -o "${mask}" -o ${verb} -lt 2 \) ]; then - sort -k2|uniq -f1 - else - cat - fi | sed \ - -e "s:^iii ${X}/${X}:${BR}\1/${CY}\2${STAR}${NO}:" \ - -e "s:^uuu ${X}/${X}:${BR}\1/${YL}\2${NO}:" \ - -e "s:^vvv \(.*\)$:${BL}\1${NO}:" \ - -e "s:^obj ::;s:^sym ::;s:^dir ::" - -) -""" -- 2.26.2