Check-in [0da19912b4]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview

SHA1 Hash:0da19912b4b389c9477bb518d525f2b78b5d27e7
Date: 2013-01-26 09:19:46
User: root
Comment:major overhaul find categories of packages, find_cat called from debdb2pupdb and 0setup, improved categories.dat. categories.dat also read by installpkg.sh

Tags And Properties
Changes

Changes to woof-arch/arm/build/support/debdb2pupdb

cannot compute difference between binary files

Changes to woof-arch/arm/build/support/find_cat

cannot compute difference between binary files

Changes to woof-arch/x86/build/support/debdb2pupdb

cannot compute difference between binary files

Changes to woof-arch/x86/build/support/find_cat

cannot compute difference between binary files

Changes to woof-code/0setup

@@ -23,10 +23,11 @@
 #121113 read Ubuntu-db 'Section' parameter to help assign category.
 #121113 ubuntu-db: introduce STARTMARKER field between db records.
 #121113 reverse question, enter only for ubuntu db -updates.
 #121116 0setup also runs in running puppy called from ppm. some o/p needs to be translated, done in /usr/share/sss/script_strings/script_strings. see below all LANGORG insertions.
 #121130 bug found, when not building a upup.
+#130126 find_cat rewritten. works as before, also can post-process an entire db-entry or db-entries-file. arch code rewritten by noryb009
 
 LANGORG="$(locale | grep '^LANG=' | cut -d '=' -f 2)" #121116
 export LANG=C #faster.
 
 if [ -f ./DISTRO_SPECS ];then
@@ -66,56 +67,15 @@
 [ -f ./support/debdb2pupdb ] && cp -f ./support/debdb2pupdb /usr/local/petget/ #121111 0setup needs it here, when run from PPM.
 #note, 3builddistro copies it into rootfs-complete/usr/local/petget when building a pup.
 #121112 note, debdb2pupdb no longer calls find_cat.
 
 #w015 to speed things up, this func replaced by compiled app support/find_cat ...
-if [ -f ./support/find_cat ];then
- FIND_CAT="./support/find_cat"
- cp -f ./support/find_cat /usr/local/petget/ #121111 new debdb2pupdb needs it here.
-else
- FIND_CAT="/usr/local/petget/find_cat" #0setup also used in running puppy.
-fi
-#find_cat_func() {
-# DB_category=""
-#    noPATTERN=" $DB_nameonly "
-#    [ "`echo "$PKG_CAT_Desktop" | grep "$noPATTERN"`" != "" ] && DB_category="Desktop"
-#    [ "`echo "$PKG_CAT_System" | grep "$noPATTERN"`" != "" ] && DB_category="System"
-#    [ "`echo "$PKG_CAT_Utility" | grep "$noPATTERN"`" != "" ] && DB_category="Utility"
-#    [ "`echo "$PKG_CAT_Filesystem" | grep "$noPATTERN"`" != "" ] && DB_category="Filesystem"
-#    [ "`echo "$PKG_CAT_Graphic" | grep "$noPATTERN"`" != "" ] && DB_category="Graphic"
-#    [ "`echo "$PKG_CAT_Document" | grep "$noPATTERN"`" != "" ] && DB_category="Document"
-#    [ "`echo "$PKG_CAT_Calculate" | grep "$noPATTERN"`" != "" ] && DB_category="Calculate"
-#    [ "`echo "$PKG_CAT_Personal" | grep "$noPATTERN"`" != "" ] && DB_category="Personal"
-#    [ "`echo "$PKG_CAT_Network" | grep "$noPATTERN"`" != "" ] && DB_category="Network"
-#    [ "`echo "$PKG_CAT_Internet" | grep "$noPATTERN"`" != "" ] && DB_category="Internet"
-#    [ "`echo "$PKG_CAT_Multimedia" | grep "$noPATTERN"`" != "" ] && DB_category="Multimedia"
-#    [ "`echo "$PKG_CAT_Fun" | grep "$noPATTERN"`" != "" ] && DB_category="Fun"
-#    [ "`echo "$PKG_CAT_Develop" | grep "$noPATTERN"`" != "" ] && DB_category="Develop"
-#    [ "`echo "$PKG_CAT_BuildingBlock" | grep "$noPATTERN"`" != "" ] && DB_category="BuildingBlock"
-#    [ "`echo "$PKG_CAT_Help" | grep "$noPATTERN"`" != "" ] && DB_category="Help"
-# #attempt to find it from the description...
-# if [ "$DB_category" = "" -a "$DB_description" != "" ];then
-#  #need to have these in a particular order...
-#  [ "`echo -n " $DB_description " | grep -i -E ' system | print | printing | process | hardware | monitor'`" != "" ] && DB_category="System"
-#  [ "`echo -n " $DB_description " | grep -i -E ' utility | archive| remote | backup | partition | terminal | storage | console '`" != "" ] && DB_category="Utility"
-#  [ "`echo -n " $DB_description " | grep -i -E ' window | screen | icon| desktop '`" != "" ] && DB_category="Desktop"
-#  [ "`echo -n " $DB_description " | grep -i -E ' filesystem | disk | batch | catalog| file manager | renamer | file | drive| disk| disc '`" != "" ] && DB_category="Filesystem"
-#  [ "`echo -n " $DB_description " | grep -i -E ' document | wordprocessor | text editor | hex editor | html editor |pdf editor |pdf viewer | dictionary | wysiwyg | open office| openoffice | postscript viewer | presentation | desktop publishing | word processor'`" != "" ] && DB_category="Document"
-#  [ "`echo -n " $DB_description " | grep -i -E ' calculate | calculator | spreadsheet | financ| measure| accounting | bookkeeping '`" != "" ] && DB_category="Calculate"
-#  [ "`echo -n " $DB_description " | grep -i -E ' personal | wiki | password | wikki | wik| notes | blog | address| database '`" != "" ] && DB_category="Personal"
-#  [ "`echo -n " $DB_description " | grep -i -E ' network | modem | dialup | firewall | file sharing | samba | server | port scanner | wireless | bluetooth | irda | lan | wan | vpn '`" != "" ] && DB_category="Network"
-#  [ "`echo -n " $DB_description " | grep -i -E ' internet | download| chat | irc |icq | yahoo |msn | instant messag| im client | ftp | sftp | ssh | secure shell | torrent | podcast | mail | email | news | browser | web | telnet '`" != "" ] && DB_category="Internet"
-#  [ "`echo -n " $DB_description " | grep -i -E ' multimedia | scanner | audio play| sound play| audio edit| sound edit| video play| video edit| video view| media player | song | ripper | recorder | burner | mixer '`" != "" ] && DB_category="Multimedia"
-#  [ "`echo -n " $DB_description " | grep -i -E ' game | games | boardgame | fun '`" != "" ] && DB_category="Fun"
-#  [ "`echo -n " $DB_description " | grep -i -E ' paint | painting | image edit| bitmap edit| vector edit| photo| graphic| font edit| image view| thumbnail'`" != "" ] && DB_category="Graphic"
-#  [ "`echo -n " $DB_description " | grep -i -E ' develop | development | programming | language | lua | vala |lisp | mono | assembler | bash '`" != "" ] && DB_category="Develop"
-#  [ "`echo -n " $DB_description " | grep -i -E ' howto | documentation | faq | doc | docs | help '`" != "" ] && DB_category="Help"
-#  [ "`echo -n " $DB_description " | grep -i " library "`" != "" ] && DB_category="BuildingBlock"
-#  [ "`echo -n "$DB_nameonly" | grep "^lib"`" != "" ] && DB_category="BuildingBlock"
-# fi
-# [ "$DB_category" = "" ] && DB_category="BuildingBlock" #default.
-#}
+[ -f ./support/find_cat ] && cp -f ./support/find_cat /usr/local/petget/ #130126
+FIND_CAT="/usr/local/petget/find_cat"
+
+#130126 make sure have latest in host system...
+[ -f rootfs-skeleton/usr/local/petget/categories.dat ] && cp -f rootfs-skeleton/usr/local/petget/categories.dat /usr/local/petget/
 
 if [ -f ./support/rpm2ppm ];then #110612
  RPM2PPM='./support/rpm2ppm'
 else
  RPM2PPM='/usr/local/petget/rpm2ppm' #see 3builddistro.
@@ -176,59 +136,70 @@
      slackware)
       RETSTAT=0
       mv -f $xDLFILE ${PKGLISTFILE}pre
      ;;
      arch)
+      #130126 arch code rewritten by noryb009: call find_cat afterward...
       LANG=${LANGORG} echo "Processing ${DLFILE} please wait..."
       xDLFILE="`basename $DLFILE .gz`" #actually it's a tarball: core.db.tar.gz, extra.db.tar.gz, community.db.tar.gz
-      gunzip $DLFILE
+      rm -rf sandbox0 2>/dev/null
+      mkdir sandbox0
+      cd sandbox0
+      tar xzf "../$DLFILE"
       RETSTAT=$?
+      cd ..
       if [ $RETSTAT -eq 0 ];then
