Opened 15 years ago

Last modified 14 years ago

#21864 closed defect

bad code in fs-traverse update in portarchive.tcl — at Initial Version

Reported by: david.osguthorpe@… Owned by: macports-tickets@…
Priority: High Milestone: MacPorts 1.9.0
Component: base Version: 1.8.0
Keywords: Cc:
Port:

Description

Since 1.8.0 at least (but not at 1.7.0) the original 1.7.0 find code in archive_main in portarchive.tcl

foreach fullpath [exec find $destpath ! -type d] {
...
}

was replaced by an fs-traverse call

        fs-traverse fullpath $destpath {
            if {[file isdirectory $fullpath]} {
                continue
            }
       ....
      }

this code terminates immediately as the first fullpath is a directory which is skipped and hence the contents of the directory are not scanned - ... is never executed for anything

this means since 1.8.0 all +CONTENTS files in archives are incorrect as they do not have a file list

fixups are

        fs-traverse -depth fullpath $destpath {
            if {[file isdirectory $fullpath]} {
                continue
            }
       ....
      }

or

        fs-traverse fullpath $destpath {
            if {![file isdirectory $fullpath]} {
                ...
            }
      }

Change History (0)

Note: See TracTickets for help on using tickets.