summaryrefslogtreecommitdiffstats
path: root/base/pkg-get/pkg-get.awk
diff options
context:
space:
mode:
Diffstat (limited to 'base/pkg-get/pkg-get.awk')
-rwxr-xr-xbase/pkg-get/pkg-get.awk829
1 files changed, 829 insertions, 0 deletions
diff --git a/base/pkg-get/pkg-get.awk b/base/pkg-get/pkg-get.awk
new file mode 100755
index 000000000..d8e526a80
--- /dev/null
+++ b/base/pkg-get/pkg-get.awk
@@ -0,0 +1,829 @@
+#! /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.2"
+ DATE = "2011-03-11"
+
+ # defauts
+ CONF = "/etc/pkg-get.conf"
+ VERSFILE = "/var/lib/pkg/nutyx-version"
+ DB = "/var/lib/pkg/db"
+ LOCKER = "/var/lib/pkg/pkg-get.locker"
+ PRE = "n"
+ POST = "n"
+ PKGDIR[0] = "/srv/NuTyX/release/"
+ load_NUTYX_VERSION()
+ "uname -p " | getline ENV; close("uname -p")
+ WEBDIR[0] = "http://nutyx.meticul.eu/" NUTYX_VERSION "/" ENV "/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]
+ }
+
+ # 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
+
+ # 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_REPO()
+ if (!(PKG in tb_REPO)) {
+ print _"Paquet" " " _"indisponible" ": "PKG
+ exit 1
+ }
+ load_DB()
+ load_DEPS()
+ for (i=1; i<=nPKG; i++) {
+ if (tb_PKG[i] in tb_DB)
+ print _"Le paquet" " " tb_PKG[i] " " _"est déjà installé"
+ else
+ 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_update2(a[i], "")
+ }
+ }
+ }
+ if (!(Pkg in tb_DB)) {
+ install2_update2(Pkg, "")
+ }
+}
+
+
+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, WEBREPO, fnPak, cmd, rc, pakw)
+{
+ split(pak,a,"#")
+ WEBREPO = tb_WEBDIR[a[1]]
+ fnPak = tb_PKGDIR[a[1]] pak
+ if ((getline < fnPak) <=0) {
+ pakw = pak
+ sub("#", "%23", pakw)
+ cmd="wget --no-directories --tries=3 --waitretry=3 -nv --directory-prefix="tb_PKGDIR[a[1]] " " WEBREPO pakw
+ if ("--dry" in tb_OPT) {
+ print "\033[1;34m" cmd "\033[1;0m"
+ } else {
+ rc=system(cmd)
+ if (rc>0) {
+ print "ERREUR", rc
+ exit 1
+ }
+ if (!("-im" in tb_OPT))
+ verif_md5sum(tb_PKGDIR[a[1]], pak)
+ }
+ }
+}
+
+
+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()
+ if (!(PKG in tb_REPO)) {
+ print _"Paquet" " " _"indisponible" ": "PKG
+ exit 1
+ }
+ load_DB()
+ for (i=1; i<=nPKG; i++) {
+ if (tb_PKG[i] in tb_DB)
+ print _"Le paquet" " " tb_PKG[i] " " _"est déjà installé"
+ else
+ install2_update2(tb_PKG[i], " ")
+ }
+}
+
+
+function install2_update2(Pkg, Oper, cmd, i, pak)
+{
+ if (!(Pkg in tb_REPO)) {
+ print "\033[1;31m" _"Paquet" " " Pkg " " _"indisponible" "\033[1;0m"
+ return
+ }
+ if (tb_REPO[Pkg] != "" ) {
+ pak=Pkg"#"tb_REPO[Pkg] ".pkg.tar.xz"
+ download(pak)
+ }
+ if ("-do" in tb_OPT)
+ return
+ print _"Installation de" " " Pkg
+ 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)
+ }
+
+ tb_DB[Pkg]=tb_REPO[Pkg]
+
+ 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)
+{
+ old_FS = FS; FS = "\t"
+ old_RS = RS; RS = ""
+ while (getline < DB)
+ print $1
+ close(DB)
+ FS = old_FS
+ RS = old_RS
+}
+
+
+function listlocked()
+{
+ while (getline < LOCKER)
+ print $1
+ close(LOCKER)
+}
+
+
+function load_DB( old_FS, old_RS, fl, pak)
+{
+ old_FS=FS; FS="\n"
+ old_RS=RS; RS=""
+ while (getline < DB)
+ tb_DB[$1]=$2
+ close(DB)
+ FS=old_FS
+ RS=old_RS
+}
+
+
+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_NUTYX_VERSION( old_FS)
+{
+ old_FS = FS
+ FS = "-"
+ getline < VERSFILE
+ if ($1=="2010") NUTYX_VERSION = "attapu"
+ else if ($1=="2011") NUTYX_VERSION = "pakxe"
+ close(VERSFILE)
+ FS = old_FS
+}
+
+
+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++) {
+ if (a[i] in tb_RDEPS) {
+ if (!index(tb_RDEPS[a[i]],$1))
+ tb_RDEPS[a[i]] = tb_RDEPS[a[i]] "," $1
+ } else {
+ tb_RDEPS[a[i]] = $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_MD5[$1] = $4
+ 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, rc)
+{
+ 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 -q -O "PKGDIR[j] pak[i] " " WEBDIR[j] pak[i]
+ if ("--dry" in tb_OPT) {
+ print "\033[1;34m" cmd "\033[1;0m"
+ } else {
+ rc=system(cmd)
+ if (rc>0) {
+ print "ERREUR", rc
+ exit 1
+ }
+ }
+ }
+ }
+ }
+}
+
+
+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, pak)
+{
+ verif_if_root()
+ load_LOCKER()
+ load_REPO()
+ load_DB()
+ for (i=1; i<=nPKG; i++) {
+ pak = tb_PKG[i]
+ if (pak in tb_LOCK)
+ print pak ": " _"paquet verouillé !"
+ else
+ if (!(pak in tb_DB))
+ print pak ": " _"pas de mise à jour d'un paquet non installé !"
+ else
+ if (tb_DB[pak]==tb_REPO[pak])
+ print pak ": " _"paquet déjà à la dernière version"
+ else {
+ print _"paquet à mettre à jour:" " " pak
+ install2_update2(pak, "-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 verif_md5sum(dir, pk, cmd, md5, a, rep)
+{
+ cmd="md5sum " dir pk
+ cmd | getline
+ split($0,md5," ")
+ close(cmd)
+ split(pk,a,"#")
+ if (md5[1]!=tb_MD5[a[1]]) {
+ print "-------> " _"ERREUR" ": " _"md5sum erroné pour " a[1]
+ print _"requis" ": " tb_MD5[a[1]]
+ print _"trouvé" ": " md5[1]
+ print "Supprimer " dir pk " <y/n> ?"
+ getline rep
+ if (rep=="y") {
+ cmd = "rm " dir pk
+ while ((cmd | getline) > 0)
+ print
+ close(cmd)
+ }
+ exit 1
+ }
+}
+
+
+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
+}