Backup konfiguracijskih datoteka u /var/backups/xinetd-cn/.
authorDragan Dosen <bane@nekkar.carnet.hr>
Thu, 19 Feb 2009 21:51:46 +0000 (22:51 +0100)
committerDragan Dosen <bane@nekkar.carnet.hr>
Thu, 19 Feb 2009 21:53:21 +0000 (22:53 +0100)
  Koristenje -r (--regexp-extended) za sed, manje izmjene u
  regularnim izrazima za egrep i sed.

debian/changelog
debian/postinst

index 47d1adc..a799cef 100644 (file)
@@ -8,6 +8,8 @@ xinetd-cn (1:2.3.14-2) stable; urgency=low
       migracija na odvojenu xinetd konfiguraciju nije uspjesna,
     + deaktivacija novog 'INETD_COMPAT=Yes' zapisa unutar datoteke
       /etc/default/xinetd - isti se postavlja u 'INETD_COMPAT=No',
+    + backup konfiguracijskih datoteka od sada se nalazi unutar
+      direktorija /var/backups/xinetd-cn/,
     + dodatne manje izmjene.
   * Datoteka debian/control:
     + ovisnost o xinetd (>= 1:2.3.14-7~cn1).
index 20e4b9d..b7878b6 100644 (file)
@@ -12,9 +12,11 @@ PKG=xinetd-cn
 CONF=/etc/xinetd.conf
 INETDCONF=/etc/inetd.conf
 DEFAULT=/etc/default/xinetd
+BACKUPDIR=/var/backups/xinetd-cn
 
 need_restart=0
 temp_files=
+xinetd_conf_did=0
 
 # cleanup()
 #
@@ -39,11 +41,11 @@ trap cleanup 0 1 2 15
 
 # First, we do backup (inetd, xinetd)
 #
-if cp_check_and_backup "$INETDCONF"; then
-       cp_echo "CN: Old $INETDCONF saved as /var/backups/`basename $INETDCONF`.bak."
+if cp_backup_conffile -r -d $BACKUPDIR -p $INETDCONF; then
+       cp_echo "CN: Old $INETDCONF saved as $BACKUPDIR/`basename $INETDCONF`.bak."
 fi
-if cp_check_and_backup "$CONF"; then
-       cp_echo "CN: Old $CONF saved as /var/backups/`basename $CONF`.bak."
+if cp_backup_conffile -r -d $BACKUPDIR -p $CONF; then
+       cp_echo "CN: Old $CONF saved as $BACKUPDIR/`basename $CONF`.bak."
 fi
 
 CONFTMP=`mktemp $CONF.tmp.XXXXXX`
@@ -60,9 +62,12 @@ fi
 #
 conffile_list="$CONFTMP"
 if [ -f "$CONF" ]; then
-       conffile_list="$CONF $conffile_list"
+       if egrep -q "^service[[:space:]]+" "$CONF"; then
+               conffile_list="$CONF $conffile_list"
+               xinetd_conf_did=1
+       fi
 fi
-services_list="`cat $conffile_list | grep "^service " | uniq | sed 's/service //g'`" || true
+services_list="`cat $conffile_list | egrep "^service[[:space:]]+" | sed -r 's/service[[:space:]]+//g' | uniq`" || true
 
 if [ -n "$services_list" ]; then
 
@@ -70,8 +75,8 @@ if [ -n "$services_list" ]; then
 
        if [ -f "/etc/xinetd.d/$service" ]; then
 
-               if cp_check_and_backup "/etc/xinetd.d/$service"; then
-                       cp_echo "CN: Old /etc/xinetd.d/$service saved as /var/backups/`basename /etc/xinetd.d/$service`.bak."
+               if cp_backup_conffile -r -d $BACKUPDIR -p /etc/xinetd.d/$service; then
+                       cp_echo "CN: Old /etc/xinetd.d/$service saved as $BACKUPDIR/`basename /etc/xinetd.d/$service`.bak."
                fi
 
                rm -f /etc/xinetd.d/$service
@@ -79,17 +84,17 @@ if [ -n "$services_list" ]; then
 
        touch /etc/xinetd.d/$service || true
        # cat "$CONF" "$CONFTMP" | sed -n "/^service $service/,/^}/p" | cp-update "$PKG" "/etc/xinetd.d/$service"
-       cat "$CONF" "$CONFTMP" | sed -n "/^service $service/,/^}/p" >> "/etc/xinetd.d/$service"
+       cat $conffile_list | sed -rn "/^service[[:space:]]+$service/,/^}/p" >> "/etc/xinetd.d/$service"
 
        need_restart=1
     done
 
-    if egrep -q "service " "$CONFTMP"; then
+    if egrep -q "^service[[:space:]]+" "$CONFTMP"; then
        cp_echo "CN: All services were converted from $INETDCONF file to separated"
        cp_echo "CN: configuration files located in /etc/xinetd.d/ directory."
     fi
 
-    if [ -f "$CONF" ]; then
+    if [ $xinetd_conf_did -eq 1 ]; then
        cp_echo "CN: All services were converted from $CONF file to separated"
        cp_echo "CN: configuration files located in /etc/xinetd.d/ directory."
     fi
@@ -105,8 +110,8 @@ fi
 
 # Remove services from /etc/xinetd.conf file
 #
-cp_check_and_sed "^service " \
-       "/^service/,/^}/d" \
+cp_check_and_sed "^service[[:space:]]+" \
+       "/^service[[:space:]]/,/^}/d" \
        "$CONF" && need_restart=1 || true
 
 # Check if there is no defaults block in /etc/xinetd.conf