-       rm -rf sandbox0 2>/dev/null
-       mkdir sandbox0
-       mv -f $xDLFILE sandbox0/
-       cd sandbox0
-       tar -x -f $xDLFILE
-       rm -f $xDLFILE
-       xxDLFILE="`basename $xDLFILE .db.tar`" #this will be core, extra, community
-       echo -n "" > ../${PKGLISTFILE}
-       for ONEDESCFOLDER in `ls`
-       do
-        EXTRACTEDINFO="`awk -v pkgpath="$xxDLFILE" -v FIND_CAT="$FIND_CAT" '{
-        if($1 == \"%FILENAME%\"){getline filename}
-        if($1 == \"%NAME%\"){getline pkgname}
-        if($1 == \"%VERSION%\"){getline pkgver; split(pkgver, pkgverarr, \"-\")}
-        if($1 == \"%DESC%\"){getline pkgdesc}
-        if($1 == \"%ISIZE%\"){getline pkgsize; pkgsize = pkgsize / 1024}
-       }END{
-        if(pkgdesc==""){cmd=\"../\" FIND_CAT \" \" pkgname \" \\\"nothing\\\"\"}
-        else{cmd=\"../\" FIND_CAT \" \" pkgname \" \\\"\" pkgdesc \"\\\"\"}
-        cmd |getline pkgcat;
-        printf(\"%s-%s|%s|%s|%s|%s|%sK|%s/os/i686|%s|DEPS|%s|\", pkgname, pkgverarr[1], pkgname, pkgverarr[1], pkgverarr[2], pkgcat, pkgsize, pkgpath, filename, pkgdesc)
-       }' ${ONEDESCFOLDER}/desc`"
-
-        #dependencies
-        if [ "`cat \"${ONEDESCFOLDER}/depends\" | grep '%DEPENDS%'`" = "" ]; then
-         DEPS=""
-        else #has deps
-         DEPS="`cat \"${ONEDESCFOLDER}/depends\" | grep -A999 '%DEPENDS%' | sed 1d`"
-         if [ "`echo \"${DEPS}\" | grep '%'`" != "" ]; then
-          DEPS="`echo \"${DEPS}\" | grep -m1 -B999 '%' | sed '$d'`"
-         fi
-         DEPS="`echo \"${DEPS}\" | sed '/^$/d' | tr '\n' ' ' | sed -e 's/ *$//'`"
-        fi
-
-        DEPS="`echo -n "$DEPS" | sed -e 's% $%%' | sed -e 's% %,+%g' | sed -e 's%^%+%'`"
-        [ "$DEPS" = "+" ] && DEPS="" #w016 bugfix. some don't have any deps specified.
-
-        EXTRACTEDINFO="`echo \"$EXTRACTEDINFO\" | sed \"s/DEPS/${DEPS}/\" | sed 's/[ ]*|/|/g' | sed 's/|[ ]*/|/g'`" #add deps, then trim spaces
-
-        echo "$EXTRACTEDINFO" >> ../${PKGLISTFILE}
-       done
-       cd ..
-       rm -rf sandbox0 2>/dev/null
+       rm -f "$DLFILE"
+       xxDLFILE="`basename $xDLFILE .db.tar.gz`" #this will be core, extra, community
+       for i in sandbox0/*; do
+        cat "$i/desc" "$i/depends"
+       done | awk -v pkgpath="$xxDLFILE" '
+        function output() {
+         if(filename == "") return;
+
+         printf("%s-%s|%s|%s|%s||%sK|%s/os/i686|%s|%s|%s|\n", pkgname, pkgverarr[1], pkgname, pkgverarr[1], pkgverarr[2], pkgsize, pkgpath, filename, pkgdeps, pkgdesc)
+         pkgname=""; pkgverarr[1]=""; pkgverarr[2]=""; pkgsize=""; filename=""; pkgdeps=""; inDeps=0; pkgdesc="";
+        }
+        BEGIN{
+         inDeps=0
+        }
+        {
+         if($1 == ""){
+          #do nothing
+         }else if($1 == "%FILENAME%"){
+          inDeps=0
+          output()
+          getline filename
+         }else if($1 == "%NAME%"){
+          inDeps=0
+          getline pkgname
+         }else if($1 == "%VERSION%"){
+          inDeps=0
+          getline pkgver; split(pkgver, pkgverarr, "-")
+         }else if($1 == "%DESC%"){
+          inDeps=0
+          getline pkgdesc
+         }else if($1 == "%ISIZE%"){
+          inDeps=0
+          getline pkgsize; pkgsize = pkgsize / 1024
+         }else if($1 == "%DEPENDS%"){
+          inDeps=1
+         }else if($1 ~ /^%/){
+          inDeps=0
+         }else if(inDeps == 1){ # dependency
+          if(pkgdeps != "") pkgdeps=pkgdeps","
+          pkgdeps=pkgdeps"+"
+          pkgdeps=pkgdeps$0
+         }
+        }
+        END{
+         output();
+        }
+       '  > /tmp/${ONE_PKGLISTS_COMPAT}temp
+       ${FIND_CAT} /tmp/${ONE_PKGLISTS_COMPAT}temp > $ONE_PKGLISTS_COMPAT #130126
       fi
+      rm -rf sandbox0 2>/dev/null
      ;;
      t2) #w017
       RETSTAT=0
      ;;
      puppy)
@@ -389,10 +360,11 @@
 do
  [ ! -f ${ONE_PKGLISTS_COMPAT}pre ] && continue
  echo
  LANG=${LANGORG} echo "Processing ${ONE_PKGLISTS_COMPAT} into a standard format..."
  echo -n "" > $ONE_PKGLISTS_COMPAT
+ echo -n "" > /tmp/${ONE_PKGLISTS_COMPAT}temp #130126
  case ${DISTRO_BINARY_COMPAT} in
   ubuntu|debian|raspbian)
 
    if [ -f /usr/local/petget/debdb2pupdb ];then #121111
     #new fast compiled app...
@@ -401,58 +373,60 @@
     #121113 added "Section"...
     #121113 insert STARTMARKER...
     MANIPULATED1="$(grep -E '^Package:|^Installed\-Size:|^Architecture:|^Version:|^Depends:|^Filename:|^Description:|^Homepage:|^Section:' ${ONE_PKGLISTS_COMPAT}pre | tr '[\t"|`]' ' ' | tr -s ' ' | sed -e 's%^Installed\-Size%InstalledSize%' -e 's%^Package:%STARTMARKER|PKG\nPackage:%' -e 's%: %|%' -e 's% $%%')" #`geany
     echo "$MANIPULATED1" > /tmp/woof-debdb.in
     #call new app. note, this in turn calls /usr/local/petget/find_pkgs...
-    /usr/local/petget/debdb2pupdb ${DISTRO_BINARY_COMPAT} ${DISTRO_COMPAT_VERSION} > $ONE_PKGLISTS_COMPAT
+    /usr/local/petget/debdb2pupdb ${DISTRO_BINARY_COMPAT} ${DISTRO_COMPAT_VERSION} > /tmp/${ONE_PKGLISTS_COMPAT}temp #130126 $ONE_PKGLISTS_COMPAT
+    ${FIND_CAT} /tmp/${ONE_PKGLISTS_COMPAT}temp > $ONE_PKGLISTS_COMPAT #130126
     #homepages also get logged...
     if [ -f /tmp/woof-homepages.acc ];then
      if [ -f ./PKGS_HOMEPAGES ];then #running in woof.
       cat  ./PKGS_HOMEPAGES >> /tmp/woof-homepages.acc
       sort --key=1,1 --field-separator=" " --unique /tmp/woof-homepages.acc > ./PKGS_HOMEPAGES #121113
      fi
     fi
-
    else
-   #120719 debian squeeze and earlier has Description field last, wheezy has Filename field last...
-   Description=''; Filename=''; Package=''; InstalledSize=''; Architecture=''; Version=''
-   endflag=''
-   while read DB_ONELINE
-   do
-    eval $DB_ONELINE
-    case $DB_ONELINE in
-     Description*)
+    DB_category="" #130126
+    #120719 debian squeeze and earlier has Description field last, wheezy has Filename field last...
+    Description=''; Filename=''; Package=''; InstalledSize=''; Architecture=''; Version=''
+    endflag=''
+    while read DB_ONELINE
+    do
+     eval $DB_ONELINE
+     case $DB_ONELINE in
+      Description*)
       [ "$Filename" ] && endflag='yes'
-     ;;
-     Filename*)
-      [ "$Description" ] && endflag='yes' #wheezy and later.
-     ;;
-    esac
-    if [ "$endflag" = "yes" ];then
-     DB_fullfilename="`echo -n "$Filename" | rev | cut -f 1 -d '/' | rev`"
-     DB_path="`echo -n "$Filename" | rev | cut -f 2-9 -d '/' | rev`"
-     DB_version="`echo -n "$Version" | sed -e 's%^[0-9]:%%' -e "$v1PATTERN" -e "$v2PATTERN"`"
-     DB_pkgrelease="`echo -n "$Version" | sed -e 's%^[0-9]:%%' -e "s%${DB_version}%%" -e 's%^\\-%%' -e 's%^\\+%%'`"
-     DB_pkgname="${Package}_${DB_version}"
-     #120815 for debian, ubuntu, use the generic name provided in the $DB_path, instead of $Package, for find_cat...
-     xPackage="$Package"
-     [ "$DB_path" ] && xPackage="$(basename "$DB_path")"
-     DB_category="`${FIND_CAT} $xPackage "$Description"`" #120812 find_cat now returns category[;subcategory], ex: Document;edit
-     DB_dependencies="`echo -n "$Depends" | sed -e 's%, %\n%g' | cut -f 1 -d ' ' | tr '\n' ' ' | sed -e 's% $%%' -e 's% %,+%g' -e 's%,$%%'`"
-     [ "$DB_dependencies" != "" ] && DB_dependencies='+'"$DB_dependencies"
-     echo "$DB_pkgname|$Package|$DB_version|$DB_pkgrelease|$DB_category|${InstalledSize}K|$DB_path|$DB_fullfilename|$DB_dependencies|$Description|" >> $ONE_PKGLISTS_COMPAT
-     echo -n "$Package "
-     Description=''; Filename=''; Package=''; InstalledSize=''; Architecture=''; Version=''
-     endflag=''
-    fi
-   done<<_END1
+      ;;
+      Filename*)
+       [ "$Description" ] && endflag='yes' #wheezy and later.
+      ;;
+     esac
+     if [ "$endflag" = "yes" ];then
+      DB_fullfilename="`echo -n "$Filename" | rev | cut -f 1 -d '/' | rev`"
+      DB_path="`echo -n "$Filename" | rev | cut -f 2-9 -d '/' | rev`"
+      DB_version="`echo -n "$Version" | sed -e 's%^[0-9]:%%' -e "$v1PATTERN" -e "$v2PATTERN"`"
+      DB_pkgrelease="`echo -n "$Version" | sed -e 's%^[0-9]:%%' -e "s%${DB_version}%%" -e 's%^\\-%%' -e 's%^\\+%%'`"
+      DB_pkgname="${Package}_${DB_version}"
+      #120815 for debian, ubuntu, use the generic name provided in the $DB_path, instead of $Package, for find_cat... 130126...
+      #xPackage="$Package"
+      #[ "$DB_path" ] && xPackage="$(basename "$DB_path")"
+      #DB_category="`${FIND_CAT} $xPackage "$Description"`" #120812 find_cat now returns category[;subcategory], ex: Document;edit
+      DB_dependencies="`echo -n "$Depends" | sed -e 's%, %\n%g' | cut -f 1 -d ' ' | tr '\n' ' ' | sed -e 's% $%%' -e 's% %,+%g' -e 's%,$%%'`"
+      [ "$DB_dependencies" != "" ] && DB_dependencies='+'"$DB_dependencies"
+      echo "$DB_pkgname|$Package|$DB_version|$DB_pkgrelease|$DB_category|${InstalledSize}K|$DB_path|$DB_fullfilename|$DB_dependencies|$Description|$DISTRO_BINARY_COMPAT|$DISTRO_COMPAT_VERSION|" >> /tmp/${ONE_PKGLISTS_COMPAT}temp #130126 $ONE_PKGLISTS_COMPAT
+      echo -n "$Package "
+      Description=''; Filename=''; Package=''; InstalledSize=''; Architecture=''; Version=''
+      endflag=''
+     fi
+    done<<_END1
 $(grep -E '^Package:|^Installed\-Size:|^Architecture:|^Version:|^Depends:|^Filename:|^Description:' ${ONE_PKGLISTS_COMPAT}pre | tr '[\t"|`]' ' ' | tr -s ' ' | grep -v '\\-dbg$' | sed -e 's%^Installed\-Size%InstalledSize%' -e 's%: %="%' -e 's% $%%' -e 's%$%"%')
 _END1
-
+    ${FIND_CAT} /tmp/${ONE_PKGLISTS_COMPAT}temp > $ONE_PKGLISTS_COMPAT #130126
    fi
   ;;
   slackware)
+   DB_category="" #130126
    #note stabellini site has PACKAGES.TXT for the official 12.2 repo, with dependency info.
    #however, there is an extra 'PACKAGE MIRROR' field so i have added this preprocess line...
    #some pipe (|) chars screw up dep info so replace with commas in the pre process #01micko 20110505
    sed -i 's%|%,%g' ${ONE_PKGLISTS_COMPAT}pre
    REPODATA0="`cat ${ONE_PKGLISTS_COMPAT}pre | grep -v '^PACKAGE MIRROR'`"
@@ -480,23 +454,24 @@
     #a problem, some entries in slacky db do not have a description in "( .... )" so look further...
     if [ "`grep "$dbPATTERN" ${ONE_PKGLISTS_COMPAT}pre | head -n 1 | grep '('`" = "" ];then
      DB_description="`grep "$dbPATTERN" ${ONE_PKGLISTS_COMPAT}pre | head -n 3 | tail -n 1 | cut -f 2-11 -d ' ' | tr '\-' ' ' | sed -e 's/[^0-9a-zA-Z.+_= ]//g'`"
     fi
     #get the category...
-    #w015 find_cat_func replaced by compiled app...
-    xDB_description="$DB_description"
-    [ "$DB_description" = "" ] && xDB_description="nothing"
-    DB_category="`${FIND_CAT} $DB_nameonly "$xDB_description"`" #120812 see updated find_cat
+    #w015 find_cat_func replaced by compiled app... 130126...
+    #xDB_description="$DB_description"
+    #[ "$DB_description" = "" ] && xDB_description="nothing"
+    #DB_category="`${FIND_CAT} $DB_nameonly "$xDB_description"`" #120812 see updated find_cat
     #pkgname, version...
     DB_pkgname="`echo -n "$DB_fullfilename" | sed -e 's%-i[3456]86.*%%' | sed -e 's%-noarch.*%%'`"
     noPATTERN="s%${DB_nameonly}%%"
     DB_version="`echo -n "$DB_pkgname" | sed -e "$noPATTERN" | sed -e 's%^\-%%'`"
     #add support for .txz pkgs...
     DB_pkgrelease="`echo -n "$DB_fullfilename" | sed -e 's%\.txz%%' | sed -e 's%\.tgz%%' | sed -e 's%.*\-i[3456]86%%' | sed -e 's%.*\-noarch%%' | sed -e 's%^\-%%'`"
-    echo "$DB_pkgname|$DB_nameonly|$DB_version|$DB_pkgrelease|$DB_category|$DB_size|$DB_path|$DB_fullfilename|$DB_dependencies|$DB_description|" >> $ONE_PKGLISTS_COMPAT
+    echo "$DB_pkgname|$DB_nameonly|$DB_version|$DB_pkgrelease|$DB_category|$DB_size|$DB_path|$DB_fullfilename|$DB_dependencies|$DB_description|$DISTRO_BINARY_COMPAT|$DISTRO_COMPAT_VERSION|" >> /tmp/${ONE_PKGLISTS_COMPAT}temp #130126 $ONE_PKGLISTS_COMPAT
     echo -n "$DB_nameonly "
    done
+   ${FIND_CAT} /tmp/${ONE_PKGLISTS_COMPAT}temp > $ONE_PKGLISTS_COMPAT #130126
   ;;
   arch)
    LANG=${LANGORG} echo "...it's already in the Puppy standard format."
   ;;
   t2) #w017

Changes to woof-code/rootfs-skeleton/usr/local/petget/categories.dat

@@ -1,101 +1,160 @@
-REM this data is included in 'debdb2pupdb.bac' at compile-time.
-REM the categories correspond to those defined in /etc/xdg/menus/hierarchy.
+#130124 format modified to be bash-include compatible.
+#130124 loaded at runtime by 'debdb2pupdb.bac' and 'find_cat.bac' in Woof.
+
+#the categories correspond to those defined in /etc/xdg/menus/hierarchy.
+#all pkg names must be lower-case, all variables have space-char both ends.
+
+PKGCAT_Desktop_Sub=" compiz gxset "
+PKGCAT_Desktop_appearance=" alacarte bisho desk_icon_theme_area042 desk_icon_theme_blue_moon desk_icon_theme_browndust desk_icon_theme_brown_marble desk_icon_theme_darkfire desk_icon_theme_fs desk_icon_theme_jq8flat desk_icon_theme_jungle desk_icon_theme_lagabluenight desk_icon_theme_malays_uniblack desk_icon_theme_malays_uniblue desk_icon_theme_neu desk_icon_theme_original desk_icon_theme_shining_silver desk_icon_theme_silver_marble desk_icon_theme_smooth_color desk_icon_theme_stardust desk_icon_theme_stark042 desktop-webmail-config edit-vcard empathy-accounts gm-notify-config gpe-conf gpe-conf-admin gpe-conf-cardinfo gpe-conf-keys gpe-conf-login-setup gpe-conf-network gpe-conf-ownerinfo gpe-conf-screen gpe-conf-serial gpe-conf-sleep gpe-conf-sound gpe-conf-sysinfo gpe-conf-theme gpe-conf-time gpe-conf-usb gpe-conf-users gtk-chtheme gtk_theme_citrus_cut gtk_theme_delicate_blue gtk_theme_fishing_the_sky gtk_theme_fishpie gtk_theme_flatbluecontrast gtk_theme_flat_grey gtk_theme_flat_grey_rounded gtk_theme_gradient_brown gtk_theme_gradient_grey gtk_theme_m8darker gtk_theme_phacile_blue gtk_theme_polished_blue gtk_theme_stardust_zigbert gtk_theme_stark indicator-datetime-preferences lxappearance lxsession-edit mail-notification-properties nact panel-preferences pwallpaper systempreferences tcosconfig tcos-configurator tcosmonitor thunar-settings thunar-volman-settings tint2conf wallpaper xfce4-accessibility-settings xfce4-notifyd-config xfce4-power-manager-settings xfce4-settings-editor xfce-backdrop-settings xfce-display-settings xfce-keyboard-settings xfce-mouse-settings xfce-session-settings xfce-settings-manager xfce-ui-settings xfce-wm-settings xfce-wmtweaks-settings xfce-workspaces-settings xfce-xfcalendar-settings xfprint-settings xscreensaver-properties "
+PKGCAT_Desktop_settings=" cellwriter daisy-player dasher easystroke ebook-speaker gxneur iok jwmconfig2 mousetrap myunity onboard onboard-settings orca pupx sitplus workrave xclock xkbconfigmanager "
+PKGCAT_Desktop_windows=" blackbox e16 fbpanel fluxbox fvwm icewm jwm2 lxpanel metacity obconf openbox twm windowmaker "
+PKGCAT_Desktop_sleep=" xlock_gui xlockmore "
+PKGCAT_Desktop_applet=" gfontsel glipper minixcal xclipboard "
+
+PKGCAT_System_Sub=" arandr blinky blueman-manager bluetooth-properties gnome-lirc-properties gpe-bluetooth gpointing-device-settings gstreamer-properties hardinfo keytouch-editor lxinput lxrandr palimpsest sysprof_dev usbview v4l2ucp xload "
+PKGCAT_System_process=" asapm batmon gastman gnome-power-statistics gnome-system-log gnome-system-monitor gpe-mininet gsmartcontrol lxtask mtink mtinkc nagstamon phoronix-test-suite pprocess pschedule timemon "
+PKGCAT_System_memory=" freememapplet freememapplet_tray freememapplet_xlib memtest memtester "
+PKGCAT_System_print=" gtklp hpijs hplip "
+PKGCAT_System_storage=" gparted "
+PKGCAT_System_security=" bokken cryptkeeper gnomint gpe-shield gpe-su "
+
+PKGCAT_Setup_Sub=""
+PKGCAT_Setup_puppy=" petget "
+PKGCAT_Setup_wizard=" net_setup net_setup_retro "
+PKGCAT_Setup_installation=" wakepup2 "
+
+PKGCAT_Utility_Sub=" alltray aqemu aranym arduino buxon clamav dosemu e-uae faum floppy freecad fritzing gadmin-rsync geda-xgsch2pcb gerbv gexec gtkwave gwave herculesstudio hiawatha isomaster kicad librecad linsmith lzma most nfoview q4wine qsapecng qtemu rfdump sailcut snotes uae visolate xfdiff-cut xfprot xfv "
+PKGCAT_Utility_development=" bzr-explorer bzr-handle-patch bzr-notify cameleon codeblocks cola deb-gview dfeet gecrit giggle gitg glade2bas_dev gnome-translate gphpedit gtranslator jhbuild lxrad lxrad_dev mausgrapher monkeystudio monodevelop nemiver ocamlcvs pida projectcenter projectmanager pyragua qgit qtcreator shoes tortoisehg virtaal winpdb "
+PKGCAT_Utility_package=" deja-dup deja-dup-ccpanel deja-dup-preferences dkopp file-roller pbackup pmirror ukopp xarchive xarchiver zipper "
+PKGCAT_Utility_shell=" cutecom debian-uxterm debian-xterm evilvte gksu gnome-terminal guake hotwire lxde-x-terminal-emulator lxterminal minicom moserial picocom roxterm rxvt rxvt-unicode sakura terminal terminator termit tilda urxvt-unicode xfce4-terminal xterm "
+PKGCAT_Utility_help=" helpviewer yelp "
+
+PKGCAT_Filesystem_Sub=" baobab daemonfs eiciel fslint gigolo prename "
+PKGCAT_Filesystem_filemanager=" emelfm2 gentoo gfnrename gpe-filemanager gprename gwhere mc nautilus pcmanfm rox_filer rox-filer thunar thunar-folder-handler uxplor worker xfe "
+PKGCAT_Filesystem_mount=" pdrive "
+PKGCAT_Filesystem_find=" pfind zfind "
+PKGCAT_Filesystem_storage=" gdmap "
+
+PKGCAT_Graphic_Sub=" agave aqsis aqsl aqsltell autoq3d autotrace blender calibrate_lens_gui cortina dfo djvusmooth eqsl evolvotron fontforge fontypython fracplanet frogr fyre g3dviewer gextractwinicons gliv gpe-screenshot gpick gpixpod grafx2 hugin javamorph k3d memaker mm3d pixelize ploader plotdrop posterazor postr ptbatchergui rgbpaint robocut sagcad screenie-qt structure-synth sunflow trimage veusz wings3d xaos xv "
+PKGCAT_Graphic_paint=" gimp gimp-help gnome-paint gthumb gthumb-import gwyddion lprof mtpaint mypaint nip2 pinta price qcomicbook qtpfsgui scantailor simple-image-reducer xpaint xsddiagram "
+PKGCAT_Graphic_draw=" cenon fontmatrix inkscape inkscapelite inkview latexdraw pencil qelectrotech tgif varicad xaralx xfig "
+PKGCAT_Graphic_flow=" dia dia-gnomeless "
+PKGCAT_Graphic_viewer=" apvlv camorama cbrpager djvulibre-djview4 eog feh flphoto flpsed font-manager font-sampler fotoxx geeqie-standard gimageview gnome-specimen gpe-gallery gpicview gqview gview lrfviewer meshlab mirage mupdf pdf-presenter-console piqsl preview ristretto "
+PKGCAT_Graphic_camera=" camera darktable fotoprint f-spot gphoto2 gtkam kornelix-fotoxx luciole lynkeos phatch phatch-inspector rapid-photo-downloader rawstudio rawtherapee shotwell shotwell-viewer ufraw "
+PKGCAT_Graphic_scanner=" gscan2pdf peasyscan simple-scan xsane "
+PKGCAT_Graphic_print=" peasyprint "
+PKGCAT_Graphic_utility=" gcolor2 grabc scale2x "
+
+PKGCAT_Document_Sub=" adobereader chmsee cssed emacs ghex gv jove libreoffice openoffice openoffice.org "
+PKGCAT_Document_layout=" abiword amaya bibus focuswriter kompozer lyx scribus texmaker webservice-office-zoho-writer "
+PKGCAT_Document_catalog=" ebview gbgoffice gkamus gnome-dictionary opendict qdacco qstardict xfce4-dict "
+PKGCAT_Document_edit=" bluefish chamo cream e3 geany gedit gpdftext gpe-edit gwrite ink jed joe juffed katoob leafpad medit mousepad mp nano pdfedit retext rhinote scite scribes tea textedit xfw xournal zedit zim "
+PKGCAT_Document_viewer=" epdfview fbreader txtreader xchm xman xpdf zathura "
+
+PKGCAT_Business_Sub=""
+PKGCAT_Business_spreadsheet=" gnumeric webservice-office-zoho-sheet "
+PKGCAT_Business_planner=" planner prerex webissues "
+PKGCAT_Business_finance=" acct expensetracker gnucash gpe-expenses grisbi homebank moneymanagerx neso tryton-client "
+PKGCAT_Business_calc=" calcoo calculator cgtkcalc edenmath galculator gcalctool gmeasures speedcrunch xcalc ycalc "
+
+PKGCAT_Personal_Sub=" datakiosk evolution "
+PKGCAT_Personal_database=" dlume "
+PKGCAT_Personal_date=" bitpim confclerk dates email-reminder osmo pcalendar simpleagenda xfcalendar "
+PKGCAT_Personal_organizer=" didiwiki jpilot notecase pplog "
+PKGCAT_Personal_security=" fpm2 "
+PKGCAT_Personal_timing=" pstopwatch ptimer "
+PKGCAT_Personal_education=" altos anki artemis athena auto-multiple-choice avogadro aweather basic256 bauble bibletime biogenesis bist bkchem boats brewtarget cadabra caret chemtool clustalx controlaula critterding ctsim cycle dcm2niigui denemo drawxtl drgeo dx easychem edfviewer eficas electric elementsinfo elki emboss-explorer emu8051 epigrass euler expeyes extrema felix fityk fraqtive freemat freespeak g3data gabedit gamgi garlic gausssum gcompris-edit gcx gdis gdpc gelemental geogebra geomview geotranz ghemical gmsh gns3 gofigure2 goldendict gperiodic gpsprune grace graphmonkey graphthing gresistor grinvin gvb gvrng hephaestus ifrit imagevis3d imview itksnap jclic jclicauthor jclicreports jfractionlab jmol josm k3dsurf kanatest kdrill klavaro kseg linthesia littlewizard lybniz massxpert mathomatic mathwar mcrl2-gui mmass mnemosyne model-builder mricron mricron-npm mrtrix netemul netgen njplot openteacher openuniverse optgeo oregano othman paraview pauker peakidentifier perlprimer perroquet pianobooster planets praat pspp pymca pymcaroitool pymol pyromaths python-whiteboard qalculate-gtk qliss3d qtiplot qtoctave qucs rasmol-classic rasmol-gtk reinteract relational rlplot saga_gui scilab scilab-adv-cli seaview sigviewer sixpack socnetv solfege spydr squeak starplot stellarium tagainijisho terraintool thawab tkgate treeviewx tunnelx turtleart tuxmath tuxtype udav ugene ul unrooted vbview2 viking vitables vmpk weka widemargin writetype wxgeometrie wxmaxima xabacus xflr5 xiphos xmakemol xoscope xspim xtide xyscan yade z88 "
+
+PKGCAT_Network_Sub=" wifi-radar wireshark "
+PKGCAT_Network_firewall=" fwbuilder linux_firewall "
+PKGCAT_Network_phone=" gnome-ppp gpptp pppoeconf_pup rp_pppoe_cli wvdial "
+PKGCAT_Network_connect=" chirp clusterssh cqrlog d-rats d-rats_mapdownloader d-rats_repeater epoptes flarq fldigi gfilemanager glfer gpsk31 gsmc hamfax kontrolpack linpsk monkey mtr nmap pnethood pwireless qrq qthid qthid-2 ssvnc superscan tqsl tqslcert twclock twpsk vinagre vino-preferences x11vnc xlog "
+PKGCAT_Network_transfer=" file_sharing-curlftpfs-mpscan pure_ftpd "
+PKGCAT_Network_utility=" autoconnect bind "
 
-CONST PKG_CAT_Desktop_Sub$=" compiz gxset "
-CONST PKG_CAT_Desktop_appearance$=" alacarte bisho desk_icon_theme_area042 desk_icon_theme_blue_moon desk_icon_theme_browndust desk_icon_theme_brown_marble desk_icon_theme_darkfire desk_icon_theme_fs desk_icon_theme_jq8flat desk_icon_theme_jungle desk_icon_theme_lagabluenight desk_icon_theme_malays_uniblack desk_icon_theme_malays_uniblue desk_icon_theme_neu desk_icon_theme_original desk_icon_theme_shining_silver desk_icon_theme_silver_marble desk_icon_theme_smooth_color desk_icon_theme_stardust desk_icon_theme_stark042 desktop-webmail-config edit-vcard empathy-accounts gm-notify-config gpe-conf gpe-conf-admin gpe-conf-cardinfo gpe-conf-keys gpe-conf-login-setup gpe-conf-network gpe-conf-ownerinfo gpe-conf-screen gpe-conf-serial gpe-conf-sleep gpe-conf-sound gpe-conf-sysinfo gpe-conf-theme gpe-conf-time gpe-conf-usb gpe-conf-users gtk-chtheme gtk_theme_citrus_cut gtk_theme_delicate_blue gtk_theme_fishing_the_sky gtk_theme_fishpie gtk_theme_flatbluecontrast gtk_theme_flat_grey gtk_theme_flat_grey_rounded gtk_theme_gradient_brown gtk_theme_gradient_grey gtk_theme_m8darker gtk_theme_phacile_blue gtk_theme_polished_blue gtk_theme_stardust_zigbert gtk_theme_stark indicator-datetime-preferences lxappearance lxsession-edit mail-notification-properties nact panel-preferences pwallpaper systempreferences tcosconfig tcos-configurator tcosmonitor thunar-settings thunar-volman-settings tint2conf wallpaper xfce4-accessibility-settings xfce4-notifyd-config xfce4-power-manager-settings xfce4-settings-editor xfce-backdrop-settings xfce-display-settings xfce-keyboard-settings xfce-mouse-settings xfce-session-settings xfce-settings-manager xfce-ui-settings xfce-wm-settings xfce-wmtweaks-settings xfce-workspaces-settings xfce-xfcalendar-settings xfprint-settings xscreensaver-properties "
-CONST PKG_CAT_Desktop_settings$=" cellwriter daisy-player dasher easystroke ebook-speaker gxneur iok jwmconfig2 mousetrap myunity onboard onboard-settings orca pupx sitplus workrave xclock xkbconfigmanager "
-CONST PKG_CAT_Desktop_windows$=" blackbox e16 fbpanel fluxbox fvwm icewm jwm2 lxpanel metacity obconf openbox twm windowmaker "
-CONST PKG_CAT_Desktop_sleep$=" xlock_gui xlockmore "
-CONST PKG_CAT_Desktop_applet$=" gfontsel glipper minixcal xclipboard "
+PKGCAT_Internet_Sub=" alpine bitchx elm epic4 filezilla flock gajim jags ihu licq mcabber mldonkey nn urlgfe "
+PKGCAT_Internet_browser=" chromium dillo dooble elinks firefox gtkmoz links links2 luakit lxde-x-www-browser lynx midori midori-private mozilla-firefox netsurf seamonkey seamonkey_addons skipstone "
+PKGCAT_Internet_chat=" ayttm ekiga emesene empathy kadu mumble openfetion pidgin pidgin_perl psip psi-plus qutecom qutim tkabber wengophone xchat "
+PKGCAT_Internet_mailnews=" balsa balsa-mailto-handler claws-mail desktop-webmail fetchmail getmail gnome-gmail-notifier gnubiff grr liferea lusernet mail-notification mailx mozilla-thunderbird msmtp mutt pan plopfolio postler sendmail sylpheed telegnome tickr xpn yarssr "
+PKGCAT_Internet_transfer=" amule amuleadunanza axel azureus bareftp dropbox dvcs-autosync flush gallery-uploader gcurl gftp gnome-btdownload gnunet-gtk gnunet-qt gtk-gnutella imageshackuploader kvirc lftp linphone linuxdcpp loqui lottanzb miro ncftp nicotine pctorrent puppy-podcast-grabber pwget qbittorrent sabnzbdplus steadyflow talksoup transgui twinkle uget-gtk valknut "
+PKGCAT_Internet_login=" ssh_gui "
+PKGCAT_Internet_block=" adblock "
+PKGCAT_Internet_utility=" flashplayer gurlchecker "
 
-CONST PKG_CAT_System_Sub$=" arandr blinky blueman-manager bluetooth-properties gnome-lirc-properties gpe-bluetooth gpointing-device-settings gstreamer-properties hardinfo keytouch-editor lxinput lxrandr palimpsest sysprof_dev usbview v4l2ucp xload "
-CONST PKG_CAT_System_process$=" asapm batmon gastman gnome-power-statistics gnome-system-log gnome-system-monitor gpe-mininet gsmartcontrol lxtask mtink mtinkc nagstamon phoronix-test-suite pprocess pschedule timemon "
-CONST PKG_CAT_System_memory$=" freememapplet freememapplet_tray freememapplet_xlib memtest memtester "
-CONST PKG_CAT_System_print$=" gtklp hpijs hplip "
-CONST PKG_CAT_System_storage$=" gparted "
-CONST PKG_CAT_System_security$=" bokken cryptkeeper gnomint gpe-shield gpe-su "
+PKGCAT_Multimedia_Sub=" abraca acidrip arista avidemux-gtk cameramonitor cheese cinelerra cowbell devede dkop dvd95 earcandy entagged freevo freewheeling gimmix gjacktransport glurp gmerlin-recorder gmerlin-transcoder gmerlin-visualizer gmlive gmpc gnomad2 gnome-media-player goobox gtkpod gtk-recordmydesktop gwc hasciicam hdhr ifpgui imagination iriverter istanbul jackeq jack-rack jajuk jokosher kazam laditray lebiniou lyricue lyricue_display mediatomb milkytracker mpg321 mythnettv nted oggconvert ogmrip photofilmstrip pithos playitslowly pmetatagger puddletag qnapi rhythmbox-ubuntuone soundconverter streamtuner2 sweep theorur tinyeartrainer transmageddon tunapie tvtime videoporama viridian workbone xvattr "
+PKGCAT_Multimedia_mediaplayer=" amarok amp aqualung audacious betaradio bino bluemindo clementine cynthiune decibel-audio-player esperanza exaile gbemol gecko-mediaplayer gespeaker gmbox gmerlin-player gnash gnome-mplayer gogglesmm gpe-soundbite-play guayadeque gxine gxmms2 lightspark listen lxmusic mpdcon mplayer mplayer_codecs_basic mplayer_codecs_full mplayer-fonts mplayerplug-in musique ncmpcpp parole pmusic pmusic_theme_pmusic_original pykaraoke quodlibet radiotray smplayer smplayer_enqueue sonata totem vagalume videocut wavesurfer xfmedia xfmpc xine-ui xjadeo "
+PKGCAT_Multimedia_audiovideo=" aliki-alsa aliki-jack canorus dvbcut easytag fmit gmerlin-kbd gnome-subtitles goattracker kino lives longomatch mistelix mp3diags mp3splt-gtk mscore openshot petri-foo picard poe projectx qmidiarp qtgain showq songwrite specimen subtitleeditor tagtool themonospot toonloop winff xcfa "
+PKGCAT_Multimedia_sound=" absvolume absvolume_puppy aeolus ams amsynth ardour ario audacity aumix brp-pacu buzztard-edit chordata composite dino djplay ebumeter espeak-gui foo-yc20 freqtweak gdigi genpo gmerlin-alsamixer gmidimonitor-alsa gmidimonitor-jack gmtp gmusicbrowser gnome-sound-recorder gpe-mixer gpe-soundbite-record gtick gtklick horgand hydrogen jaaa-alsa jaaa-jack jackbeat jack-keyboard jack_mixer jamin japa-alsa japa-jack jkmeter jmeters jnoisemeter kluppe lastfm livemix ll-scope lv2rack madplay meterbridge mhwaveedit mixxx mudita24 nekobee networkeditor paman patchage pavucontrol promoe qarecord qmidiroute qmmp qmmp_cue qmmp_enqueue qsampler qtractor rakarrack ripperx rosegarden seq24 sgmixer sineshaper sooperlooper sound-juicer spek tetraproc timemachine timidity++ traverso tuxguitar vkeybd wavbreaker xfce4-mixer yoshimi zita-at1 zita-rev1 zmixer zynaddsubfx zynjacku "
+PKGCAT_Multimedia_video=" dvdrip dvdrip-queue gaupol guvcview landell mediathekview me-tv minitube pupdvdtool subdownloader "
+PKGCAT_Multimedia_optical=" acetoneiso asunder brasero cdw furiusisomount grafburn pburn pburn_theme_pburn_original pcdripper pdvdrsab ripoff simpleburn xcdroast xfburn xfreecd "
+PKGCAT_Multimedia_utility=" gjackclock "
 
-CONST PKG_CAT_Setup_Sub$=""
-CONST PKG_CAT_Setup_puppy$=" petget "
-CONST PKG_CAT_Setup_wizard$=" net_setup net_setup_retro "
-CONST PKG_CAT_Setup_installation$=" wakepup2 "
+PKGCAT_Fun_Sub=" angrydd barrage bastet billard-gl blockout2 bomberclone bygfoot childsplay connectagram crack-attack csmash cuyo dossizola fceu fceux fgo fgrun flightgear flobopuyo foobillard freealchemist freedroid freetennis freevial frozen-bubble garden gargoyle gcompris gfceu ghextris gmchess gnomekiss gnome-mud gnurobbo gpe-tetris gplanarity gtans gtetrinet hannah hex-a-hop hexalate lbreakout2 lincity-ng llk_linux lmemory ltris magicor minetest mokomaze monkey-bubble oolite openbve openttd pcsx peg-e playonlinux pybik pyrocket pysycache pysycache-admin qwbfsmanager raincat renpy searchandrescue simutrans slimevolley smc supertux tanglet tennix tictactoe-ng tile tmw torcs tuxfootball vbaexpress vitetris wesnoth wormux xbarrel xcubes xdino xhexagons xinvaders xmball xmlink xmoto xoct xpanex xpyraminx xrubik xskewb xtriangles "
+PKGCAT_Fun_adventure=" abe adanaxisgpl adonthell-data alex4 amphetamine angband-gtk angband-sdl angband-x11 ardentryst armagetronad assaultcube asylum balazar balazarbrothers ballz between blobwars bubbros ceferino chocolate-doom crossfire-client cytadela egoboo exult flare freedink-dfarc freedoom freedroidrpg gl-117 gravitation jumpnbump kball lincity lugaru meritous mudlet open-invaders out-of-order passage powder reminiscence rott snake4 stepbill stormbaancoureur supertuxkart transcend trigger-rally wolf4sdl xqf yofrankie-bge "
+PKGCAT_Fun_boardgame=" asciijump biloba brutalchess cgoban dreamchess eboard gamazons glchess gnome-mastermind gnubg gnuchess gnudoq gomoku gpe-go grhino gtkatlantic londonlaw mah-jong openyahtzee penguin-canfield penguin-spider penguin-taipei penguin-taipei-editor pente pentobi pioneers pioneers-editor pioneers-server pychess pyscrabble quarry xboard yahtzeesharp "
+PKGCAT_Fun_cardgame=" freecell holdingnuts penguin-freecell penguin-golf penguin-solitaire penguin-thornq pokerth pybridge pysol xmahjongg "
+PKGCAT_Fun_puzzle=" 0ad 4digits 7kaa amoebax anagramarama asc attal attalscenario attalserver attaltheme berusky blackboxgame blocks-of-the-undead boswars bridges colorcode cube dominosa einstein enigma fifteen fillets-ng filling flipgame galaxies gbnclient gbnserver gbrainy gfpoken glob2 glpeces gmult gnubik golly gtkballs gtkboard gweled hedgewars hitori inertia jigzo keen kiki-the-nano-bot krank laby lgeneral lightup lightyears lmarbles loopy lordsawar lordsawar-army-editor lordsawar-editor lordsawar-tile-editor magnets megaglest mines netgame netpanzer netrek-client-cow netslide numptyphysics opencity pathogen pathological pattern pearl pegs pegsolitaire peg-solitaire penguin-mastermind penguin-merlin penguin-minesweeper penguin-pegged phlipple picpuz pingus pipewalker primrose pynagram qxw range rect rubix samegame shisen signpost singles singularity sixteen slant slingshot snowball solo spacezero spring springlobby tents tetzle towers triplea twiddle tworld unequal unknown-horizons untangle warzone2100 widelands zaz "
+PKGCAT_Fun_shooter=" xsoldier "
+PKGCAT_Fun_arcade=" a7xpg airstrike alien-arena balder2d biniax2 blobandconquer blobby bloboats blockattack bouncy briquolo btanks burgerspace chromium-bsu circuslinux cultivation dopewars empcommand enemylines3 enemylines7 epiphany-game extremetuxracer freegish frogatto funnyboat gemdropx gltron gnome-breakout gnujump gunroar holotz-castle ii-esu ketm kobodeluxe koules liquidwar monster-masher monsterz mu-cade neverball nexuiz nikwi njam oneisenough openarena orbital-eunuchs-sniper pangzero parsec47 performous pixbros pixfrogger plee-the-bear powermanga projectl pyracerz quake3 ri-li rrootage sandboxgamemaker sauerbraten scorched3d sdl-ball sopwith sponc starvoyager supertux2 tatan tecnoballz teeworlds titanion tomatoes toppler torus-trooper trackballs triplane trophy tumiki-fighters uqm viruskiller vodovod warmux whichwayisup xbill xboing xgalaga xgalaga-hyperspace xscorch xwelltris zatacka "
 
-CONST PKG_CAT_Utility_Sub$=" alltray aqemu aranym arduino buxon clamav dosemu e-uae faum floppy freecad fritzing gadmin-rsync geda-xgsch2pcb gerbv gexec gtkwave gwave herculesstudio hiawatha isomaster kicad librecad linsmith lzma most nfoview q4wine qsapecng qtemu rfdump sailcut snotes uae visolate xfdiff-cut xfprot xfv "
-CONST PKG_CAT_Utility_development$=" bzr-explorer bzr-handle-patch bzr-notify cameleon codeblocks cola deb-gview dfeet gecrit giggle gitg glade2bas_dev gnome-translate gphpedit gtranslator jhbuild lxrad lxrad_dev mausgrapher monkeystudio monodevelop nemiver ocamlcvs pida projectcenter projectmanager pyragua qgit qtcreator shoes tortoisehg virtaal winpdb "
-CONST PKG_CAT_Utility_package$=" deja-dup deja-dup-ccpanel deja-dup-preferences dkopp file-roller pbackup pmirror ukopp xarchive xarchiver zipper "
-CONST PKG_CAT_Utility_shell$=" cutecom debian-uxterm debian-xterm evilvte gksu gnome-terminal guake hotwire lxde-x-terminal-emulator lxterminal minicom moserial picocom roxterm rxvt rxvt-unicode sakura terminal terminator termit tilda urxvt-unicode xfce4-terminal xterm "
-CONST PKG_CAT_Utility_help$=" helpviewer yelp "
-
-CONST PKG_CAT_Filesystem_Sub$=" baobab daemonfs eiciel fslint gigolo prename "
-CONST PKG_CAT_Filesystem_filemanager$=" emelfm2 gentoo gfnrename gpe-filemanager gprename gwhere mc nautilus pcmanfm rox_filer rox-filer thunar thunar-folder-handler uxplor worker xfe "
-CONST PKG_CAT_Filesystem_mount$=" pdrive "
-CONST PKG_CAT_Filesystem_find$=" pfind zfind "
-CONST PKG_CAT_Filesystem_storage$=" gdmap "
-
-CONST PKG_CAT_Graphic_Sub$=" agave aqsis aqsl aqsltell autoq3d autotrace blender calibrate_lens_gui cortina dfo djvusmooth eqsl evolvotron fontforge fontypython fracplanet frogr fyre g3dviewer gextractwinicons gliv gpe-screenshot gpick gpixpod grafx2 hugin javamorph k3d memaker mm3d pixelize ploader plotdrop posterazor postr ptbatchergui rgbpaint robocut sagcad screenie-qt structure-synth sunflow trimage veusz wings3d xaos xv "
-CONST PKG_CAT_Graphic_paint$=" gimp gimp-help gnome-paint gthumb gthumb-import gwyddion lprof mtpaint mypaint nip2 pinta price qcomicbook qtpfsgui scantailor simple-image-reducer xpaint xsddiagram "
-CONST PKG_CAT_Graphic_draw$=" cenon fontmatrix inkscape inkscapelite inkview latexdraw pencil qelectrotech tgif varicad xaralx xfig "
-CONST PKG_CAT_Graphic_flow$=" dia dia-gnomeless "
-CONST PKG_CAT_Graphic_viewer$=" apvlv camorama cbrpager djvulibre-djview4 eog feh flphoto flpsed font-manager font-sampler fotoxx geeqie-standard gimageview gnome-specimen gpe-gallery gpicview gqview gview lrfviewer meshlab mirage mupdf pdf-presenter-console piqsl preview ristretto "
-CONST PKG_CAT_Graphic_camera$=" camera darktable fotoprint f-spot gphoto2 gtkam kornelix-fotoxx luciole lynkeos phatch phatch-inspector rapid-photo-downloader rawstudio rawtherapee shotwell shotwell-viewer ufraw "
-CONST PKG_CAT_Graphic_scanner$=" gscan2pdf peasyscan simple-scan xsane "
-CONST PKG_CAT_Graphic_print$=" peasyprint "
-CONST PKG_CAT_Graphic_utility$=" gcolor2 grabc scale2x "
+PKGCAT_Develop_Sub=" anjuta bacon boo clisp cmake cvs gambas lua mercurial mono nant ocaml nasm poedit ruby subversion svn vala valgrind "
 
-CONST PKG_CAT_Document_Sub$=" adobereader chmsee cssed emacs ghex gv jove libreoffice openoffice openoffice.org "
-CONST PKG_CAT_Document_layout$=" abiword amaya bibus focuswriter kompozer lyx scribus texmaker webservice-office-zoho-writer "
-CONST PKG_CAT_Document_catalog$=" ebview gbgoffice gkamus gnome-dictionary opendict qdacco qstardict xfce4-dict "
-CONST PKG_CAT_Document_edit$=" bluefish chamo cream e3 geany gedit gpdftext gpe-edit gwrite ink jed joe juffed katoob leafpad medit mousepad mp nano pdfedit retext rhinote scite scribes tea textedit xfw xournal zedit zim "
-CONST PKG_CAT_Document_viewer$=" epdfview fbreader txtreader xchm xman xpdf zathura "
+PKGCAT_BuildingBlock_Sub=" 915resolution a2ps a52dec acl alsa-lib alsa-utils atk audiofile aufs autocutsel autologin bash bbc_provided bc bcrypt bdb bin boehm-gc bogofilter bridge-utils busybox buttondialog bzip2 cairo cairomm cddetect cdp cdparanoia cdrdao cdrkit cdrtools chmlib coreutils cpio ctorrent cups cups_pdf curl ddcprobe device_mapper dhcp dhcpcd dhcp_client dialog dictd_client dietlibc diffstat diffutils disktype dmidecode docbook-xml dosfstools dotpuphandler dpkg-deb dvdauthor dvd+rwtools e2fsprogs ed edid eject elspci enchant exiv2 expat faac faad2 ffmpeg file findutils flac foomatic-filters freetype fribidi fuse gail gawk gcc gdbm getdir gettext ghostscript gifsicle gins glib glibc glibc_i18n_en glibc_locales glibmm gnome_menus goffice goffice7 grep grub gtk+ gtkdialog gtkdialog2 gtkdialog3 gtklist04mu gtklogfileviewer gtkmm guess_fs gutenprint gxmessage gzip hdparm hicolor-icon-theme hotplug2stdout hsfmodem id3lib ifplugd ifplugd_old inotail inotify-tools installwatch iptables jasper kbd lame lcms less libao libart libcap libcddb libcdio libdaemon libdvdcss libdvdnav libdvdplay libdvdread libexif libexif-gtk libexo libexo_lib libgd libgif libglade libgnomecanvas libgnomecanvasmm libgnomecups libgnomeprint libgnomeprintui libgphoto2 libgsf libid3tag libidl libjpeg libmad libmng libogg libpng librsvg libsigc++ libsndfile libstdc++ libtiff libtool libungif libusb libvorbis libxfce4util libxfcegui4 libxml libxml_python libxscrnsaver libxslt libxslt_python linux-header metamail mimencode mirdir mktemp modem_stats module-init-tools module_init_tools mp3info mut2 ncompress ncurses ndiswrapper nenscript netpbm net-tools normalize ntfs-3g ntfsprogs openssh_client openssl pango parted pciutils pcmcia-cs pcmciautils pcre perl perl-compress-zlib perl-digest-sha1 perl-extutils-depends perl-extutils-pkgconfig perl-html-parser perl-uri perl-xml-parser perl-xml-simple pfilesearch pixman poppler popt ppp pptp procinfo procps programchooser psmisc pup_dock puppybasic puppyinputdetect puppyserialdetect qt4 readline reiserfsprogs replaceit rman rsync samba samba_client sane-backends sdparm sed setserial setvol sgml-base since sqlite squashfs_tools squashfs-tools startup-notification sysfsutils syslinux sysvinit tar time truncate udev udev_cut unclutter unionfs_utils unzip util-linux vamps vcdimager vorbis-tools waitmax wavplay wget wireless-tools wpa_supplicant wv x264 xclip xcut xdg_puppy xdialog xine-lib xine-plugin xmessage xorg_base xorg_really_base xorg_xfbdev xorg_xorg_base xorg_xorg_dri xorg_xorg_full_dri xorg_xorg_servers xorg_xvesa xvidcore yaf_splash zenity zip zlib "
 
-CONST PKG_CAT_Business_Sub$=""
-CONST PKG_CAT_Business_spreadsheet$=" gnumeric webservice-office-zoho-sheet "
-CONST PKG_CAT_Business_planner$=" planner prerex webissues "
-CONST PKG_CAT_Business_finance$=" acct expensetracker gnucash gpe-expenses grisbi homebank moneymanagerx neso tryton-client "
-CONST PKG_CAT_Business_calc$=" calcoo calculator cgtkcalc edenmath galculator gcalctool gmeasures speedcrunch xcalc ycalc "
-
-CONST PKG_CAT_Personal_Sub$=" datakiosk evolution "
-CONST PKG_CAT_Personal_database$=" dlume "
-CONST PKG_CAT_Personal_date$=" bitpim confclerk dates email-reminder osmo pcalendar simpleagenda xfcalendar "
-CONST PKG_CAT_Personal_organizer$=" didiwiki jpilot notecase pplog "
-CONST PKG_CAT_Personal_security$=" fpm2 "
-CONST PKG_CAT_Personal_timing$=" pstopwatch ptimer "
-CONST PKG_CAT_Personal_education$=" altos anki artemis athena auto-multiple-choice avogadro aweather basic256 bauble bibletime biogenesis bist bkchem boats brewtarget cadabra caret chemtool clustalx controlaula critterding ctsim cycle dcm2niigui denemo drawxtl drgeo dx easychem edfviewer eficas electric elementsinfo elki emboss-explorer emu8051 epigrass euler expeyes extrema felix fityk fraqtive freemat freespeak g3data gabedit gamgi garlic gausssum gcompris-edit gcx gdis gdpc gelemental geogebra geomview geotranz ghemical gmsh gns3 gofigure2 goldendict gperiodic gpsprune grace graphmonkey graphthing gresistor grinvin gvb gvrng hephaestus ifrit imagevis3d imview itksnap jclic jclicauthor jclicreports jfractionlab jmol josm k3dsurf kanatest kdrill klavaro kseg linthesia littlewizard lybniz massxpert mathomatic mathwar mcrl2-gui mmass mnemosyne model-builder mricron mricron-npm mrtrix netemul netgen njplot openteacher openuniverse optgeo oregano othman paraview pauker peakidentifier perlprimer perroquet pianobooster planets praat pspp pymca pymcaroitool pymol pyromaths python-whiteboard qalculate-gtk qliss3d qtiplot qtoctave qucs rasmol-classic rasmol-gtk reinteract relational rlplot saga_gui scilab scilab-adv-cli seaview sigviewer sixpack socnetv solfege spydr squeak starplot stellarium tagainijisho terraintool thawab tkgate treeviewx tunnelx turtleart tuxmath tuxtype udav ugene ul unrooted vbview2 viking vitables vmpk weka widemargin writetype wxgeometrie wxmaxima xabacus xflr5 xiphos xmakemol xoscope xspim xtide xyscan yade z88 "
-
-CONST PKG_CAT_Network_Sub$=" wifi-radar wireshark "
-CONST PKG_CAT_Network_firewall$=" fwbuilder linux_firewall "
-CONST PKG_CAT_Network_phone$=" gnome-ppp gpptp pppoeconf_pup rp_pppoe_cli wvdial "
-CONST PKG_CAT_Network_connect$=" chirp clusterssh cqrlog d-rats d-rats_mapdownloader d-rats_repeater epoptes flarq fldigi gfilemanager glfer gpsk31 gsmc hamfax kontrolpack linpsk monkey mtr nmap pnethood pwireless qrq qthid qthid-2 ssvnc superscan tqsl tqslcert twclock twpsk vinagre vino-preferences x11vnc xlog "
-CONST PKG_CAT_Network_transfer$=" file_sharing-curlftpfs-mpscan pure_ftpd "
-CONST PKG_CAT_Network_utility$=" autoconnect bind "
-
-CONST PKG_CAT_Internet_Sub$=" alpine bitchx elm epic4 filezilla flock gajim jags ihu licq mcabber mldonkey nn urlgfe "
-CONST PKG_CAT_Internet_browser$=" chromium dillo dooble elinks firefox gtkmoz links links2 luakit lxde-x-www-browser lynx midori midori-private mozilla-firefox netsurf seamonkey seamonkey_addons skipstone "
-CONST PKG_CAT_Internet_chat$=" ayttm ekiga emesene empathy kadu mumble openfetion pidgin pidgin_perl psip psi-plus qutecom qutim tkabber wengophone xchat "
-CONST PKG_CAT_Internet_mailnews$=" balsa balsa-mailto-handler claws-mail desktop-webmail fetchmail getmail gnome-gmail-notifier gnubiff grr liferea lusernet mail-notification mailx mozilla-thunderbird msmtp mutt pan plopfolio postler sendmail sylpheed telegnome tickr xpn yarssr "
-CONST PKG_CAT_Internet_transfer$=" amule amuleadunanza axel azureus bareftp dropbox dvcs-autosync flush gallery-uploader gcurl gftp gnome-btdownload gnunet-gtk gnunet-qt gtk-gnutella imageshackuploader kvirc lftp linphone linuxdcpp loqui lottanzb miro ncftp nicotine pctorrent puppy-podcast-grabber pwget qbittorrent sabnzbdplus steadyflow talksoup transgui twinkle uget-gtk valknut "
-CONST PKG_CAT_Internet_login$=" ssh_gui "
-CONST PKG_CAT_Internet_block$=" adblock "
-CONST PKG_CAT_Internet_utility$=" flashplayer gurlchecker "
-
-CONST PKG_CAT_Multimedia_Sub$=" abraca acidrip arista avidemux-gtk cameramonitor cheese cinelerra cowbell devede dkop dvd95 earcandy entagged freevo freewheeling gimmix gjacktransport glurp gmerlin-recorder gmerlin-transcoder gmerlin-visualizer gmlive gmpc gnomad2 gnome-media-player goobox gtkpod gtk-recordmydesktop gwc hasciicam hdhr ifpgui imagination iriverter istanbul jackeq jack-rack jajuk jokosher kazam laditray lebiniou lyricue lyricue_display mediatomb milkytracker mpg321 mythnettv nted oggconvert ogmrip photofilmstrip pithos playitslowly pmetatagger puddletag qnapi rhythmbox-ubuntuone soundconverter streamtuner2 sweep theorur tinyeartrainer transmageddon tunapie tvtime videoporama viridian workbone xvattr "
-CONST PKG_CAT_Multimedia_mediaplayer$=" amarok amp aqualung audacious betaradio bino bluemindo clementine cynthiune decibel-audio-player esperanza exaile gbemol gecko-mediaplayer gespeaker gmbox gmerlin-player gnash gnome-mplayer gogglesmm gpe-soundbite-play guayadeque gxine gxmms2 lightspark listen lxmusic mpdcon mplayer mplayer_codecs_basic mplayer_codecs_full mplayer-fonts mplayerplug-in musique ncmpcpp parole pmusic pmusic_theme_pmusic_original pykaraoke quodlibet radiotray smplayer smplayer_enqueue sonata totem vagalume videocut wavesurfer xfmedia xfmpc xine-ui xjadeo "
-CONST PKG_CAT_Multimedia_audiovideo$=" aliki-alsa aliki-jack canorus dvbcut easytag fmit gmerlin-kbd gnome-subtitles goattracker kino lives longomatch mistelix mp3diags mp3splt-gtk mscore openshot petri-foo picard poe projectx qmidiarp qtgain showq songwrite specimen subtitleeditor tagtool themonospot toonloop winff xcfa "
-CONST PKG_CAT_Multimedia_sound$=" absvolume absvolume_puppy aeolus ams amsynth ardour ario audacity aumix brp-pacu buzztard-edit chordata composite dino djplay ebumeter espeak-gui foo-yc20 freqtweak gdigi genpo gmerlin-alsamixer gmidimonitor-alsa gmidimonitor-jack gmtp gmusicbrowser gnome-sound-recorder gpe-mixer gpe-soundbite-record gtick gtklick horgand hydrogen jaaa-alsa jaaa-jack jackbeat jack-keyboard jack_mixer jamin japa-alsa japa-jack jkmeter jmeters jnoisemeter kluppe lastfm livemix ll-scope lv2rack madplay meterbridge mhwaveedit mixxx mudita24 nekobee networkeditor paman patchage pavucontrol promoe qarecord qmidiroute qmmp qmmp_cue qmmp_enqueue qsampler qtractor rakarrack ripperx rosegarden seq24 sgmixer sineshaper sooperlooper sound-juicer spek tetraproc timemachine timidity++ traverso tuxguitar vkeybd wavbreaker xfce4-mixer yoshimi zita-at1 zita-rev1 zmixer zynaddsubfx zynjacku "
-CONST PKG_CAT_Multimedia_video$=" dvdrip dvdrip-queue gaupol guvcview landell mediathekview me-tv minitube pupdvdtool subdownloader "
-CONST PKG_CAT_Multimedia_optical$=" acetoneiso asunder brasero cdw furiusisomount grafburn pburn pburn_theme_pburn_original pcdripper pdvdrsab ripoff simpleburn xcdroast xfburn xfreecd "
-CONST PKG_CAT_Multimedia_utility$=" gjackclock "
-
-CONST PKG_CAT_Fun_Sub$=" angrydd barrage bastet billard-gl blockout2 bomberclone bygfoot childsplay connectagram crack-attack csmash cuyo dossizola fceu fceux fgo fgrun flightgear flobopuyo foobillard freealchemist freedroid freetennis freevial frozen-bubble garden gargoyle gcompris gfceu ghextris gmchess gnomekiss gnome-mud gnurobbo gpe-tetris gplanarity gtans gtetrinet hannah hex-a-hop hexalate lbreakout2 lincity-ng llk_linux lmemory ltris magicor minetest mokomaze monkey-bubble oolite openbve openttd pcsx peg-e playonlinux pybik pyrocket pysycache pysycache-admin qwbfsmanager raincat renpy searchandrescue simutrans slimevolley smc supertux tanglet tennix tictactoe-ng tile tmw torcs tuxfootball vbaexpress vitetris wesnoth wormux xbarrel xcubes xdino xhexagons xinvaders xmball xmlink xmoto xoct xpanex xpyraminx xrubik xskewb xtriangles "
-CONST PKG_CAT_Fun_adventure$=" abe adanaxisgpl adonthell-data alex4 amphetamine angband-gtk angband-sdl angband-x11 ardentryst armagetronad assaultcube asylum balazar balazarbrothers ballz between blobwars bubbros ceferino chocolate-doom crossfire-client cytadela egoboo exult flare freedink-dfarc freedoom freedroidrpg gl-117 gravitation jumpnbump kball lincity lugaru meritous mudlet open-invaders out-of-order passage powder reminiscence rott snake4 stepbill stormbaancoureur supertuxkart transcend trigger-rally wolf4sdl xqf yofrankie-bge "
-CONST PKG_CAT_Fun_boardgame$=" asciijump biloba brutalchess cgoban dreamchess eboard gamazons glchess gnome-mastermind gnubg gnuchess gnudoq gomoku gpe-go grhino gtkatlantic londonlaw mah-jong openyahtzee penguin-canfield penguin-spider penguin-taipei penguin-taipei-editor pente pentobi pioneers pioneers-editor pioneers-server pychess pyscrabble quarry xboard yahtzeesharp "
-CONST PKG_CAT_Fun_cardgame$=" freecell holdingnuts penguin-freecell penguin-golf penguin-solitaire penguin-thornq pokerth pybridge pysol xmahjongg "
-CONST PKG_CAT_Fun_puzzle$=" 0ad 4digits 7kaa amoebax anagramarama asc attal attalscenario attalserver attaltheme berusky blackboxgame blocks-of-the-undead boswars bridges colorcode cube dominosa einstein enigma fifteen fillets-ng filling flipgame galaxies gbnclient gbnserver gbrainy gfpoken glob2 glpeces gmult gnubik golly gtkballs gtkboard gweled hedgewars hitori inertia jigzo keen kiki-the-nano-bot krank laby lgeneral lightup lightyears lmarbles loopy lordsawar lordsawar-army-editor lordsawar-editor lordsawar-tile-editor magnets megaglest mines netgame netpanzer netrek-client-cow netslide numptyphysics opencity pathogen pathological pattern pearl pegs pegsolitaire peg-solitaire penguin-mastermind penguin-merlin penguin-minesweeper penguin-pegged phlipple picpuz pingus pipewalker primrose pynagram qxw range rect rubix samegame shisen signpost singles singularity sixteen slant slingshot snowball solo spacezero spring springlobby tents tetzle towers triplea twiddle tworld unequal unknown-horizons untangle warzone2100 widelands zaz "
-CONST PKG_CAT_Fun_shooter$=" xsoldier "
-CONST PKG_CAT_Fun_arcade$=" a7xpg airstrike alien-arena balder2d biniax2 blobandconquer blobby bloboats blockattack bouncy briquolo btanks burgerspace chromium-bsu circuslinux cultivation dopewars empcommand enemylines3 enemylines7 epiphany-game extremetuxracer freegish frogatto funnyboat gemdropx gltron gnome-breakout gnujump gunroar holotz-castle ii-esu ketm kobodeluxe koules liquidwar monster-masher monsterz mu-cade neverball nexuiz nikwi njam oneisenough openarena orbital-eunuchs-sniper pangzero parsec47 performous pixbros pixfrogger plee-the-bear powermanga projectl pyracerz quake3 ri-li rrootage sandboxgamemaker sauerbraten scorched3d sdl-ball sopwith sponc starvoyager supertux2 tatan tecnoballz teeworlds titanion tomatoes toppler torus-trooper trackballs triplane trophy tumiki-fighters uqm viruskiller vodovod warmux whichwayisup xbill xboing xgalaga xgalaga-hyperspace xscorch xwelltris zatacka "
-
-CONST PKG_CAT_Develop_Sub$=" anjuta bacon boo clisp cmake cvs gambas lua mercurial mono nant ocaml nasm poedit ruby subversion svn vala valgrind "
-
-CONST PKG_CAT_BuildingBlock_Sub$=" 915resolution a2ps a52dec acl alsa-lib alsa-utils atk audiofile aufs autocutsel autologin bash bbc_provided bc bcrypt bdb bin boehm-gc bogofilter bridge-utils busybox buttondialog bzip2 cairo cairomm cddetect cdp cdparanoia cdrdao cdrkit cdrtools chmlib coreutils cpio ctorrent cups cups_pdf curl ddcprobe device_mapper dhcp dhcpcd dhcp_client dialog dictd_client dietlibc diffstat diffutils disktype dmidecode docbook-xml dosfstools dotpuphandler dpkg-deb dvdauthor dvd+rwtools e2fsprogs ed edid eject elspci enchant exiv2 expat faac faad2 ffmpeg file findutils flac foomatic-filters freetype fribidi fuse gail gawk gcc gdbm getdir gettext ghostscript gifsicle gins glib glibc glibc_i18n_en glibc_locales glibmm gnome_menus goffice goffice7 grep grub gtk+ gtkdialog gtkdialog2 gtkdialog3 gtklist04mu gtklogfileviewer gtkmm guess_fs gutenprint gxmessage gzip hdparm hicolor-icon-theme hotplug2stdout hsfmodem id3lib ifplugd ifplugd_old inotail inotify-tools installwatch iptables jasper kbd lame lcms less libao libart libcap libcddb libcdio libdaemon libdvdcss libdvdnav libdvdplay libdvdread libexif libexif-gtk libexo libexo_lib libgd libgif libglade libgnomecanvas libgnomecanvasmm libgnomecups libgnomeprint libgnomeprintui libgphoto2 libgsf libid3tag libidl libjpeg libmad libmng libogg libpng librsvg libsigc++ libsndfile libstdc++ libtiff libtool libungif libusb libvorbis libxfce4util libxfcegui4 libxml libxml_python libxscrnsaver libxslt libxslt_python linux-header metamail mimencode mirdir mktemp modem_stats module-init-tools module_init_tools mp3info mut2 ncompress ncurses ndiswrapper nenscript netpbm net-tools normalize ntfs-3g ntfsprogs openssh_client openssl pango parted pciutils pcmcia-cs pcmciautils pcre perl perl-compress-zlib perl-digest-sha1 perl-extutils-depends perl-extutils-pkgconfig perl-html-parser perl-uri perl-xml-parser perl-xml-simple pfilesearch pixman poppler popt ppp pptp procinfo procps programchooser psmisc pup_dock puppybasic puppyinputdetect puppyserialdetect qt4 readline reiserfsprogs replaceit rman rsync samba samba_client sane-backends sdparm sed setserial setvol sgml-base since sqlite squashfs_tools squashfs-tools startup-notification sysfsutils syslinux sysvinit tar time truncate udev udev_cut unclutter unionfs_utils unzip util-linux vamps vcdimager vorbis-tools waitmax wavplay wget wireless-tools wpa_supplicant wv x264 xclip xcut xdg_puppy xdialog xine-lib xine-plugin xmessage xorg_base xorg_really_base xorg_xfbdev xorg_xorg_base xorg_xorg_dri xorg_xorg_full_dri xorg_xorg_servers xorg_xvesa xvidcore yaf_splash zenity zip zlib "
+PKGCAT_Help_Sub=" linux-faqs linux-howtos man-pages "
 
-CONST PKG_CAT_Help_Sub$=" linux-faqs linux-howtos man-pages "
+#fallback, look for keywords in package description...
+#'key expressions' are multiple words, with '_' delimiter instead of space char.
+KEYWDS_BuildingBlock_Sub=" library "
+KEYWDS_Utility_help=" howto documentation faq doc docs help "
+KEYWDS_Utility_development=" develop development programming language lua vala lisp mono assembler bash "
+KEYWDS_Graphic_Sub=" image_editor photo photograph photographic graphic graphics "
+KEYWDS_Graphic_paint=" paint painting bitmap_editor "
+KEYWDS_Graphic_draw=" vector_editor "
+KEYWDS_Graphic_utility=" font_editor "
+KEYWDS_Graphic_viewer=" image_viewer thumbnail thumbnails "
+KEYWDS_Graphic_scanner=" scanner "
+KEYWDS_Fun_Sub=" deathmatch game games fun "
+KEYWDS_Fun_shooter=" shooter "
+KEYWDS_Fun_boardgame=" boardgame "
+KEYWDS_Fun_arcade=" arcade "
+KEYWDS_Fun_puzzle=" puzzle "
+KEYWDS_Multimedia_Sub=" multimedia "
+KEYWDS_Multimedia_sound=" audio_player audio_editor sound_editor song mixer recorder "
+KEYWDS_Multimedia_video=" video_player video_editor video_viewer "
+KEYWDS_Multimedia_optical=" ripper burner "
+KEYWDS_Multimedia_mediaplayer=" media_player "
+KEYWDS_Internet_Sub=" internet browser web "
+KEYWDS_Internet_transfer=" download ftp torrent podcast "
+KEYWDS_Internet_chat=" chat irc icq yahoo msn instant_messager instant_messaging im_client "
+KEYWDS_Internet_login=" ssh secure_shell telnet "
+KEYWDS_Internet_mailnews=" mail email e-mail news newsagent "
+KEYWDS_Network_Sub=" file_sharing network samba server port_scanner wireless bluetooth irda lan wan vpn "
+KEYWDS_Network_phone=" modem dialup "
+KEYWDS_Network_firewall=" firewall "
+KEYWDS_Personal_Sub=" personal "
+KEYWDS_Personal_organizer=" wiki wikka notes blog "
+KEYWDS_Personal_date=" address addressbook "
+KEYWDS_Personal_database=" database "
+KEYWDS_Personal_education=" education learning "
+KEYWDS_Personal_lock=" password "
+KEYWDS_Business_Sub=" calculate measure measurement "
+KEYWDS_Business_calc=" calculator "
+KEYWDS_Business_spreadsheet=" spreadsheet "
+KEYWDS_Business_finance=" finance financial accounting bookkeeping "
+KEYWDS_Document_Sub=" document "
+KEYWDS_Document_layout=" wordprocessor word_processor wysiwyg libreoffice open_office openoffice presentation desktop_publishing "
+KEYWDS_Document_edit=" text_editor hex_editor html_editor pdf_editor "
+KEYWDS_Document_viewer=" pdf_viewer postscript_viewer "
+KEYWDS_Document_catalog=" dictionary "
+KEYWDS_Filesystem_Sub=" filesystem batch catalog renamer "
+KEYWDS_Filesystem_filemanager=" filemanager file_manager file "
+KEYWDS_Filesystem_storage=" drive disk disc "
+KEYWDS_Desktop_Sub=" screen icon desktop "
+KEYWDS_Desktop_appearance=" window "
+KEYWDS_Utility_Sub=" utility remote partition storage "
+KEYWDS_Utility_package=" archive archiver archiving backup "
+KEYWDS_Utility_shell=" terminal console "
+KEYWDS_System_Sub=" system hardware monitor "
+KEYWDS_System_print=" print printing printer "
+KEYWDS_System_process=" process "

Changes to woof-code/rootfs-skeleton/usr/local/petget/hacks-postinstall.sh

@@ -84,9 +84,8 @@
     bbe -e 's/\x6b\x00getuid/\x6b\x00getpid/' /usr/bin/xsane > /tmp/xsane-temp1
     mv -f /tmp/xsane-temp1 /usr/bin/xsane
     chmod 755 /usr/bin/xsane
    fi
   fi
-
  ;;
 esac
 

Changes to woof-code/rootfs-skeleton/usr/local/petget/installpkg.sh

@@ -43,10 +43,11 @@
 #121206 default icon needs .xpm extension. note puppy uses older xdg-utilities, Icon field needs image ext.
 #121217 still getting reports multiarch symlinks getting overwritten.
 #130112 some deb's have a post-install script (ex: some python debs).
 #130112 multiarch symlinks now optional. see also 2createpackages, 3builddistro.
 #130114 revert 130112 "multiarch symlinks now optional".
+#130126 'categories.dat' format changed.
 
 #information from 'labrador', to expand a .pet directly to '/':
 #NAME="a52dec-0.7.4"
 #pet2tgz "${NAME}.pet"
 #tar -C / --transform 's/^\(\.\/\)\?'"$NAME"'//g' -zxf "${NAME}.tar.gz"
@@ -447,11 +448,12 @@
     fi
    ;;
    *) xNAMEONLY="$DBNAMEONLY" ;;
   esac
   xnPTN=" ${xNAMEONLY} "
-  CATVARIABLE="$(grep "$xnPTN" /usr/local/petget/categories.dat | grep '^CONST ' | head -n 1 | cut -f 1 -d '$' | tr -s ' ' | cut -f 2 -d ' ' | cut -f 3,4 -d '_' | tr '_' '-')" #ex: CONST PKG_CAT_Graphic_camera$=" gphoto2 gtkam "
+  #130126 categories.dat format changed slightly...
+  CATVARIABLE="$(grep "$xnPTN" /usr/local/petget/categories.dat | grep '^PKGCAT' | head -n 1 | cut -f 1 -d '=' | cut -f 2,3 -d '_' | tr '_' '-')" #ex: PKGCAT_Graphic_camera=" gphoto2 gtkam "
   if [ "$CATVARIABLE" ];then #ex: Graphic-camera
    xCATEGORY="X-${CATVARIABLE}"
    cPATTERN="s%^Categories=.*%Categories=${xCATEGORY}%" #121120
    CATFOUND="yes"
    CATDONE='yes'

Changes to woof-code/support/debdb2pupdb.bac

@@ -6,13 +6,11 @@
 REM homepages get logged to /tmp/woof-homepages.acc
 REM 121111 first version.
 REM 121112 significant speedup, no longer call find_cat. loads categories.dat. 121113 tidy up.
 REM 121113 read Ubuntu-db 'Section' parameter to help assign category.
 REM 121113 last field of ubuntu pkg db cannot be guaranteed. introduce STARTMARKER (refer 0setup).
-
-REM read the categories data at compile-time...
-INCLUDE "/usr/local/petget/categories.dat"
+REM 130126 no longer find category. find_cat is called afterward (see 0setup).
 
 REM declare an associative array, containing strings...
 DECLARE assocarray$ ASSOC STRING
 assocarray$("Description")=""
 assocarray$("Filename")=""
@@ -130,300 +128,20 @@
     ELSE
      REM use the basename of the path...
      pos3=INSTRREV(DB_path$,"/")
      xPackage$=RIGHT$(DB_path$,len3-pos3)
     END IF
-    REM calling EXEC$() is very slow. now doing it internally...
-    REM execline$=CONCAT$("/usr/local/petget/find_cat ",xPackage$," '",DB_description$,"'")
-    REM DB_category$=EXEC$(execline$)
+
+    REM previously had "find_cat" code in here.
 
-    REM find the category and assign to variable DB_category$...
-    DB_category$=""
-    name1$=CONCAT$(" ",xPackage$," ")
-    name$=LCASE$(name1$)
-    IF (INSTR(PKG_CAT_Desktop_Sub$,name$) NE 0) THEN DB_category$="Desktop"
-    ELIF (INSTR(PKG_CAT_Desktop_appearance$,name$) NE 0) THEN DB_category$="Desktop;appearance"
-    ELIF (INSTR(PKG_CAT_Desktop_settings$,name$) NE 0) THEN DB_category$="Desktop;settings"
-    ELIF (INSTR(PKG_CAT_Desktop_windows$,name$) NE 0) THEN DB_category$="Desktop;windows"
-    ELIF (INSTR(PKG_CAT_Desktop_sleep$,name$) NE 0) THEN DB_category$="Desktop;sleep"
-    ELIF (INSTR(PKG_CAT_Desktop_applet$,name$) NE 0) THEN DB_category$="Desktop;applet"
-
-    ELIF (INSTR(PKG_CAT_System_Sub$,name$) NE 0) THEN DB_category$="System"
-    ELIF (INSTR(PKG_CAT_System_process$,name$) NE 0) THEN DB_category$="System;process"
-    ELIF (INSTR(PKG_CAT_System_memory$,name$) NE 0) THEN DB_category$="System;memory"
-    ELIF (INSTR(PKG_CAT_System_print$,name$) NE 0) THEN DB_category$="System;print"
-    ELIF (INSTR(PKG_CAT_System_storage$,name$) NE 0) THEN DB_category$="System;storage"
-    ELIF (INSTR(PKG_CAT_System_security$,name$) NE 0) THEN DB_category$="System;security"
-
-    ELIF (INSTR(PKG_CAT_Setup_Sub$,name$) NE 0) THEN DB_category$="Setup"
-    ELIF (INSTR(PKG_CAT_Setup_puppy$,name$) NE 0) THEN DB_category$="Setup;puppy"
-    ELIF (INSTR(PKG_CAT_Setup_wizard$,name$) NE 0) THEN DB_category$="Setup;wizard"
-    ELIF (INSTR(PKG_CAT_Setup_installation$,name$) NE 0) THEN DB_category$="Setup;installation"
-
-    ELIF (INSTR(PKG_CAT_Utility_Sub$,name$) NE 0) THEN DB_category$="Utility"
-    ELIF (INSTR(PKG_CAT_Utility_development$,name$) NE 0) THEN DB_category$="Utility;development"
-    ELIF (INSTR(PKG_CAT_Utility_package$,name$) NE 0) THEN DB_category$="Utility;package"
-    ELIF (INSTR(PKG_CAT_Utility_shell$,name$) NE 0) THEN DB_category$="Utility;shell"
-    ELIF (INSTR(PKG_CAT_Utility_help$,name$) NE 0) THEN DB_category$="Utility;help"
-
-    ELIF (INSTR(PKG_CAT_Filesystem_Sub$,name$) NE 0) THEN DB_category$="Filesystem"
-    ELIF (INSTR(PKG_CAT_Filesystem_filemanager$,name$) NE 0) THEN DB_category$="Filesystem;filemanager"
-    ELIF (INSTR(PKG_CAT_Filesystem_mount$,name$) NE 0) THEN DB_category$="Filesystem;mount"
-    ELIF (INSTR(PKG_CAT_Filesystem_find$,name$) NE 0) THEN DB_category$="Filesystem;find"
-    ELIF (INSTR(PKG_CAT_Filesystem_storage$,name$) NE 0) THEN DB_category$="Filesystem;storage"
-
-    ELIF (INSTR(PKG_CAT_Graphic_Sub$,name$) NE 0) THEN DB_category$="Graphic"
-    ELIF (INSTR(PKG_CAT_Graphic_paint$,name$) NE 0) THEN DB_category$="Graphic;paint"
-    ELIF (INSTR(PKG_CAT_Graphic_draw$,name$) NE 0) THEN DB_category$="Graphic;draw"
-    ELIF (INSTR(PKG_CAT_Graphic_flow$,name$) NE 0) THEN DB_category$="Graphic;flow"
-    ELIF (INSTR(PKG_CAT_Graphic_viewer$,name$) NE 0) THEN DB_category$="Graphic;viewer"
-    ELIF (INSTR(PKG_CAT_Graphic_camera$,name$) NE 0) THEN DB_category$="Graphic;camera"
-    ELIF (INSTR(PKG_CAT_Graphic_scanner$,name$) NE 0) THEN DB_category$="Graphic;scanner"
-    ELIF (INSTR(PKG_CAT_Graphic_print$,name$) NE 0) THEN DB_category$="Graphic;print"
-    ELIF (INSTR(PKG_CAT_Graphic_utility$,name$) NE 0) THEN DB_category$="Graphic;utility"
-
-    ELIF (INSTR(PKG_CAT_Document_Sub$,name$) NE 0) THEN DB_category$="Document"
-    ELIF (INSTR(PKG_CAT_Document_layout$,name$) NE 0) THEN DB_category$="Document;layout"
-    ELIF (INSTR(PKG_CAT_Document_catalog$,name$) NE 0) THEN DB_category$="Document;catalog"
-    ELIF (INSTR(PKG_CAT_Document_edit$,name$) NE 0) THEN DB_category$="Document;edit"
-    ELIF (INSTR(PKG_CAT_Document_viewer$,name$) NE 0) THEN DB_category$="Document;viewer"
-
-    ELIF (INSTR(PKG_CAT_Business_Sub$,name$) NE 0) THEN DB_category$="Business"
-    ELIF (INSTR(PKG_CAT_Business_spreadsheet$,name$) NE 0) THEN DB_category$="Business;spreadsheet"
-    ELIF (INSTR(PKG_CAT_Business_planner$,name$) NE 0) THEN DB_category$="Business;planner"
-    ELIF (INSTR(PKG_CAT_Business_finance$,name$) NE 0) THEN DB_category$="Business;finance"
-    ELIF (INSTR(PKG_CAT_Business_calc$,name$) NE 0) THEN DB_category$="Business;calc"
-
-    ELIF (INSTR(PKG_CAT_Personal_Sub$,name$) NE 0) THEN DB_category$="Personal"
-    ELIF (INSTR(PKG_CAT_Personal_database$,name$) NE 0) THEN DB_category$="Personal;database"
-    ELIF (INSTR(PKG_CAT_Personal_date$,name$) NE 0) THEN DB_category$="Personal;date"
-    ELIF (INSTR(PKG_CAT_Personal_organizer$,name$) NE 0) THEN DB_category$="Personal;organizer"
-    ELIF (INSTR(PKG_CAT_Personal_security$,name$) NE 0) THEN DB_category$="Personal;security"
-    ELIF (INSTR(PKG_CAT_Personal_timing$,name$) NE 0) THEN DB_category$="Personal;timing"
-    ELIF (INSTR(PKG_CAT_Personal_education$,name$) NE 0) THEN DB_category$="Personal;education"
-
-    ELIF (INSTR(PKG_CAT_Network_Sub$,name$) NE 0) THEN DB_category$="Network"
-    ELIF (INSTR(PKG_CAT_Network_firewall$,name$) NE 0) THEN DB_category$="Network;firewall"
-    ELIF (INSTR(PKG_CAT_Network_phone$,name$) NE 0) THEN DB_category$="Network;phone"
-    ELIF (INSTR(PKG_CAT_Network_connect$,name$) NE 0) THEN DB_category$="Network;connect"
-    ELIF (INSTR(PKG_CAT_Network_transfer$,name$) NE 0) THEN DB_category$="Network;transfer"
-    ELIF (INSTR(PKG_CAT_Network_utility$,name$) NE 0) THEN DB_category$="Network;utility"
-
-    ELIF (INSTR(PKG_CAT_Internet_Sub$,name$) NE 0) THEN DB_category$="Internet"
-    ELIF (INSTR(PKG_CAT_Internet_browser$,name$) NE 0) THEN DB_category$="Internet;browser"
-    ELIF (INSTR(PKG_CAT_Internet_chat$,name$) NE 0) THEN DB_category$="Internet;chat"
-    ELIF (INSTR(PKG_CAT_Internet_mailnews$,name$) NE 0) THEN DB_category$="Internet;mailnews"
-    ELIF (INSTR(PKG_CAT_Internet_transfer$,name$) NE 0) THEN DB_category$="Internet;transfer"
-    ELIF (INSTR(PKG_CAT_Internet_login$,name$) NE 0) THEN DB_category$="Internet;login"
-    ELIF (INSTR(PKG_CAT_Internet_block$,name$) NE 0) THEN DB_category$="Internet;block"
-    ELIF (INSTR(PKG_CAT_Internet_utility$,name$) NE 0) THEN DB_category$="Internet;utility"
-
-    ELIF (INSTR(PKG_CAT_Multimedia_Sub$,name$) NE 0) THEN DB_category$="Multimedia"
-    ELIF (INSTR(PKG_CAT_Multimedia_mediaplayer$,name$) NE 0) THEN DB_category$="Multimedia;mediaplayer"
-    ELIF (INSTR(PKG_CAT_Multimedia_audiovideo$,name$) NE 0) THEN DB_category$="Multimedia;audiovideo"
-    ELIF (INSTR(PKG_CAT_Multimedia_sound$,name$) NE 0) THEN DB_category$="Multimedia;sound"
-    ELIF (INSTR(PKG_CAT_Multimedia_video$,name$) NE 0) THEN DB_category$="Multimedia;video"
-    ELIF (INSTR(PKG_CAT_Multimedia_optical$,name$) NE 0) THEN DB_category$="Multimedia;optical"
-    ELIF (INSTR(PKG_CAT_Multimedia_utility$,name$) NE 0) THEN DB_category$="Multimedia;utility"
-
-    ELIF (INSTR(PKG_CAT_Fun_Sub$,name$) NE 0) THEN DB_category$="Fun"
-    ELIF (INSTR(PKG_CAT_Fun_adventure$,name$) NE 0) THEN DB_category$="Fun;adventure"
-    ELIF (INSTR(PKG_CAT_Fun_boardgame$,name$) NE 0) THEN DB_category$="Fun;boardgame"
-    ELIF (INSTR(PKG_CAT_Fun_cardgame$,name$) NE 0) THEN DB_category$="Fun;cardgame"
-    ELIF (INSTR(PKG_CAT_Fun_puzzle$,name$) NE 0) THEN DB_category$="Fun;puzzle"
-    ELIF (INSTR(PKG_CAT_Fun_shooter$,name$) NE 0) THEN DB_category$="Fun;shooter"
-    ELIF (INSTR(PKG_CAT_Fun_arcade$,name$) NE 0) THEN DB_category$="Fun;arcade"
-
-    ELIF (INSTR(PKG_CAT_Develop_Sub$,name$) NE 0) THEN DB_category$="Utility;development"
-    ELIF (INSTR(PKG_CAT_BuildingBlock_Sub$,name$) NE 0) THEN DB_category$="BuildingBlock"
-    ELIF (INSTR(PKG_CAT_Help_Sub$,name$) NE 0) THEN DB_category$="Utility;help"
-
-    REM check if a library...
-    ELIF (INSTR(name$," lib") NE 0) THEN DB_category$="BuildingBlock"
-
-    REM now look for keywords...
-    size1=LEN(DB_category$)
-    IF size1 EQ 0 THEN
-     desc1$=CONCAT$(" ",DB_description$," ")
-     desc$=LCASE$(desc1$)
-     IF (INSTR(desc$," library ") NE 0) THEN DB_category$="BuildingBlock"
-     ELIF (INSTR(desc$," howto ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," documentation ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," faq ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," doc ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," docs ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," help ") NE 0) THEN DB_category$="Utility;help"
-     ELIF (INSTR(desc$," develop ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," development ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," programming ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," language ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," lua ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," vala ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$,"lisp ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," mono ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," assembler ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," bash ") NE 0) THEN DB_category$="Utility;development"
-     ELIF (INSTR(desc$," paint ") NE 0) THEN DB_category$="Graphic;paint"
-     ELIF (INSTR(desc$," painting ") NE 0) THEN DB_category$="Graphic;paint"
-     ELIF (INSTR(desc$," image edit") NE 0) THEN DB_category$="Graphic"
-     ELIF (INSTR(desc$," bitmap edit") NE 0) THEN DB_category$="Graphic;paint"
-     ELIF (INSTR(desc$," vector edit") NE 0) THEN DB_category$="Graphic;draw"
-     ELIF (INSTR(desc$," photo") NE 0) THEN DB_category$="Graphic"
-     ELIF (INSTR(desc$," graphic") NE 0) THEN DB_category$="Graphic"
-     ELIF (INSTR(desc$," font edit") NE 0) THEN DB_category$="Graphic;utility"
-     ELIF (INSTR(desc$," image view") NE 0) THEN DB_category$="Graphic;viewer"
-     ELIF (INSTR(desc$," thumbnail") NE 0) THEN DB_category$="Graphic;viewer"
-     ELIF (INSTR(desc$," scanner ") NE 0) THEN DB_category$="Graphic;scanner"
-     ELIF (INSTR(desc$," boardgame ") NE 0) THEN DB_category$="Fun;boardgame"
-     ELIF (INSTR(desc$," shooter ") NE 0) THEN DB_category$="Fun;shooter"
-     ELIF (INSTR(desc$," arcade ") NE 0) THEN DB_category$="Fun;arcade"
-     ELIF (INSTR(desc$," puzzle ") NE 0) THEN DB_category$="Fun;puzzle"
-     ELIF (INSTR(desc$," deathmatch ") NE 0) THEN DB_category$="Fun"
-     ELIF (INSTR(desc$," game ") NE 0) THEN DB_category$="Fun"
-     ELIF (INSTR(desc$," games ") NE 0) THEN DB_category$="Fun"
-     ELIF (INSTR(desc$," fun ") NE 0) THEN DB_category$="Fun"
-     ELIF (INSTR(desc$," audio play") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," sound play") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," audio edit") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," sound edit") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," video play") NE 0) THEN DB_category$="Multimedia;video"
-     ELIF (INSTR(desc$," video edit") NE 0) THEN DB_category$="Multimedia;video"
-     ELIF (INSTR(desc$," video view") NE 0) THEN DB_category$="Multimedia;video"
-     ELIF (INSTR(desc$," song ") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," ripper ") NE 0) THEN DB_category$="Multimedia;optical"
-     ELIF (INSTR(desc$," burner ") NE 0) THEN DB_category$="Multimedia;optical"
-     ELIF (INSTR(desc$," mixer ") NE 0) THEN DB_category$="Multimedia;sound"
-REM     ELIF (INSTR(desc$," recorder ") NE 0) THEN DB_category$="Multimedia;sound"
-     ELIF (INSTR(desc$," media player ") NE 0) THEN DB_category$="Multimedia;mediaplayer"
-     ELIF (INSTR(desc$," multimedia ") NE 0) THEN DB_category$="Multimedia"
-     ELIF (INSTR(desc$," download") NE 0) THEN DB_category$="Internet;transfer"
-     ELIF (INSTR(desc$," chat ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$," irc ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$,"icq ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$," yahoo ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$,"msn ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$," instant messag") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$," im client ") NE 0) THEN DB_category$="Internet;chat"
-     ELIF (INSTR(desc$,"ftp ") NE 0) THEN DB_category$="Internet;transfer"
-     ELIF (INSTR(desc$," ssh ") NE 0) THEN DB_category$="Internet;login"
-     ELIF (INSTR(desc$," secure shell ") NE 0) THEN DB_category$="Internet;login"
-     ELIF (INSTR(desc$," torrent ") NE 0) THEN DB_category$="Internet;transfer"
-     ELIF (INSTR(desc$," podcast ") NE 0) THEN DB_category$="Internet;transfer"
-     ELIF (INSTR(desc$," mail ") NE 0) THEN DB_category$="Internet;mailnews"
-     ELIF (INSTR(desc$," email ") NE 0) THEN DB_category$="Internet;mailnews"
-     ELIF (INSTR(desc$," e-mail ") NE 0) THEN DB_category$="Internet;mailnews"
-     ELIF (INSTR(desc$," news") NE 0) THEN DB_category$="Internet;mailnews"
-     ELIF (INSTR(desc$," telnet ") NE 0) THEN DB_category$="Internet;login"
-     ELIF (INSTR(desc$," internet ") NE 0) THEN DB_category$="Internet"
-     ELIF (INSTR(desc$," browser ") NE 0) THEN DB_category$="Internet"
-     ELIF (INSTR(desc$," web ") NE 0) THEN DB_category$="Internet"
-     ELIF (INSTR(desc$," modem ") NE 0) THEN DB_category$="Network;phone"
-     ELIF (INSTR(desc$," dialup ") NE 0) THEN DB_category$="Network;phone"
-     ELIF (INSTR(desc$," firewall ") NE 0) THEN DB_category$="Network;firewall"
-     ELIF (INSTR(desc$," file sharing ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," network ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," samba ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," server ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," port scanner ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," wireless ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," bluetooth ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," irda ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," lan ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," wan ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," vpn ") NE 0) THEN DB_category$="Network"
-     ELIF (INSTR(desc$," wiki ") NE 0) THEN DB_category$="Personal;organizer"
-     ELIF (INSTR(desc$," password ") NE 0) THEN DB_category$="Personal;lock"
-     ELIF (INSTR(desc$," wik") NE 0) THEN DB_category$="Personal;organizer"
-     ELIF (INSTR(desc$," notes ") NE 0) THEN DB_category$="Personal;organizer"
-     ELIF (INSTR(desc$," blog ") NE 0) THEN DB_category$="Personal;organizer"
-     ELIF (INSTR(desc$," address") NE 0) THEN DB_category$="Personal;date"
-     ELIF (INSTR(desc$," database ") NE 0) THEN DB_category$="Personal;database"
-     ELIF (INSTR(desc$," education ") NE 0) THEN DB_category$="Personal;education"
-     ELIF (INSTR(desc$," learning ") NE 0) THEN DB_category$="Personal;education"
-     ELIF (INSTR(desc$," personal ") NE 0) THEN DB_category$="Personal"
-     ELIF (INSTR(desc$," calculator ") NE 0) THEN DB_category$="Business;calc"
-     ELIF (INSTR(desc$," spreadsheet ") NE 0) THEN DB_category$="Business;spreadsheet"
-     ELIF (INSTR(desc$," financ") NE 0) THEN DB_category$="Business;finance"
-     ELIF (INSTR(desc$," accounting ") NE 0) THEN DB_category$="Business;finance"
-     ELIF (INSTR(desc$," bookkeeping ") NE 0) THEN DB_category$="Business;finance"
-     ELIF (INSTR(desc$," calculate ") NE 0) THEN DB_category$="Business"
-     ELIF (INSTR(desc$," measure") NE 0) THEN DB_category$="Business"
-     ELIF (INSTR(desc$," wordprocessor ") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," word processor") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," text editor ") NE 0) THEN DB_category$="Document;edit"
-     ELIF (INSTR(desc$," hex editor ") NE 0) THEN DB_category$="Document;edit"
-     ELIF (INSTR(desc$,"html editor ") NE 0) THEN DB_category$="Document;edit"
-     ELIF (INSTR(desc$,"pdf editor ") NE 0) THEN DB_category$="Document;edit"
-     ELIF (INSTR(desc$,"pdf viewer ") NE 0) THEN DB_category$="Document;viewer"
-     ELIF (INSTR(desc$," dictionary ") NE 0) THEN DB_category$="Document;catalog"
-     ELIF (INSTR(desc$," wysiwyg ") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," libreoffice") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," open office") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," openoffice ") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," postscript viewer ") NE 0) THEN DB_category$="Document;viewer"
-     ELIF (INSTR(desc$," presentation ") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," desktop publishing ") NE 0) THEN DB_category$="Document;layout"
-     ELIF (INSTR(desc$," document ") NE 0) THEN DB_category$="Document"
-     ELIF (INSTR(desc$," file manager ") NE 0) THEN DB_category$="Filesystem;filemanager"
-     ELIF (INSTR(desc$," filemanager ") NE 0) THEN DB_category$="Filesystem;filemanager"
-     ELIF (INSTR(desc$," file ") NE 0) THEN DB_category$="Filesystem;filemanager"
-     ELIF (INSTR(desc$," drive") NE 0) THEN DB_category$="Filesystem;storage"
-     ELIF (INSTR(desc$," disk") NE 0) THEN DB_category$="Filesystem;storage"
-     ELIF (INSTR(desc$," disc ") NE 0) THEN DB_category$="Filesystem;storage"
-     ELIF (INSTR(desc$," filesystem ") NE 0) THEN DB_category$="Filesystem"
-     ELIF (INSTR(desc$," batch ") NE 0) THEN DB_category$="Filesystem"
-     ELIF (INSTR(desc$," catalog") NE 0) THEN DB_category$="Filesystem"
-     ELIF (INSTR(desc$," renamer ") NE 0) THEN DB_category$="Filesystem"
-     ELIF (INSTR(desc$," window ") NE 0) THEN DB_category$="Desktop;appearance"
-     ELIF (INSTR(desc$," screen ") NE 0) THEN DB_category$="Desktop"
-     ELIF (INSTR(desc$," icon") NE 0) THEN DB_category$="Desktop"
-     ELIF (INSTR(desc$," desktop ") NE 0) THEN DB_category$="Desktop"
-     ELIF (INSTR(desc$," archive") NE 0) THEN DB_category$="Utility;package"
-     ELIF (INSTR(desc$," backup ") NE 0) THEN DB_category$="Utility;package"
-     ELIF (INSTR(desc$," terminal ") NE 0) THEN DB_category$="Utility;shell"
-     ELIF (INSTR(desc$," console ") NE 0) THEN DB_category$="Utility;shell"
-     ELIF (INSTR(desc$," utility ") NE 0) THEN DB_category$="Utility"
-     ELIF (INSTR(desc$," remote ") NE 0) THEN DB_category$="Utility"
-     ELIF (INSTR(desc$," partition ") NE 0) THEN DB_category$="Utility"
-     ELIF (INSTR(desc$," storage ") NE 0) THEN DB_category$="Utility"
-     ELIF (INSTR(desc$," print ") NE 0) THEN DB_category$="System;print"
-     ELIF (INSTR(desc$," printing ") NE 0) THEN DB_category$="System;print"
-     ELIF (INSTR(desc$," printer ") NE 0) THEN DB_category$="System;print"
-     ELIF (INSTR(desc$," process ") NE 0) THEN DB_category$="System;process"
-     ELIF (INSTR(desc$," system ") NE 0) THEN DB_category$="System"
-     ELIF (INSTR(desc$," hardware ") NE 0) THEN DB_category$="System"
-     ELIF (INSTR(desc$," monitor") NE 0) THEN DB_category$="System"
-    END IF
-
     REM 121113 use Section as fallback. values found in ubuntu 'main' db:
     REM admin cli-mono comm database debug devel doc editors fonts games gnome graphics httpd interpreters introspection java kde kernel libdevel libs lisp localization mail math metapackages misc net ocaml oldlibs otherosfs perl php python ruby science shells sound tex text translations utils vcs video web x11 zope
     REM values found in ubuntu 'universe' db:
     REM universe/admin universe/cli-mono universe/comm universe/database universe/debug universe/devel universe/doc universe/editors universe/electronics universe/embedded universe/fonts universe/games universe/gnome universe/gnu-r universe/gnustep universe/graphics universe/hamradio universe/haskell universe/httpd universe/interpreters universe/introspection universe/java universe/kde universe/kernel universe/libdevel universe/libs universe/lisp universe/localization universe/mail universe/math universe/metapackages universe/misc universe/net universe/news universe/ocaml universe/oldlibs universe/otherosfs universe/perl universe/php universe/python universe/ruby universe/science universe/shells universe/sound universe/tex universe/text universe/utils universe/vcs universe/video universe/web universe/x11 universe/xfce universe/zope
     REM note, most of these so-called categories are not suitable for classifying into a menu structure.
-    REM i have picked some out...
-    size1=LEN(DB_category$)
-    IF size1 EQ 0 THEN
-     size2=LEN(assocarray$("Section"))
-     IF size2 NE 0 THEN
-      section1$=assocarray$("Section")
-      pos1=INSTRREV(section1$,"/")
-      IF pos1 EQ 0 THEN
-       section$=section1$
-      ELSE
-       section$=RIGHT$(section1$,size2-pos1)
-      END IF
-      IF (REGEX(section$,"^vcs$") NE 0) THEN DB_category$="Utility;development"
-      ELIF (REGEX(section$,"^admin$") NE 0) THEN DB_category$="Setup"
-      ELIF (REGEX(section$,"^doc$") NE 0) THEN DB_category$="Help"
-      ELIF (REGEX(section$,"^games$") NE 0) THEN DB_category$="Fun"
-      ELIF (REGEX(section$,"^science$") NE 0) THEN DB_category$="Personal;education"
-     END IF
-    END IF
-
-    REM fallback...
-    size1=LEN(DB_category$)
-    IF size1 EQ 0 THEN DB_category$="BuildingBlock"
+    DB_category$=assocarray$("Section")
+    REM ...these will get replaced by correct category in find_cat.
 
     REM Depends ex: firefox (>= 9.0)
     REM Depends ex: libc6 (>= 2.4), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.88), libglib2.0-0 (>= 2.25.11), libpolkit-gobject-1-0 (>= 0.101), libaccountsservice0 (= 0.6.15-2ubuntu9), dbus
     REM Depends ex: x11-xserver-utils, acpid (>= 1.0.4-1ubuntu4), hdparm, lsb-base (>= 1.3-9ubuntu3), powermgmt-base, laptop-detect, dmidecode (>= 2.7-1), libc6 (>= 2.4), pm-utils, consolekit
     DB_dependencies$=""

Changes to woof-code/support/find_cat.bac

@@ -1,1 +1,177 @@
+REM Copyright (c) Barry Kauler January 2013. bkhome.org
+REM rewrote find_cat.c in BaCon. Reads categories.dat.
+REM passed params: <packagegenericname> "<description>"
+REM  ...return on stdout, found category.
+REM or, no passed param(s), stdin is a pup-db pkg entry, empty DB_category field.
+REM  ...return on stdout, db-entry, with category inserted in 5th field.
+REM  ...can stdin a complete file, ex: cat Packages-ubuntu-precise-main | find_cat
+REM or, one passed param, name of db-entries file. ex: find_cat Packages-ubuntu-precise-main
+REM 130126 first release.
+
+GLOBAL categories$ ASSOC STRING
+GLOBAL keywords$ ASSOC STRING
+
+REM read /usr/local/petget/categories.dat and evaluate vars...
+OPEN "/usr/local/petget/categories.dat" FOR READING AS handle1
+WHILE NOT(ENDFILE(handle1)) DO
+ READLN line$ FROM handle1
+ chopped$=CHOP$(line$)
+ IF EQUAL(chopped$,"") THEN CONTINUE
+ first$=LEFT$(chopped$,1)
+ IF EQUAL(first$,"#") THEN CONTINUE
+ IF EQUAL(first$,"K") THEN
+  REM ex: chopped$=KEYWDS_Graphic_viewer=" image_viewer thumbnail thumbnails "
+  SPLIT chopped$ BY "=" TO array2$ SIZE dimension2
+  val2$=CHOP$(array2$[1],"'\"")
+  keywords$(array2$[0])=val2$
+ ELSE
+  REM ex: chopped$=PKGCAT_Help_Sub=" linux-faqs linux-howtos man-pages "
+  SPLIT chopped$ BY "=" TO array1$ SIZE dimension1
+  val$=CHOP$(array1$[1],"'\"")
+  categories$(array1$[0])=val$
+ END IF
+WEND
+CLOSE FILE handle1
+
+description0$=" "
+SPLIT ARGUMENT$ BY " " TO commandline$ SIZE numparams
+
+IF numparams==2 THEN
+ REM filename on commandline, with pup-db entries.
+ IF NOT(FILEEXISTS(commandline$[1])) THEN END 2
+ OPEN commandline$[1] FOR READING AS handle2
+END IF
+
+LABEL naughtyjump
+REM read a db-entry either from stdin or file...
+REM ex: bbe_0.2.2-1|bbe|0.2.2-1||BuildingBlock|136K|pool/universe/b/bbe|bbe_0.2.2-1_i386.deb|+libc6|sed-like editor for binary files|ubuntu|precise||
+IF numparams==1 THEN INPUT onedb$
+ELIF numparams==2 THEN
+ IF ENDFILE(handle2) THEN
+  CLOSE FILE handle2
+  END 0
+ END IF
+ READLN onedb$ FROM handle2
+END IF
+
+IF numparams<3 THEN
+ REM want to extract genericname and description...
+ flagdeb=0
+ SPLIT onedb$ BY "|" TO dbarray$ SIZE dim9
+ IF dim9<11 THEN END 1
+ IF dbarray$[6]=="" THEN
+  packagename$=LCASE$(dbarray$[1])
+ ELSE
+  REM debian/ubuntu/raspbian, get genericname from 7th field...
+  IF dbarray$[10]=="ubuntu" THEN flagdeb=1
+  IF dbarray$[10]=="debian" THEN flagdeb=1
+  IF dbarray$[10]=="raspbian" THEN flagdeb=1
+  IF flagdeb==1 THEN
+   pos1=INSTRREV(dbarray$[6],"/")
+   IF pos1==0 THEN
+    packagename$=LCASE$(dbarray$[6])
+   ELSE
+    len1=LEN(dbarray$[6])
+    packagename0$=RIGHT$(dbarray$[6],len1-pos1)
+    packagename$=LCASE$(packagename0$)
+   END IF
+  ELSE
+   packagename$=LCASE$(dbarray$[1])
+  END IF
+ END IF
+ description0$=CONCAT$(" ",dbarray$[9]," ")
+ description$=LCASE$(description0$)
+ELSE
+ packagename$=LCASE$(commandline$[1])
+ FOR zz=2 TO numparams-1
+  description0$=CONCAT$(description0$,commandline$[zz]," ")
+ NEXT
+ description$=LCASE$(description0$)
+END IF
+
+
+REM search through the categories in categories.dat...
+REM 'packagename$' is the pkgname trying to find a match to...
+DB_category$=""
+name$=CONCAT$(" ",packagename$," ")
+LOOKUP categories$ TO acategory$ SIZE d
+FOR x=0 TO d-1
+ REM ex: PKGCAT_Desktop_appearance
+ IF INSTR(categories$(acategory$[x]),name$)<>0 THEN
+  SPLIT acategory$[x] BY "_" TO catsplit$ SIZE dim
+  IF dim < 3 THEN CONTINUE
+  IF catsplit$[2]=="Sub" THEN
+   DB_category$=catsplit$[1]
+   REM no sub-category. ex: DB_category$=Desktop
+  ELSE
+   DB_category$=CONCAT$(catsplit$[1],";",catsplit$[2])
+   REM ex: DB_category$=Desktop;appearance
+  END IF
+  BREAK
+ END IF
+NEXT
+
+REM check if a library...
+IF DB_category$=="" THEN
+ IF (INSTR(name$," lib") NE 0) THEN DB_category$="BuildingBlock"
+END IF
+
+REM now look for keywords in description...
+IF DB_category$=="" THEN
+ LOOKUP keywords$ TO akeycat$ SIZE dim1
+ FOR y=0 TO dim1-1
+  REM ex: KEYWDS_Desktop_appearance
+  SPLIT keywords$(akeycat$[y]) BY " " TO keynames$ SIZE dim3
+  IF dim3==0 THEN CONTINUE
+  FOR z=0 TO dim3-1
+   REM some keywords are actually multiple words, with '_' delimiter...
+   akeyname$=REPLACE$(keynames$[z],"_"," ")
+   keynameptn$=CONCAT$(" ",akeyname$," ")
+   IF INSTR(description$,keynameptn$)<>0 THEN
+    SPLIT akeycat$[y] BY "_" TO keysplit$ SIZE dim2
+    IF dim2 < 3 THEN CONTINUE
+    IF keysplit$[2]=="Sub" THEN
+     DB_category$=keysplit$[1]
+     REM no sub-category. ex: DB_category$=Desktop
+    ELSE
+     DB_category$=CONCAT$(keysplit$[1],";",keysplit$[2])
+     REM ex: DB_category$=Desktop;appearance
+    END IF
+    BREAK
+   END IF
+  NEXT
+ NEXT
+END IF
+
+REM fallback for ubuntu/debian/raspbian...
+IF DB_category$=="" THEN
+ IF numparams<3 THEN
+  IF flagdeb==1 THEN
+   REM db-entry on stdin may have debian "Section" value in DB_category field...
+   IF dbarray$[4]<>"" THEN
+    IF (REGEX(dbarray$[4],"vcs$") NE 0) THEN DB_category$="Utility;development"
+    ELIF (REGEX(dbarray$[4],"admin$") NE 0) THEN DB_category$="Setup"
+    ELIF (REGEX(dbarray$[4],"doc$") NE 0) THEN DB_category$="Help"
+    ELIF (REGEX(dbarray$[4],"games$") NE 0) THEN DB_category$="Fun"
+    ELIF (REGEX(dbarray$[4],"science$") NE 0) THEN DB_category$="Personal;education"
+   END IF
+  END IF
+ END IF
+END IF
+
+IF DB_category$=="" THEN DB_category$="BuildingBlock"
+
+IF numparams<3 THEN
+ REM db-entry came in via stdin or file, send it out via stdout...
+ REM substitute with the found DB_category, 5th field...
+ dbarray$[4]=DB_category$
+ FOR yy=0 TO dim9-2
+  PRINT dbarray$[yy],"|";
+ NEXT
+ PRINT
+ GOTO naughtyjump
+ELSE
+ PRINT DB_category$
+END IF
+
 

Deleted woof-code/support/find_cat.c