summaryrefslogtreecommitdiffstats
path: root/base/pkg-get-awk/pkg-get.awk
diff options
context:
space:
mode:
authortnut <thierryn1 at hispeed dot ch>2011-02-03 10:33:13 +0100
committertnut <thierryn1 at hispeed dot ch>2011-02-03 10:33:13 +0100
commit1506f9971307bb66d6edf2edc51a20e5723371b4 (patch)
tree2f5ef22de614bb94b737fa9839b7ee64e5c36cb0 /base/pkg-get-awk/pkg-get.awk
parentcb79537ed4193838096fef12fe86eaaf0d06cf34 (diff)
downloadnutyx-pakxe-1506f9971307bb66d6edf2edc51a20e5723371b4.tar.gz
nutyx-pakxe-1506f9971307bb66d6edf2edc51a20e5723371b4.tar.bz2
nutyx-pakxe-1506f9971307bb66d6edf2edc51a20e5723371b4.tar.xz
nutyx-pakxe-1506f9971307bb66d6edf2edc51a20e5723371b4.zip
pkg-get-awk, nouveau port, merci à guy
Diffstat (limited to 'base/pkg-get-awk/pkg-get.awk')
-rwxr-xr-xbase/pkg-get-awk/pkg-get.awk777
1 files changed, 777 insertions, 0 deletions
diff --git a/base/pkg-get-awk/pkg-get.awk b/base/pkg-get-awk/pkg-get.awk
new file mode 100755
index 000000000..801b736a8
--- /dev/null
+++ b/base/pkg-get-awk/pkg-get.awk
@@ -0,0 +1,777 @@
+#! /usr/bin/awk -f
+# _ _ _
+# _ __ | | ____ _ __ _ ___| |_ __ ___ _| | __
+# | '_ \| |/ / _` |___ / _` |/ _ \ __| / _` \ \ /\ / / |/ /
+# | |_) | < (_| |___| (_| | __/ |_ _ | (_| |\ V V /| <
+# | .__/|_|\_\__, | \__, |\___|\__| (_) \__,_| \_/\_/ |_|\_\
+# |_| |___/ |___/
+#
+# A binary package management utility
+
+
+function configs( a, i, k, n, old_FS)
+{
+ n=split(ENVIRON["_"],a,"/")
+ NPKG = a[n]
+ VERSION = "0.3.1"
+ DATE = "20110108"
+
+ # defauts
+ CONF = "/etc/pkg-get.conf"
+ DB = "/var/lib/pkg/db"
+ LOCKER = "/var/lib/pkg/pkg-get.locker"
+ PRE = "n"
+ POST = "n"
+ PKGDIR[0] = "/srv/NuTyX/release/"
+ WEBDIR[0] = "http://nutyx.meticul.eu/attapu/i686/release/"
+
+ # arguments
+ OPER=(ARGC>1) ? ARGV[1] : ""
+ PKG =(ARGC>2) ? ARGV[2] : ""
+ for (i=2; i<ARGC; i++) {
+ if (ARGV[i]=="-r") {
+ tb_OPT[ARGV[i]]=ARGV[i+1]
+ i++
+ } else if (substr(ARGV[i],1,1)=="-") {
+ split(ARGV[i],a,"=")
+ tb_OPT[a[1]]=a[2]
+ } else
+ tb_PKG[++nPKG]=ARGV[i]
+ }
+
+# print "* PKG:"
+# print " OPER = "OPER
+# for (i=1; i<=nPKG; i++)
+# print " PKG[" i "] = " tb_PKG[i]
+# print "* OPT:"
+# for (Opt in tb_OPT)
+# print " " Opt " " tb_OPT[Opt]
+
+ # divers
+ cmd="uname -m"
+ cmd | getline ARCH
+ close(cmd)
+
+ # fichier pkg-get.conf
+ if ("--config" in tb_OPT)
+ CONF = tb_OPT["--config"]
+ old_FS=FS
+ FS="|"
+ NPKGDIR=0
+ while (getline < CONF) {
+ n=split($1,a," ")
+ if (a[1]=="pkgdir") {
+ PKGDIR[NPKGDIR]=a[2]"/"
+ if (NF<2) {
+ WEBDIR[NPKGDIR]=""
+ } else {
+ sub(" ","",$2)
+ sub("/uname-m/", "/"ARCH"/", $2)
+ WEBDIR[NPKGDIR]=$2"/"
+ }
+ NPKGDIR++
+ }
+ if (a[1]=="runscripts") {
+ PRE = (a[2]=="yes") ? "y" : "n"
+ POST = (a[2]=="yes") ? "y" : "n"
+ }
+ }
+ FS=old_FS
+
+# for (i=0; i<NPKGDIR; i++) {
+# print " PKGDIR[" i "] = " PKGDIR[i]
+# print " WEBDIR[" i "] = " WEBDIR[i]
+# }
+
+ # options
+ if ("-r" in tb_OPT)
+ AARGS = AARGS " -r " tb_OPT["-r"]
+ if ("-do" in tb_OPT)
+ {}
+ if ("-f" in tb_OPT)
+ AARGS = AARGS " -f"
+ if ("-im" in tb_OPT)
+ AARGS = AARGS " -im"
+ if ("--aargs" in tb_OPT)
+ AARGS = AARGS " " tb_OPT["--aargs"]
+ if (("--install-scripts" in tb_OPT) || ("--pre-install" in tb_OPT))
+ PRE = "y"
+ if (("--install-scripts" in tb_OPT) || ("--post-install" in tb_OPT))
+ POST = "y"
+ DEPS = "PKGDEPS"
+ READ = "PKGREAD"
+ REPO = "PKGREPO"
+ GRP = "PKGGRP"
+
+ # i18n
+ TEXTDOMAIN = "pkg-get"
+ bindtextdomain("/usr/share/locale")
+}
+
+
+function current()
+{
+ load_DB()
+ if (PKG in tb_DB)
+ print tb_DB[PKG]
+ else
+ print _"Paquet" " " PKG " " _"non installé"
+}
+
+
+function dependent( a, i, n)
+{
+ load_RDEPS()
+ load_DB()
+ n=split(tb_RDEPS[PKG],a,",")
+ for (i=1; i<=n; i++)
+ if ((a[i] in tb_DB) || ("--all" in tb_OPT))
+ print a[i]
+}
+
+
+function depends( c)
+{
+ load_DB()
+ load_DEPS()
+ load_REPO()
+ print _"- dépendences ([i] = installé, [u] = mise à jour possible)"
+ depends2(PKG,ARGV[3])
+ if (PKG in tb_DB)
+ c= (tb_REPO[PKG]==tb_DB[PKG]) ? "i" : "u"
+ else
+ c=" "
+ printf("[%c] %s\n", c, PKG)
+}
+
+
+function depends2(Pkg, Fl, a, i, n, c)
+{
+ S = (Fl=="--d") ? S "-- " : ""
+ n=split(tb_DEPS[Pkg],a,",")
+ for (i=1; i<=n; i++) {
+ if (tb_DEP_TRT[a[i]]==0) {
+ tb_DEP_TRT[a[i]]++
+ if (a[i] in tb_DEPS)
+ depends2(a[i],Fl)
+ if (a[i] in tb_DB)
+ c= (tb_DB[a[i]]==tb_REPO[a[i]]) ? "i" : "u"
+ else
+ c=" "
+ printf("[%c] %s%s\n", c, S, a[i])
+ }
+ }
+ S = (Fl=="--d") ? substr(S,4) : ""
+}
+
+
+function depinst( i)
+{
+ verif_if_root()
+ load_DB()
+ load_DEPS()
+ load_REPO()
+ for (i=1; i<=nPKG; i++) {
+ depinst2(tb_PKG[i])
+ }
+ return rc
+}
+
+
+function depinst2(Pkg, a, i, n)
+{
+ n=split(tb_DEPS[Pkg],a,",")
+ for (i=1; i<=n; i++) {
+ if (tb_DEP_TRT[a[i]]==0) {
+ tb_DEP_TRT[a[i]]++
+ if (a[i] in tb_DEPS)
+ depinst2(a[i])
+ if (!(a[i] in tb_DB))
+ install2(a[i], "inst")
+ }
+ }
+}
+
+
+function diff( a, i, n, pak)
+{
+ load_DB()
+ load_LOCKER()
+ load_REPO()
+ print _"Différences entre paquets installés et paquets disponibles dans le dépôts:\n"
+ printf("%-30s %-20s %-20s\n", _"Paquet", _"Installé", _"Disponible dans les dépôts\n")
+ for (pak in tb_DB)
+ a[pak]=pak
+ n=asort(a)
+ for (i=1;i<=n;i++) {
+ pak=a[i]
+ if ((pak in tb_REPO) && ((!(pak in tb_LOCK)) || ("--all" in tb_OPT)) && (tb_DB[pak]!=tb_REPO[pak])) {
+ printf("%-30s %-20s %-20s\n", pak, tb_DB[pak], tb_REPO[pak])
+ }
+ }
+}
+
+
+function download(pak, a, cmd, j, pakw, rep, WEBREPO)
+{
+ split(pak,a,"#")
+ WEBREPO = tb_WEBDIR[a[1]]
+ cmd="if [ -f " tb_PKGDIR[a[1]] pak" ]; then echo n; else echo y; fi"
+ cmd | getline rep
+ if (rep=="y") {
+ pakw = pak
+ sub("#", "%23", pakw)
+ cmd="wget -O "tb_PKGDIR[a[1]] pak " " WEBREPO pakw
+ if ("--dry" in tb_OPT) {
+ print "\033[1;34m" cmd "\033[1;0m"
+ } else {
+ while ((cmd | getline) >0)
+ print
+ }
+ }
+}
+
+
+function dsearch( old_FS, j, FILE)
+{
+ old_FS = FS
+ FS="[:#]"
+ for (j=0; j<NPKGDIR; j++) {
+ FILE=PKGDIR[j] REPO
+ while ((getline < FILE) >0) {
+ if (index($1,ARGV[2]) || index($5,ARGV[2]))
+ print $1
+ }
+ }
+ close(FILE)
+ FS = old_FS
+}
+
+
+function help()
+{
+ version()
+ print "\033[1;33m" _"Usage:" "\033[1;0m"
+ print " " NPKG " current <paquet> - " _"affiche la version installée de <paquet>"
+ print " " NPKG " dependent <paquet> - " _"affiche la liste des paquets dépendants de <paquet>"
+ print " " NPKG " depends <paquet> - " _"affiche la liste des dépendances de <paquet>"
+ print " " NPKG " depinst <paquet(s)> - " _"installe <paquet(s)> et ses(leurs) dépendances"
+ print " " NPKG " diff - " _"affiche la liste des paquets obsolètes"
+ print " " NPKG " dsearch <chaine> - " _"cherche les paquets dont le nom/la description contient <chaine>"
+ print " " NPKG " help - " _"affiche cette aide"
+ print " " NPKG " info <paquet> - " _"affiche les informations concernant <paquet>"
+ print " " NPKG " isinst <paquet> - " _"affiche si <paquet> est installé"
+ print " " NPKG " install <paquet(s)> - " _"installe <paquet(s)>"
+ print " " NPKG " list - " _"affiche la liste des paquets disponibles dans les dépôts"
+ print " " NPKG " listinst - " _"affiche la liste des paquets installés"
+ print " " NPKG " listlocked - " _"affiche la liste des paquets verrouillés"
+ print " " NPKG " lock <paquet(s)> - " _"verrouille <paquet(s)> (empêche la mise à jour)"
+ print " " NPKG " path <paquet> - " _"affiche le répertoire d'installtion de <paquet>"
+ print " " NPKG " quickdep <paquet> - " _"affiche la liste abrégée des dépendances de <paquet>"
+ print " " NPKG " quickdiff - " _"affiche la liste abrégée des paquets obsolètes"
+ print " " NPKG " readme <paquet> - " _"affiche les informations README de <paquet> si existantes"
+ print " " NPKG " search <chaine> - " _"cherche les paquets dont le nom contient <chaine>"
+ print " " NPKG " sync - " _"synchronise avec le dépôt"
+ print " " NPKG " sysup - " _"met à jour les paquets obsolètes, télécharge si nécessaire"
+ print " " NPKG " unlock <paquet(s)> - " _"déverrouille <paquet(s)> (permet la mise à jour)"
+ print " " NPKG " update <paquet(s)> - " _"met à jour <paquet(s)>, télécharge si nécessaire"
+ print " " NPKG " version - " _"affiche la version de ce script"
+ print "\033[1;33m" _"Exemple:" "\033[1;0m"
+ print " " NPKG " depends k3b"
+}
+
+
+function info( a, b, c, cmd, g, gline, n, rline, out)
+{
+ load_REPO()
+ cmd = "grep ^" PKG " " tb_PKGDIR[PKG] REPO
+ cmd | getline rline
+ if (rline) {
+ close(cmd)
+ split (rline, a, ":")
+ split (a[1], b, "#")
+ print _"Nom " " : " PKG
+ cmd = "grep " PKG " " tb_PKGDIR[PKG] GRP " 2>&1"
+ cmd | getline gline
+ close(cmd)
+ split (gline, g, ":")
+ if (g[1]=="grep")
+ print _"Groupe" " : "
+ else
+ print _"Groupe" " : " g[1]
+ split(b[2], c, "-")
+ print "Version" " : " c[1]
+ sub(".pkg.tar.xz","",c[2])
+ print "Release" " : " c[2]
+ print "Description" " : " a[4]
+ print "URL" " : " tb_WEBDIR[PKG] a[1]
+ print "Md5sum" " : " a[3]
+ print _"Taille" " : " a[2]
+ load_DEPS()
+ print _"Dépend de " " : " tb_DEPS[PKG]
+ out=""
+ if (tb_PRE[PKG]=="yes")
+ out = out "pre-install "
+ if (tb_POST[PKG]=="yes")
+ out = out "post-install "
+ if (tb_READ[PKG]=="yes")
+ out = out "readme"
+ print _"Fichiers" " : " out
+ } else
+ print _"Paquet" " '" PKG "' " _"non trouvé"
+}
+
+
+function install( i)
+{
+ verif_if_root()
+ load_REPO()
+ for (i=1; i<=nPKG; i++) {
+ install2(tb_PKG[i], " ")
+ }
+}
+
+
+function install2(Pkg, Oper, cmd, i, pak)
+{
+ pak=Pkg"#"tb_REPO[Pkg] ".pkg.tar.xz"
+ download(pak)
+ if ("-do" in tb_OPT)
+ return
+
+ if (PRE=="y" && tb_PRE[Pkg]=="yes") { # pre-install
+ cmd = "/bin/bash " tb_PKGDIR[Pkg] "/PKGINST " Pkg "_pre_install"
+ if ("--dry" in tb_OPT) {
+ print "\033[1;33m" cmd "\033[1;0m"
+ } else {
+ while ((cmd | getline) >0)
+ print
+ close(cmd)
+ }
+ }
+ cmd = "pkgadd " AARGS " " Oper " " tb_PKGDIR[Pkg] pak # Oper==" " : insert ; Oper=="-u" : update
+ if ("--dry" in tb_OPT) {
+ print "\033[1;37m" cmd "\033[1;0m"
+ } else {
+ while ((cmd | getline) >0)
+ print
+ close(cmd)
+ }
+ if (POST=="y" && tb_POST[Pkg]=="yes") { # post-install
+ cmd = "/bin/bash " tb_PKGDIR[Pkg] "/PKGINST " Pkg "_post_install"
+ if ("--dry" in tb_OPT) {
+ print "\033[1;33m" cmd "\033[1;0m"
+ } else {
+ while ((cmd | getline) >0)
+ print
+ close(cmd)
+ }
+ }
+}
+
+
+function isinst()
+{
+ load_DB()
+ if (PKG in tb_DB)
+ print _"Le paquet" " " PKG " " _"est installé"
+ else
+ print _"Le paquet" " " PKG " " _"n'est pas installé"
+}
+
+
+function list( old_FS, FILE, j, prev)
+{
+ old_FS = FS
+ FS="#"
+ for (j=0; j<NPKGDIR; j++) {
+ FILE = PKGDIR[j] REPO
+ while ((getline < FILE) >0) {
+ if ($1 != prev) {
+ print $1
+ prev = $1
+ }
+ }
+ close(FILE)
+ }
+ FS = old_FS
+}
+
+
+function listinst( old_FS, old_RS, fl)
+{
+# if (PROCINFO["version"]) { # gawk
+ old_FS = FS; FS = "\t"
+ old_RS = RS; RS = ""
+ while (getline < DB)
+ print $1
+ close(DB)
+ FS = old_FS
+ RS = old_RS
+# } else { # awka
+# while (getline < DB) {
+# if (fl==0)
+# print $1
+# fl++
+# if (NF==0)
+# fl=0
+# }
+# close(DB)
+# }
+}
+
+
+function listlocked()
+{
+ while (getline < LOCKER)
+ print $1
+ close(LOCKER)
+}
+
+
+function load_DB( old_FS, old_RS, fl, pak)
+{
+# if (PROCINFO["version"]) { # gawk
+ old_FS=FS; FS="\n"
+ old_RS=RS; RS=""
+ while (getline < DB)
+ tb_DB[$1]=$2
+ close(DB)
+ FS=old_FS
+ RS=old_RS
+# } else { # awka
+# while (getline < DB) {
+# if (fl==1)
+# tb_DB[pak]=$1
+# if (fl==0)
+# pak=$1
+# fl++
+# if (NF==0)
+# fl=0
+# }
+# close(DB)
+# }
+}
+
+
+function load_DEPS( j, FILE)
+{
+ for (j=0; j<NPKGDIR; j++) {
+ FILE=PKGDIR[j] DEPS
+ while ((getline < FILE) >0) {
+ if (!($1 in tb_DEPS)) {
+ tb_DEPS[$1] = $3
+ tb_DEP_TRT[$1] = 0
+ tb_DEP_DIR[$1] = PKGDIR[j]
+ }
+ }
+ close(FILE)
+ }
+}
+
+
+function load_LOCKER()
+{
+ while (getline < LOCKER)
+ tb_LOCK[$1] = 1
+ close(LOCKER)
+}
+
+
+function load_RDEPS( a, FILE, i, j, n)
+{
+ for (j=0; j<NPKGDIR; j++) {
+ FILE=PKGDIR[j] DEPS
+ while ((getline < FILE) >0) {
+ n=split($3, a, ",")
+ for (i=1; i<=n; i++) {
+ tb_RDEPS[a[i]] = (a[i] in tb_RDEPS) ? tb_RDEPS[a[i]] "," $1 : $1
+ }
+ }
+ close(FILE)
+ }
+}
+
+
+function load_REPO( FILE, j, old_FS)
+{
+ old_FS = FS
+ FS="[:#]"
+ for (j=0; j<NPKGDIR; j++) {
+ FILE = PKGDIR[j] REPO
+ while (getline < FILE) {
+ if (!($1 in tb_REPO)) {
+ sub(".pkg.tar.xz","",$2)
+ tb_REPO[$1] = $2
+ tb_PRE[$1] = $6
+ tb_POST[$1] = $7
+ tb_READ[$1] = $8
+ tb_PKGDIR[$1] = PKGDIR[j]
+ tb_WEBDIR[$1] = WEBDIR[j]
+ }
+ }
+ close(FILE)
+ }
+ FS = old_FS
+}
+
+
+function lock( i)
+{
+ verif_if_root()
+ for (i=1; i<=nPKG; i++) {
+ print tb_PKG[i] >>LOCKER
+ }
+ close(LOCKER)
+}
+
+
+function path( a, cmd, j)
+{
+ load_REPO()
+ if (!PKG)
+ print NPKG ": 'path' " _"demande un argument"
+ else
+ print tb_PKGDIR[PKG]
+}
+
+
+function printff()
+{
+ print _"Désolé, fonction" " " OPER " " _"indisponible" "..."
+ exit 1
+}
+
+
+function quickdep()
+{
+ load_DB()
+ load_DEPS()
+ load_REPO()
+ quickdep2(PKG)
+ printf ("%s\n",PKG)
+}
+
+
+function quickdep2(Pkg, a, i, n)
+{
+ n=split(tb_DEPS[Pkg],a,",")
+ for (i=1; i<=n; i++) {
+ if (tb_DEP_TRT[a[i]]==0) {
+ tb_DEP_TRT[a[i]]++
+ if (a[i] in tb_DEPS)
+ quickdep2(a[i])
+ printf("%s ", a[i])
+ }
+ }
+}
+
+
+function quickdiff(Dest, a, i, n, pak)
+{
+ load_DB()
+ load_LOCKER()
+ load_REPO()
+ for (pak in tb_DB)
+ a[pak]=pak
+ n=asort(a)
+ delete tb_PKG
+ nPKG=0
+ for (i=1;i<=n;i++) {
+ pak=a[i]
+ if ((pak in tb_REPO) && (!(pak in tb_LOCK)) && (tb_DB[pak]!=tb_REPO[pak])) {
+ if (Dest=="tb")
+ tb_PKG[++nPKG] = pak
+ else
+ printf("%s ", pak)
+ }
+ }
+ printf("\n")
+}
+
+
+function quickhelp() {
+ print "\033[1;33m" _"Usage" "\033[1;0m: " NPKG " command <package1> [package2 ... packageN] [options]"
+ print "\033[1;33m" _"Quelques commandes" "\033[1;0m:"
+ print " sync " _"synchronise avec le dépôt"
+ print " depinst " _"installe package(s) et ses(leurs) dépendances"
+ print " info " _"informations concernant le package"
+ print " sysup " _"met à jour les paquets obsolètes"
+ print " diff " _"affiche la liste des paquets obsolètes"
+ print "\033[1;33m" _"Quelques options:" "\033[1;0m"
+ print " -do " _"télécharge seulement"
+ print " --install-scripts " _"utilise les scripts install"
+ print " -r <root> " _"utilise" " <root> " _"pour" " pkgadd"
+ print "\033[1;33m" _"Examples" "\033[1;0m:"
+ print " " NPKG " install sqlite pysqlite"
+ print " " NPKG " help"
+ print _"Pour d'autres commandes et examples, voir la page de manuel"
+}
+
+
+function readme( fl, j, FILE)
+{
+ for (j=0; j<NPKGDIR; j++) {
+ FILE=PKGDIR[j] READ
+ while ((getline < FILE) >0) {
+ if (fl==1) {
+ if (index($0,"##### PKGREADME: "))
+ exit
+ print $0
+ }
+ if (index($0,"##### PKGREADME: "PKG))
+ fl=1
+ }
+ close(FILE)
+ }
+}
+
+
+function search( j, FILE, old_FS)
+{
+ old_FS = FS
+ FS="[:#]"
+ for (j=0; j<NPKGDIR; j++) {
+ FILE=PKGDIR[j] REPO
+ while ((getline < FILE) >0) {
+ if (index($1,ARGV[2]))
+ print $1
+ }
+ close(FILE)
+ }
+ FS = old_FS
+}
+
+
+function sync( cmd, i, j, pak)
+{
+ verif_if_root()
+ pak[1]="PKGREPO"
+ pak[2]="PKGDEPS"
+ pak[3]="PKGREAD"
+ pak[4]="PKGINST"
+ pak[5]="PKGGRP"
+ for (j=0; j<NPKGDIR; j++) {
+ if (WEBDIR[j] > "") {
+ for (i=1; i<=4; i++) {
+ cmd="wget -O "PKGDIR[j] pak[i] " " WEBDIR[j] pak[i]
+ if ("--dry" in tb_OPT) {
+ print "\033[1;34m" cmd "\033[1;0m"
+ } else {
+ while ((cmd | getline) >0)
+ print
+ close(cmd)
+ }
+ }
+ }
+ }
+}
+
+
+function sysup( i)
+{
+ quickdiff("tb")
+ update()
+}
+
+
+function unlock( i, n, fl, tb_LCK)
+{
+ verif_if_root()
+ while (getline < LOCKER) {
+ fl="y"
+ for (i=1; i<=nPKG; i++)
+ if ($1==tb_PKG[i])
+ fl = "n"
+ if (fl=="y")
+ tb_LCK[++n] = $1
+ }
+ close(LOCKER)
+ printf("") > LOCKER
+ for (i=1; i<=n; i++)
+ print tb_LCK[i] >> LOCKER
+ close(LOCKER)
+}
+
+
+function update( i)
+{
+ verif_if_root()
+ load_LOCKER()
+ load_REPO()
+ for (i=1; i<=nPKG; i++) {
+ if (!(tb_PKG[i] in tb_LOCK)) {
+ print _"paquet à mettre à jour:" " " tb_PKG[i]
+ install2(tb_PKG[i], "-u")
+ }
+ }
+}
+
+
+function verif_if_root( cmd)
+{
+ if (!("--dry" in tb_OPT)) {
+ cmd="whoami"
+ cmd | getline
+ if ($1 !="root") {
+ print "\033[1;31m" _"Veuillez exécuter ce programme en tant que root !" "\033[1;0m"
+ exit 1
+ }
+ close(cmd)
+ }
+}
+
+
+function version()
+{
+ print NPKG " " VERSION " (" DATE ")"
+}
+
+
+function wrongparm()
+{
+ version()
+ print _"Paramètre" " '" OPER "' " _"erroné"
+ exit 1
+}
+
+
+#------------------------------------------------
+#
+# M A I N
+#
+#------------------------------------------------
+
+BEGIN {
+ configs()
+
+ if (OPER=="") quickhelp()
+ else if (OPER=="current") current()
+ else if (OPER=="dependent") dependent()
+ else if (OPER=="depends") depends()
+ else if (OPER=="depinst") rc=depinst()
+ else if (OPER=="diff") diff()
+ else if (OPER=="dsearch") dsearch()
+ else if (OPER=="help") help()
+ else if (OPER=="info") info()
+ else if (OPER=="install") install()
+ else if (OPER=="isinst") isinst()
+ else if (OPER=="list") list()
+ else if (OPER=="listinst") listinst()
+ else if (OPER=="listlocked") listlocked()
+ else if (OPER=="lock") lock()
+ else if (OPER=="path") path()
+ else if (OPER=="printf") printff()
+ else if (OPER=="quickdep") quickdep()
+ else if (OPER=="quickdiff") quickdiff()
+ else if (OPER=="readme") readme()
+ else if (OPER=="search") search()
+ else if (OPER=="sync") sync()
+ else if (OPER=="sysup") sysup()
+ else if (OPER=="unlock") unlock()
+ else if (OPER=="update") update()
+ else if (OPER=="version") version()
+ else wrongparm()
+
+ exit
+}