Update to upstream util-linux 2.20.1
[framework/base/util-linux-ng.git] / libblkid / src / save.c
similarity index 92%
rename from shlibs/blkid/src/save.c
rename to libblkid/src/save.c
index bbe6f48..a71b068 100644 (file)
@@ -18,9 +18,6 @@
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
-#ifdef HAVE_SYS_MKDEV_H
-#include <sys/mkdev.h>
-#endif
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
@@ -37,9 +34,11 @@ static int save_dev(blkid_dev dev, FILE *file)
            printf("device %s, type %s\n", dev->bid_name, dev->bid_type ?
                   dev->bid_type : "(null)"));
 
-       fprintf(file,
-               "<device DEVNO=\"0x%04lx\" TIME=\"%ld\"",
-               (unsigned long) dev->bid_devno, (long) dev->bid_time);
+       fprintf(file, "<device DEVNO=\"0x%04lx\" TIME=\"%ld.%ld\"",
+                       (unsigned long) dev->bid_devno,
+                       (long) dev->bid_time,
+                       (long) dev->bid_utime);
+
        if (dev->bid_pri)
                fprintf(file, " PRI=\"%d\"", dev->bid_pri);
        list_for_each(p, &dev->bid_tags) {
@@ -119,7 +118,7 @@ int blkid_flush_cache(blkid_cache cache)
 
        list_for_each(p, &cache->bic_devs) {
                blkid_dev dev = list_entry(p, struct blkid_struct_dev, bid_devs);
-               if (!dev->bid_type)
+               if (!dev->bid_type || (dev->bid_flags & BLKID_BID_FL_REMOVABLE))
                        continue;
                if ((ret = save_dev(dev, file)) < 0)
                        break;
@@ -143,7 +142,11 @@ int blkid_flush_cache(blkid_cache cache)
                        if (backup) {
                                sprintf(backup, "%s.old", filename);
                                unlink(backup);
-                               link(filename, backup);
+                               if (link(filename, backup)) {
+                                       DBG(DEBUG_SAVE,
+                                               printf("can't link %s to %s\n",
+                                                       filename, backup));
+                               }
                                free(backup);
                        }
                        rename(opened, filename);