Changeset 11070


Ignore:
Timestamp:
Feb 19, 2005, 11:10:51 PM (15 years ago)
Author:
rshaw
Message:

Corrected dportsearch to issue warnings for each source that is missing
an index file (rather than failing on the first one not found), and
fails with an error if no index file is found at all (when all sources
are missing an index file).

Bug: 2708
Submitted by: jmpp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/darwinports1.0/darwinports.tcl

    r11044 r11070  
    44# Copyright (c) 2004 Paul Guyot, Darwinports Team.
    55# Copyright (c) 2004 Ole Guldberg Jensen <olegb@opendarwin.org>.
    6 # Copyright (c) 2004 Robert Shaw <rshaw@opendarwin.org>
     6# Copyright (c) 2004 - 2005 Robert Shaw <rshaw@opendarwin.org>
    77# All rights reserved.
    88#
     
    820820    # XXX This should not happen, but does with the tk port when searching for tcl.
    821821    if {![info exists sources]} { return $matches }
     822        set found 0
    822823    foreach source $sources {
    823824        if {[darwinports::getprotocol $source] == "dports"} {
     
    827828                } else {
    828829                if {[catch {set fd [open [darwinports::getindex $source] r]} result]} {
    829                     return -code error "Can't open index file for source $source. Have you synced your source indexes?"
    830                         }
    831                 while {[gets $fd line] >= 0} {
    832                     set name [lindex $line 0]
    833                                 if {$case_sensitive == "yes"} {
    834                                         set rxres [regexp -- $regexp $name]
    835                                 } else {
    836                                         set rxres [regexp -nocase -- $regexp $name]
     830                    ui_warn "Can't open index file for source: $source"
     831                        } else {
     832                                incr found 1
     833                                while {[gets $fd line] >= 0} {
     834                                        set name [lindex $line 0]
     835                                        if {$case_sensitive == "yes"} {
     836                                                set rxres [regexp -- $regexp $name]
     837                                        } else {
     838                                                set rxres [regexp -nocase -- $regexp $name]
     839                                        }
     840                                        if {$rxres == 1} {
     841                                                gets $fd line
     842                                                array set portinfo $line
     843                                                if {[info exists portinfo(portarchive)]} {
     844                                                        set porturl ${source}/$portinfo(portarchive)
     845                                                } elseif {[info exists portinfo(portdir)]} {
     846                                                        set porturl ${source}/$portinfo(portdir)
     847                                                }
     848                                                if {[info exists porturl]} {
     849                                                        lappend line porturl $porturl
     850                                                        ui_debug "Found port in $porturl"
     851                                                } else {
     852                                                        ui_debug "Found port info: $line"
     853                                                }
     854                                                lappend matches $name
     855                                                lappend matches $line
     856                                        } else {
     857                                                set len [lindex $line 1]
     858                                                catch {seek $fd $len current}
     859                                        }
    837860                                }
    838                     if {$rxres == 1} {
    839                         gets $fd line
    840                         array set portinfo $line
    841                         if {[info exists portinfo(portarchive)]} {
    842                             set porturl ${source}/$portinfo(portarchive)
    843                         } elseif {[info exists portinfo(portdir)]} {
    844                             set porturl ${source}/$portinfo(portdir)
    845                         }
    846                                         if {[info exists porturl]} {
    847                             lappend line porturl $porturl
    848                                                 ui_debug "Found port in $porturl"
    849                                         } else {
    850                                                 ui_debug "Found port info: $line"
    851                                         }
    852                         lappend matches $name
    853                         lappend matches $line
    854                     } else {
    855                         set len [lindex $line 1]
    856                                         catch {seek $fd $len current}
    857                     }
    858                 }
    859                 close $fd
    860                 }
    861     }
     861                                close $fd
     862                        }
     863                }
     864    }
     865        if {!$found} {
     866                return -code error "No index(es) found! Have you synced your source indexes?"
     867        }
    862868
    863869    return $matches
Note: See TracChangeset for help on using the changeset viewer.