0cddbff9bef7cd6c4b33eb9a8818c6ba24ba1a25
[people/pmueller/ipfire-2.x.git] / src / pakfire / lib / check_pak.sh
1 #!/bin/sh
2 ############################################################################################
3 # Version 0.1a, Copyright (C) 2006 by IPFire.org #
4 # IPFire ist freie Software, die Sie unter bestimmten Bedingungen weitergeben dürfen. #
5 ############################################################################################
6
7 # Verzeichnis von Pakman
8 VERZ=$(get_conf.sh HOME)
9
10 # Update-Verzeichnis
11 UP_DIR=$(get_conf.sh UP_DIR)
12
13 # Verzeichnis mit nicht Installierten Paketen
14 NIP_DIR=$(get_conf.sh NIP_DIR)
15
16 # Verzeichnis mit Installierten Paketen
17 IP_DIR=$(get_conf.sh IP_DIR)
18
19 # Patchliste
20 PATCH_LIST=$(get_conf.sh DEST_DIR)/$(get_conf.sh LIST_NAME)
21
22 # Zerlegte Listen
23 ZERL_PATCH=$(get_conf.sh DEST_DIR)/zerl_
24
25 # Listen Verzeichnis
26 LIST_DIR=$(get_conf.sh DEST_DIR)
27
28 # Zerlegen der Liste erst jede Zeile fuer sich bei maximal 99998 Einträgen
29 for (( i=1 ; i<99999 ; i++))
30 do
31
32 patch=$(head -${i} ${PATCH_LIST} | tail -1)
33 echo $patch >${ZERL_PATCH}$i
34
35 if [ "${patch}" = "###EOF###" ]
36 then
37 rm ${ZERL_PATCH}$i
38 break
39 fi
40
41 if [ $i -ge 99999 ]
42 then
43 echo "Defektes Patchfile!!!"
44 /bin/rm -f ${ZERL_PATCH}*
45 exit 1
46 fi
47
48 done
49
50 # Errechnen wieviele Patches eingetragen sind
51 (( i-- ))
52
53 # Jedes Paket nach Name zerlegen
54 for list in $(find $LIST_DIR -type f -name "zerl_*")
55 do
56
57 # Zeile lesen Zeile
58 zeile=$(cat $list)
59
60 # Auf Namen reduzieren
61 name=${zeile%%-*}
62
63 # Auf Version reduzieren
64 vers=${zeile#*-}
65 vers=${vers%% *}
66
67 # Testen ob aktuelle Verson schon installiert ist
68 if [ -e ${IP_DIR}${name}-${vers} ]
69 then continue
70 else
71 # Testen ob eine ältere Version installiert ist
72 if [ -e ${IP_DIR}${name}-* ]
73 then
74 # Erst alte Update Vorschläge löschen
75 /bin/rm -f ${UO_DIR}${name}-*
76 /bin/touch ${UP_DIR}${name}-${vers}
77 else
78 # Erst alte Paket Vorschläge löschen
79 /bin/rm -f ${NIP_DIR}${name}-*
80 /bin/touch ${NIP_DIR}${name}-${vers}
81 fi
82
83 fi
84
85 done
86
87 # Löschen der Hilfslisten
88 /bin/rm -f ${ZERL_PATCH}*
89
90 ################################### EOF ####################################################