[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.116.80.68: ~ $
#
# convlib.tcl --
#
#     Convert Ousterhout style tclIndex files and associated libraries to a
# package library.
# 
#------------------------------------------------------------------------------
# Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies.  Karl Lehenbauer and
# Mark Diekhans make no representations about the suitability of this
# software for any purpose.  It is provided "as is" without express or
# implied warranty.
#------------------------------------------------------------------------------
# $Id: convlib.tcl,v 1.1 2001/10/24 23:31:48 hobbs Exp $
#------------------------------------------------------------------------------
#

#@package: TclX-convertlib convert_lib

namespace eval TclX {

    #--------------------------------------------------------------------------
    # ParseTclIndex
    # Parse a tclIndex file, returning an array of file names with the list of
    # procedures in each package. This is done by sourcing the file and then
    # going through the local auto_index array that was created. Issues
    # warnings for lines that can't be converted. 
    #
    # Returns 1 if all lines are converted, 0 if some failed.
    #

    proc ParseTclIndex {tclIndex fileTblVar ignore} {
        upvar $fileTblVar fileTbl
        set allOK 1

        # Open and validate the file.

        set tclIndexFH [open $tclIndex r]
        try_eval {
            set hdr [gets $tclIndexFH]
            if {!([cequal $hdr {# Tcl autoload index file, version 2.0}] ||
                [cequal $hdr == {# Tcl autoload index file, version 2.0 for [incr Tcl]}])} {
                    error "can only convert version 2.0 Tcl auto-load files"
                }
            set dir [file dirname $tclIndex]  ;# Expected by the script.
            eval [read $tclIndexFH]
        }  {} {
            close $tclIndexFH
        }
        foreach procName [array names auto_index] {
            if ![string match "source *" $auto_index($procName)] {
                puts stderr "WARNING: Can't convert load command for\
                        \"$procName\": $auto_index($procName)"
                set allOK 0
                continue
            }
            set filePath [lindex $auto_index($procName) 1]
            set fileName [file tail $filePath] 
            if {[lsearch $ignore $fileName] >= 0} continue
            
            lappend fileTbl($filePath) $procName
        }
        if ![info exists fileTbl] {
            error "no entries could be converted in $tclIndex"
        }
        return $allOK
    }
} ;# namespace TclX

#--------------------------------------------------------------------------
# convert_lib:
# Convert a tclIndex library to a .tlib. ignore any files in the ignore
# list

proc convert_lib {tclIndex packageLib {ignore {}}} {
    if {[file tail $tclIndex] != "tclIndex"} {
        error "Tail file name must be `tclIndex': $tclIndex"}
    if ![file readable $tclIndex] {
        error "File not readable: $tclIndex"
    }

    # Parse the file.

    set allOK [TclX::ParseTclIndex $tclIndex fileTbl $ignore]

    # Generate the .tlib package names with contain the directory and
    # file name, less any extensions.

    if {[file extension $packageLib] != ".tlib"} {
        append packageLib ".tlib"
    }
    set libFH [open $packageLib w]

    foreach srcFile [array names fileTbl] {
        set pkgName [file tail [file dirname $srcFile]]/[file tail [file root $srcFile]]
        set srcFH [open $srcFile r]
        puts $libFH "#@package: $pkgName $fileTbl($srcFile)\n"
        copyfile $srcFH $libFH
        close $srcFH
    }
    close $libFH
    buildpackageindex $packageLib
    if !$allOK {
        error "*** Not all entries converted, but library generated"
    }
}



Filemanager

Name Type Size Permission Actions
arrayprocs.tcl File 1.6 KB 0644
autoload.tcl File 2.22 KB 0644
buildhelp.tcl File 15.61 KB 0644
compat.tcl File 9.8 KB 0644
convlib.tcl File 3.86 KB 0644
edprocs.tcl File 1.95 KB 0644
events.tcl File 1.03 KB 0644
fmath.tcl File 2.19 KB 0644
forfile.tcl File 1.4 KB 0644
globrecur.tcl File 3.11 KB 0644
help.tcl File 10.36 KB 0644
libtclx8.4.so File 155.52 KB 0755
pkgIndex.tcl File 77 B 0644
profrep.tcl File 5.1 KB 0644
pushd.tcl File 1.83 KB 0644
setfuncs.tcl File 2.92 KB 0644
showproc.tcl File 1.46 KB 0644
stringfile.tcl File 1.38 KB 0644
tcllib.tcl File 4.32 KB 0644
tclx.tcl File 2.05 KB 0644