]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/cdromutl.cc
Changed CD ident rountine to not use inodes
[apt.git] / apt-pkg / contrib / cdromutl.cc
index d0d810c5d05e5b3408ba0352aaaac1ea8d549b9d..99eb540ec2a6001bc3039926825e08873e39103f 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: cdromutl.cc,v 1.5 1999/04/20 05:11:17 jgg Exp $
+// $Id: cdromutl.cc,v 1.6 1999/06/05 03:54:29 jgg Exp $
 /* ######################################################################
    
    CDROM Utilities - Some functions to manipulate CDROM mounts.
@@ -160,7 +160,7 @@ bool MountCdrom(string Path)
 // ---------------------------------------------------------------------
 /* We convert everything we hash into a string, this prevents byte size/order
    from effecting the outcome. */
-bool IdentCdrom(string CD,string &Res)
+bool IdentCdrom(string CD,string &Res,unsigned int Version)
 {
    MD5Summation Hash;
 
@@ -182,8 +182,19 @@ bool IdentCdrom(string CD,string &Res)
       if (strcmp(Dir->d_name,".") == 0 ||
          strcmp(Dir->d_name,"..") == 0)
         continue;
-   
-      sprintf(S,"%lu",Dir->d_ino);
+
+      if (Version <= 1)
+      {
+        sprintf(S,"%lu",Dir->d_ino);
+      }
+      else
+      {
+        struct stat Buf;
+        if (stat(Dir->d_name,&Buf) != 0)
+           continue;
+        sprintf(S,"%lu",Buf.st_mtime);
+      }
+      
       Hash.Add(S);
       Hash.Add(Dir->d_name);
    };
@@ -201,7 +212,8 @@ bool IdentCdrom(string CD,string &Res)
           (long)(Buf.f_bfree*(Buf.f_bsize/1024)));
    Hash.Add(S);
    
-   Res = Hash.Result().Value();
+   sprintf(S,"-%u",Version);
+   Res = Hash.Result().Value() + S;
    return true;   
 }
                                                                        /*}}}*/