Author: djpig
Date: 2006-02-10 14:40:46 +0000 (Fri, 10 Feb 2006)
New Revision: 99

Modified:
   trunk/ChangeLog
   trunk/debian/changelog
   trunk/src/configure.c
Log:
On package configuration, differentiate between modified and
deleted configuration files (Ian Jackson). Closes: #351361


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2006-02-10 03:52:11 UTC (rev 98)
+++ trunk/ChangeLog     2006-02-10 14:40:46 UTC (rev 99)
@@ -1,3 +1,11 @@
+2006-02-10  Ian Jackson <[EMAIL PROTECTED]>
+
+       * src/configure.c: Differentiate between modified
+       and deleted configuration files. Gives and more
+       accurate description to the user and eliminates
+       a warning that was produced when trying to
+       backup a non-existant file.
+
 2006-02-10  James R. Van Zandt  <[EMAIL PROTECTED]>
 
        * man/C/dpkg.1: Document the default log file. The behaviour in case

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog      2006-02-10 03:52:11 UTC (rev 98)
+++ trunk/debian/changelog      2006-02-10 14:40:46 UTC (rev 99)
@@ -42,6 +42,8 @@
     by creating new files in a secure manner. Closes: #178839, #338591
   * Fix some semantic errors in dpkg-shlibdeps due to typos in used
     variables.
+  * On package configuration, differentiate between modified and
+    deleted configuration files (Ian Jackson). Closes: #351361
 
   [ Christian Perrier ]
   * Switch to po4a for manpages translation. Closes: #320122

Modified: trunk/src/configure.c
===================================================================
--- trunk/src/configure.c       2006-02-10 03:52:11 UTC (rev 98)
+++ trunk/src/configure.c       2006-02-10 14:40:46 UTC (rev 99)
@@ -214,6 +214,8 @@
                                useredited= strcmp(conff->hash,currenthash) != 
0;
                                distedited= strcmp(conff->hash,newdisthash) != 
0;
                                what= conffoptcells[useredited][distedited];
+                               if (!strcmp(currenthash,NONEXISTENTFLAG))
+                                       what |= cfof_userrmd;
                        }
 
                        debug(dbg_conff,
@@ -222,7 +224,7 @@
 
                        what=promptconfaction(conff->name, cdr.buf, cdr2.buf, 
useredited, distedited, what);
 
-                       switch (what & ~cfof_isnew) {
+                       switch (what & ~(cfof_isnew|cfof_userrmd)) {
                                case cfo_keep | cfof_backup:
                                        strcpy(cdr2rest,DPKGOLDEXT);
                                        if (unlink(cdr2.buf) && errno != ENOENT)
@@ -258,8 +260,9 @@
                                                fprintf(stderr,
                                                                _("dpkg: %s: 
warning - failed to remove `%.250s' (before overwrite): %s\n"),
                                                                pkg->name, 
cdr2.buf, strerror(errno));
-                                       if (link(cdr.buf,cdr2.buf))
-                                               fprintf(stderr,
+                                       if (!(what & cfof_userrmd))
+                                               if (link(cdr.buf,cdr2.buf))
+                                                       fprintf(stderr,
                                                                _("dpkg: %s: 
warning - failed to link `%.250s' to `%.250s': %s\n"),
                                                                pkg->name, 
cdr.buf, cdr2.buf, strerror(errno));
                                        /* fall through */
@@ -560,9 +563,11 @@
                                                " ==> File on system created by 
you or by a script.\n"
                                                " ==> File also in package 
provided by package maintainer.\n"));
                } else {
-                       fprintf(stderr, useredited ?
+                       fprintf(stderr, !useredited ?
+                                       _("\n     Not modified since 
installation.\n") :
+                                                       !(what & cfof_userrmd) ?
                                        _("\n ==> Modified (by you or by a 
script) since installation.\n") :
-                                       _("\n     Not modified since 
installation.\n"));
+                                       _("\n ==> Deleted (by you or by a 
script) since installation.\n"));
 
                        fprintf(stderr, distedited ?
                                        _(" ==> Package distributor has shipped 
an updated version.\n") :
@@ -646,15 +651,17 @@
        log_message("conffile %s %s", cfgfile,
                    (cc == 'i' || cc == 'y') ? "install" : "keep");
 
+       what &= cfof_userrmd;
+
        switch (cc) {
                case 'i':
                case 'y':
-                       what=cfof_install|cfof_backup;
+                       what |= cfof_install|cfof_backup;
                        break;
 
                case 'n':
                case 'o':
-                       what=cfof_keep|cfof_backup;
+                       what |= cfof_keep|cfof_backup;
                        break;
 
                default:


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to