Opened 15 years ago

Closed 14 years ago

Last modified 14 years ago

#21864 closed defect (fixed)

bad code in fs-traverse update in portarchive.tcl

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

Description (last modified by jmroot (Joshua Root))

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 (3)

comment:1 Changed 15 years ago by nerdling (Jeremy Lavergne)

Cc: snc@… added

Cc Me!

comment:2 Changed 14 years ago by jmroot (Joshua Root)

Description: modified (diff)
Resolution: fixed
Status: newclosed

comment:3 Changed 14 years ago by jmroot (Joshua Root)

Milestone: MacPorts 1.9.0
Note: See TracTickets for help on using tickets.