| | 139 | attrChars = 'pinugsamc' |
|---|
| | 140 | statMap = [ST_MODE, ST_INO, ST_NLINK, |
|---|
| | 141 | ST_UID, ST_GID, ST_SIZE, |
|---|
| | 142 | ST_ATIME, ST_MTIME, ST_CTIME] |
|---|
| | 143 | attrStatMap = [ATTR_PERM, ATTR_INODE, ATTR_NLINK, |
|---|
| | 144 | ATTR_UID, ATTR_GID, ATTR_SIZE, |
|---|
| | 145 | ATTR_ATIME, ATTR_MTIME, ATTR_CTIME] |
|---|
| | 146 | |
|---|
| 147 | | changedstr = "changed: %s" % name |
|---|
| 148 | | if sb[ST_MODE] != oldsb[0] and attr & ATTR_PERM: |
|---|
| 149 | | changedstr = changedstr + " p(%d:%d)" % (oldsb[0], sb[ST_MODE]) |
|---|
| 150 | | if sb[ST_INO] != oldsb[1] and attr & ATTR_INODE: |
|---|
| 151 | | pass |
|---|
| 152 | | if sb[ST_NLINK] != oldsb[2] and attr & ATTR_INODE: |
|---|
| 153 | | pass |
|---|
| 154 | | if sb[ST_UID] != oldsb[3] and attr & ATTR_INODE: |
|---|
| 155 | | pass |
|---|
| 156 | | if sb[ST_GID] != oldsb[4] and attr & ATTR_INODE: |
|---|
| 157 | | pass |
|---|
| 158 | | if sb[ST_SIZE] != oldsb[5] and attr & ATTR_INODE: |
|---|
| 159 | | pass |
|---|
| 160 | | if sb[ST_ATIME] != oldsb[6] and attr & ATTR_INODE: |
|---|
| 161 | | pass |
|---|
| 162 | | if sb[ST_MTIME] != oldsb[7] and attr & ATTR_INODE: |
|---|
| 163 | | pass |
|---|
| 164 | | if sb[ST_CTIME] != oldsb[8] and attr & ATTR_INODE: |
|---|
| 165 | | pass |
|---|
| | 154 | changed = 0 |
|---|
| | 155 | changedstr = "changed: %s" % (root + name) |
|---|
| | 156 | for i in range(9): |
|---|
| | 157 | if sb[statMap[i]] != oldsb[i] and attr & attrStatMap[i]: |
|---|
| | 158 | changed = 1 |
|---|
| | 159 | changedstr = changedstr + " %c(%d:%d)" % \ |
|---|
| | 160 | (attrChars[i], oldsb[i], sb[statMap[i]]) |
|---|
| 167 | | pass |
|---|
| 168 | | else: |
|---|
| 169 | | print "added: %s" |
|---|
| | 162 | hash = hashFile(root + name) |
|---|
| | 163 | if hash != oldsb[9]: |
|---|
| | 164 | changed = 1 |
|---|
| | 165 | changedstr = changedstr + " h(%s:%s)" % \ |
|---|
| | 166 | (oldsb[9], hash) |
|---|
| | 167 | if changed: |
|---|
| | 168 | print changedstr |
|---|
| | 169 | else: |
|---|
| | 170 | if attr & ATTR_HASH: |
|---|
| | 171 | hash = hashFile(root + name) |
|---|
| | 172 | else: |
|---|
| | 173 | hash = "-" |
|---|
| | 174 | print "added: %s p(%d) i(%d) n(%d) u(%d) g(%d) s(%d) a(%d) m(%d) c(%d) h(%s)" % \ |
|---|
| | 175 | (root + name, |
|---|
| | 176 | sb[ST_MODE], sb[ST_INO], sb[ST_NLINK], |
|---|
| | 177 | sb[ST_UID], sb[ST_GID], sb[ST_SIZE], |
|---|
| | 178 | sb[ST_ATIME], sb[ST_MTIME], sb[ST_CTIME], |
|---|
| | 179 | hash) |
|---|
| | 252 | if doUpdate: |
|---|
| | 253 | db.close() |
|---|
| | 254 | if doCheck: |
|---|
| | 255 | oldDB.close() |
|---|
| | 256 | |
|---|
| | 257 | def checkDeleted(root, dbName, oldDBName): |
|---|
| | 258 | import bsddb |
|---|
| | 259 | |
|---|
| | 260 | oldDB = bsddb.hashopen(oldDBName) |
|---|
| | 261 | db = bsddb.hashopen(dbName) |
|---|
| | 262 | |
|---|
| | 263 | for entry in oldDB.keys(): |
|---|
| | 264 | if not db.has_key(entry): |
|---|
| | 265 | oldsb = oldDB[entry] |
|---|
| | 266 | oldsb = oldsb.split() |
|---|
| | 267 | for i in range(9): |
|---|
| | 268 | oldsb[i] = long(oldsb[i]) |
|---|
| | 269 | |
|---|
| | 270 | print "deleted: %s p(%d) i(%d) n(%d) u(%d) g(%d) s(%d) a(%d) m(%d) c(%d) h(%s)" % \ |
|---|
| | 271 | (root + entry, |
|---|
| | 272 | oldsb[0], oldsb[1], oldsb[2], |
|---|
| | 273 | oldsb[3], oldsb[4], oldsb[5], |
|---|
| | 274 | oldsb[6], oldsb[7], oldsb[8], |
|---|
| | 275 | oldsb[9]) |
|---|
| | 276 | |
|---|