f



[TCL] diff type operations in TCL

I didn't see anything in tcllib and thus far haven't turned up anything
that looks like it will work.  I would like to know if there is a TCL
package, or already written procedure, that will do a simple diff of two
files and tell me if they're the same or if they have differences.

Is there anything like this?

---------------------------------------------
Andrew R. Falanga (a non-HP employee)
Hewlett-Packard Company
11311 Chinden Blvd.
Boise, Idaho
---------------------------------------------
Please note: The e-mail address is purposely
mangled.  I do not wish my account at HP to
become a spam haven.
1
not_real4 (49)
4/27/2006 7:11:10 PM
comp.lang.tcl 23429 articles. 2 followers. Post Follow

11 Replies
1224 Views

Similar Articles

[PageSpeed] 51

Andrew Falanga wrote:
> I didn't see anything in tcllib and thus far haven't turned up anything
> that looks like it will work.  I would like to know if there is a TCL
> package, or already written procedure, that will do a simple diff of two
> files and tell me if they're the same or if they have differences.
> 
> Is there anything like this?

If all you want to know is if they are different, then:

set fd [open $file1 r]
set f1 [read $fd]
close $fd
set fd [open $file2 r]
set f2 [read $fd]
close $fd
if {[string equal $f1 $f2]} then {
     puts "'$file1' and '$file2' are the same."
} else {
     puts "'$file1' and '$file2' are different."
}


-- 
+--------------------------------+---------------------------------------+
| Gerald W. Lester                                                       |
|"The man who fights for his ideals is the man who is alive." - Cervantes|
+------------------------------------------------------------------------+
0
Gerald.Lester (2014)
4/27/2006 7:33:28 PM
In article <s094g.55732$IZ2.1202@dukeread07>,
Gerald W. Lester <Gerald.Lester@cox.net> wrote:
>Andrew Falanga wrote:
>> I didn't see anything in tcllib and thus far haven't turned up anything
>> that looks like it will work.  I would like to know if there is a TCL
>> package, or already written procedure, that will do a simple diff of two
>> files and tell me if they're the same or if they have differences.
>> 
>> Is there anything like this?
>
>If all you want to know is if they are different, then:
>
>set fd [open $file1 r]
>set f1 [read $fd]
>close $fd
>set fd [open $file2 r]
>set f2 [read $fd]
>close $fd
>if {[string equal $f1 $f2]} then {
>     puts "'$file1' and '$file2' are the same."
>} else {
>     puts "'$file1' and '$file2' are different."
>}

But, if they're huge files, this can take a LOT of memory.. I prefer the
unix "sum" for a quick diff.

If the results are the same, the files are identical. If not, they are
different.

MH
0
mghembru (122)
4/27/2006 7:45:26 PM
MH wrote:
> But, if they're huge files, this can take a LOT of memory.. I prefer the
> unix "sum" for a quick diff.

Actually, doing the comparison in Tcl by reading the files in chunks
(in binary mode) should be at least as fast. After all, each the files
have got to be read completely by *something* and the cost of binary
data equality testing (i.e. memcmp()!) can hardly exceed the cost of
computing a checksum...

> If the results are the same, the files are identical. If not, they are
> different.

Umm, not quite. With checksums, you've got a certain (fairly small but
non-zero) percentage chance of the files having the same sum but
different content. Some checksum methods (generally, the ones used for
crypto) make that a really small chance, but even so. The 'sum' program
doesn't even try to be that good. :-)

Donal.

0
4/27/2006 8:28:59 PM
Andrew Falanga schrieb:
> I didn't see anything in tcllib and thus far haven't turned up anything
> that looks like it will work.  I would like to know if there is a TCL
> package, or already written procedure, that will do a simple diff of two
> files and tell me if they're the same or if they have differences.
> 
> Is there anything like this?
The base of it is available in the struct::list module in tcllib, as it
is basically a list operation.

Michael
0
schlenk (1615)
4/27/2006 8:33:13 PM
Donal K. Fellows wrote:
> MH wrote:
>>But, if they're huge files, this can take a LOT of memory.. I prefer the
>>unix "sum" for a quick diff.
> 
> Actually, doing the comparison in Tcl by reading the files in chunks
> (in binary mode) should be at least as fast. After all, each the files
> have got to be read completely by *something* and the cost of binary
> data equality testing (i.e. memcmp()!) can hardly exceed the cost of
> computing a checksum...
> 
>>If the results are the same, the files are identical. If not, they are
>>different.
> 
> Umm, not quite. With checksums, you've got a certain (fairly small but
> non-zero) percentage chance of the files having the same sum but
> different content. Some checksum methods (generally, the ones used for
> crypto) make that a really small chance, but even so. The 'sum' program
> doesn't even try to be that good. :-)
> 
> Donal.
> 

Thanks.  I think I'm going to improvise a simple test for similarity
using read.

---------------------------------------------
Andrew R. Falanga (a non-HP employee)
Hewlett-Packard Company
11311 Chinden Blvd.
Boise, Idaho
---------------------------------------------
Please note: The e-mail address is purposely
mangled.  I do not wish my account at HP to
become a spam haven.
0
not_real4 (49)
4/27/2006 10:03:37 PM
MH wrote:
> In article <s094g.55732$IZ2.1202@dukeread07>,
> Gerald W. Lester <Gerald.Lester@cox.net> wrote:
>> Andrew Falanga wrote:
>>> I didn't see anything in tcllib and thus far haven't turned up anything
>>> that looks like it will work.  I would like to know if there is a TCL
>>> package, or already written procedure, that will do a simple diff of two
>>> files and tell me if they're the same or if they have differences.
>>>
>>> Is there anything like this?
>> If all you want to know is if they are different, then:
>>
>> set fd [open $file1 r]
>> set f1 [read $fd]
>> close $fd
>> set fd [open $file2 r]
>> set f2 [read $fd]
>> close $fd
>> if {[string equal $f1 $f2]} then {
>>     puts "'$file1' and '$file2' are the same."
>> } else {
>>     puts "'$file1' and '$file2' are different."
>> }
> 
> But, if they're huge files, this can take a LOT of memory.. I prefer the
> unix "sum" for a quick diff.
> 
> If the results are the same, the files are identical. If not, they are
> different.
> 
> MH


if your using a unix command cmp would be better
(i.e. if it finds a difference early it stops reading the file,
sum needs to read the entire file, and there is a , albeit slight,
chance of 2 differing files having the same sum)

but either way you're limiting yourself platform wise. the above
code can be tweaked to compare chunks at a time and short circuit
the fail case as soona s a diff is found.


Bruce


Bruce

0
bruce-news (900)
4/27/2006 11:11:48 PM
In article <1146169739.390568.305510@i39g2000cwa.googlegroups.com>,
Donal K. Fellows <donal.k.fellows@man.ac.uk> wrote:
>
>MH wrote:
>> But, if they're huge files, this can take a LOT of memory.. I prefer the
>> unix "sum" for a quick diff.
>
>Actually, doing the comparison in Tcl by reading the files in chunks
>(in binary mode) should be at least as fast. After all, each the files
>have got to be read completely by *something* and the cost of binary
>data equality testing (i.e. memcmp()!) can hardly exceed the cost of
>computing a checksum...

Well.. That depends.. I guess doing a chunk in binary mode would be
reasonably fast. Does Tcl actually DO a memcmp on the results though, or
does it first convert them to some other representation in order to do a
binary comparison?

As for speed, well.. Doing Tcl_Gets on a channel (inside a C++ program) versus
fdreopen and fgets, for a 1 million line file adds a ~1.5 second penalty to
my parsing program.

That is, using Tcl_Gets (identical parsing after it gets split into lines),
it takes 2.3x seconds for a ~1M record file, and 0.8x seconds using fgets.

That one change is the difference between ~430K records/second and ~1.2M
records/second.

Tcl I/O is PORTABLE. No question.

Fast? Not really..

Actually, maybe someone can help me with Tcl_Ungets - it would really help
me to improve my speed. I'm going to post a separate message about it -
watch for it..

MH
0
mghembru (122)
4/27/2006 11:48:44 PM
Andrew Falanga wrote:
> I didn't see anything in tcllib and thus far haven't turned up anything
> that looks like it will work.  I would like to know if there is a TCL
> package, or already written procedure, that will do a simple diff of two
> files and tell me if they're the same or if they have differences.
> 
> Is there anything like this?

If you want to see what the differences are, look at:

http://wiki.tcl.tk/3108

HTH,

Gerry
0
4/28/2006 12:48:20 AM
MH wrote:
> Well.. That depends.. I guess doing a chunk in binary mode would be
> reasonably fast. Does Tcl actually DO a memcmp on the results though, or
> does it first convert them to some other representation in order to do a
> binary comparison?
> 
> As for speed, well.. Doing Tcl_Gets on a channel (inside a C++ program) versus
> fdreopen and fgets, for a 1 million line file adds a ~1.5 second penalty to
> my parsing program.

I was thinking about handling the files as binary (so no character set
conversion, leading to the channel system managing its buffers using
memcpy instead of slower operations), using [read] (so fixed size chunks
which again encourage fast data handling), and using [string compare]
(which really does do memcmp; I've checked!) If the chunks are fairly
large (a few megabytes is reasonable on a modern machine) the overall
comparison should be quick. This is considerably at odds with what you
were proposing...

Indeed, what I'm proposing is exactly this:

  proc filesEqual {file1 file2 {chunk 8388608}} {
     # Test the "Duh!" case first
     if {[file size $file1] != [file size $file2]} {
        return 0
     }

     # Written to use 8.5a4 features...
     set f1 [open $file1 rb]; set f2 [open $file2 rb]
     # Otherwise, use [fconfigure $f1 -translation binary] here

     while {![eof $f1]} {
        # NB: the 'ne' operator is currently slower for this task
        if {[string compare [read $f1 $chunk] [read $f2 $chunk]]} {
           close $f1; close $f2
           return 0
        }
     }
     close $f1; close $f2
     return 1
  }

FWIW, that produces the following bytecode.

ByteCode 0x819b8c8, refCt 1, epoch 0, interp 0x815a130 (epoch 0)
   Source "\n    # Test the \"Duh!\" case first\n    if {[file size $f"
   Cmds 20, src 463, inst 163, litObjs 10, aux 0, stkDepth 4, code/src 0.93
   Code 432 = header 100+inst 163+litObj 40+exc 28+aux 0+cmdMap 92
   Proc 0x81b2348, refCt 1, args 3, compiled locals 5
       slot 0, scalar, arg, "file1"
       slot 1, scalar, arg, "file2"
       slot 2, scalar, arg, "chunk"
       slot 3, scalar, "f1"
       slot 4, scalar, "f2"
   Exception ranges 1, depth 1:
       0: level 1, loop, pc 71-126, continue 128, break 137
   Commands 20:
       1: pc 0-31, src 38-106       2: pc 0-7, src 43-58
       3: pc 8-15, src 65-80        4: pc 19-26, src 93-100
       5: pc 32-47, src 152-174             6: pc 37-44, src 160-173
       7: pc 48-63, src 177-199             8: pc 53-60, src 185-198
       9: pc 64-139, src 206-422           10: pc 71-126, src 299-416
      11: pc 76-97, src 304-353            12: pc 81-88, src 320-334
      13: pc 89-96, src 338-352            14: pc 101-107, src 369-377
      15: pc 108-114, src 380-388          16: pc 115-122, src 400-407
      17: pc 128-133, src 215-221          18: pc 140-146, src 428-436
      19: pc 147-153, src 439-447          20: pc 154-161, src 453-460
   Command 1: "if {[file size $file1] != [file size $file2]} {\n       "
   Command 2: "file size $file1"
     (0) push1 0         # "file"
     (2) push1 1         # "size"
     (4) loadScalar1 %v0         # var "file1"
     (6) invokeStk1 3
   Command 3: "file size $file2"
     (8) push1 0         # "file"
     (10) push1 1        # "size"
     (12) loadScalar1 %v1        # var "file2"
     (14) invokeStk1 3
     (16) neq
     (17) jumpFalse1 +12         # pc 29
   Command 4: "return 0"
     (19) startCommand 8         # next cmd at pc 27
     (24) push1 2        # "0"
     (26) done
     (27) jump1 +4       # pc 31
     (29) push1 3        # ""
     (31) pop
   Command 5: "set f1 [open $file1 rb]"
     (32) startCommand 15        # next cmd at pc 47
   Command 6: "open $file1 rb"
     (37) push1 4        # "open"
     (39) loadScalar1 %v0        # var "file1"
     (41) push1 5        # "rb"
     (43) invokeStk1 3
     (45) storeScalar1 %v3       # var "f1"
     (47) pop
   Command 7: "set f2 [open $file2 rb]"
     (48) startCommand 15        # next cmd at pc 63
   Command 8: "open $file2 rb"
     (53) push1 4        # "open"
     (55) loadScalar1 %v1        # var "file2"
     (57) push1 5        # "rb"
     (59) invokeStk1 3
     (61) storeScalar1 %v4       # var "f2"
     (63) pop
   Command 9: "while {![eof $f1]} {\n       # NB: the 'ne' operator is "
     (64) startCommand 75        # next cmd at pc 139
     (69) jump1 +59      # pc 128
   Command 10: "if {[string compare [read $f1 $chunk] [read $f2 $chunk]"
     (71) startCommand 56        # next cmd at pc 127
   Command 11: "string compare [read $f1 $chunk] [read $f2 $chunk]"
     (76) startCommand 22        # next cmd at pc 98
   Command 12: "read $f1 $chunk"
     (81) push1 6        # "read"
     (83) loadScalar1 %v3        # var "f1"
     (85) loadScalar1 %v2        # var "chunk"
     (87) invokeStk1 3
   Command 13: "read $f2 $chunk"
     (89) push1 6        # "read"
     (91) loadScalar1 %v4        # var "f2"
     (93) loadScalar1 %v2        # var "chunk"
     (95) invokeStk1 3
     (97) strcmp
     (98) tryCvtToNumeric
     (99) jumpFalse1 +26         # pc 125
   Command 14: "close $f1"
     (101) push1 7       # "close"
     (103) loadScalar1 %v3       # var "f1"
     (105) invokeStk1 2
     (107) pop
   Command 15: "close $f2"
     (108) push1 7       # "close"
     (110) loadScalar1 %v4       # var "f2"
     (112) invokeStk1 2
     (114) pop
   Command 16: "return 0"
     (115) startCommand 8        # next cmd at pc 123
     (120) push1 2       # "0"
     (122) done
     (123) jump1 +4      # pc 127
     (125) push1 3       # ""
     (127) pop
   Command 17: "eof $f1"
     (128) push1 8       # "eof"
     (130) loadScalar1 %v3       # var "f1"
     (132) invokeStk1 2
     (134) not
     (135) jumpTrue1 -64         # pc 71
     (137) push1 3       # ""
     (139) pop
   Command 18: "close $f1"
     (140) push1 7       # "close"
     (142) loadScalar1 %v3       # var "f1"
     (144) invokeStk1 2
     (146) pop
   Command 19: "close $f2"
     (147) push1 7       # "close"
     (149) loadScalar1 %v4       # var "f2"
     (151) invokeStk1 2
     (153) pop
   Command 20: "return 1"
     (154) startCommand 8        # next cmd at pc 162
     (159) push1 9       # "1"
     (161) done
     (162) done

Donal.
0
4/28/2006 9:58:03 AM
Donal K. Fellows wrote:
> MH wrote:
>> Well.. That depends.. I guess doing a chunk in binary mode would be
>> reasonably fast. Does Tcl actually DO a memcmp on the results though, or
>> does it first convert them to some other representation in order to do a
>> binary comparison?
>>
>> As for speed, well.. Doing Tcl_Gets on a channel (inside a C++ 
>> program) versus
>> fdreopen and fgets, for a 1 million line file adds a ~1.5 second 
>> penalty to
>> my parsing program.
> 
> I was thinking about handling the files as binary (so no character set
> conversion, leading to the channel system managing its buffers using
> memcpy instead of slower operations), using [read] (so fixed size chunks
> which again encourage fast data handling), and using [string compare]
> (which really does do memcmp; I've checked!) If the chunks are fairly
> large (a few megabytes is reasonable on a modern machine) the overall
> comparison should be quick. This is considerably at odds with what you
> were proposing...
> 
> Indeed, what I'm proposing is exactly this:
> 
>  proc filesEqual {file1 file2 {chunk 8388608}} {
>     # Test the "Duh!" case first
>     if {[file size $file1] != [file size $file2]} {
>        return 0
>     }
> 
>     # Written to use 8.5a4 features...
>     set f1 [open $file1 rb]; set f2 [open $file2 rb]
>     # Otherwise, use [fconfigure $f1 -translation binary] here
> 
>     while {![eof $f1]} {
>        # NB: the 'ne' operator is currently slower for this task
>        if {[string compare [read $f1 $chunk] [read $f2 $chunk]]} {
>           close $f1; close $f2
>           return 0
>        }
>     }
>     close $f1; close $f2
>     return 1
>  }
> ...

Donal,

Would you not want to also fconfigure f1 and f2 with -buffersize $chunk?

Or would this not help?

(I figured it would configure the I/O subsystem to attempt to do read aheads 
to keep the buffer full.)

-- 
+--------------------------------+---------------------------------------+
| Gerald W. Lester                                                       |
|"The man who fights for his ideals is the man who is alive." - Cervantes|
+------------------------------------------------------------------------+
0
Gerald.Lester (2014)
4/28/2006 12:24:41 PM
Gerald W. Lester wrote:
> Would you not want to also fconfigure f1 and f2 with -buffersize $chunk?
> 
> Or would this not help?

I don't believe that would help as the [read] command has a large size
anyway, but I might be wrong. I don't really have suitable data files to
check. If anyone knows for sure (i.e. has some real timing data) I'd
love to find out.

Donal.
0
4/29/2006 6:22:32 PM
Reply:

Similar Artilces:

tcl-snmptools: SNMP v1/v2/v3 operations for Tcl. (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-snmptools Tcl-snmptools is a Tcl interface to the Net-SNMP library which provides operations for the management of remote SNMP agents. It supports all the standard SNMP v1/v2/v3 operations: connect, close, get, set, getnext, walk, bulkget, bulkwalk, trap, translate and others. It is currently in a functional state, but more work and testing needs to be done. Home page: http://sourceforge.net/projects/tcl-snmptols/ Man page: http://tcl-snmptols.sourceforge.net/ Author: Alexandros Stergiakis alsterg ...

tcl-pam: PAM authentication for Tcl (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-pam Tcl-pam is a Tcl interface to the PAM* service of Linux. It provides a Tcl package that allows Tcl scripts to use PAM to authenticate users and programs. It relies on linux-pam library: http://www.kernel.org/pub/linux/libs/pam/ * PAM (Pluggable Authentication Modules): A mechanism to integrate multiple low−level authentication schemes into a high−level application programming interface (API). This enables programs that rely on authentication to be written independently of the underlying authentication scheme. Platform: Linux Home page: http://sourceforge.net/projects/tcl-pam/ Man page: http://tcl-pam.sourceforge.net/ Author: Alexandros Stergiakis alsterg ...

tcl-gaul: Genetic Algorithms for Tcl. (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-gaul Tcl-gaul is a Tcl extension for genetic/evolutionary algorithm processing.It relies on the GAUL library: http://gaul.sourceforge.net/ * A genetic algorithm (GA) is a search technique used in computing to find exact or approximate solutions to optimization and search problems. Genetic algorithms are categorized as global search heuristics. They are a particular class of evolutionary algorithms that use techniques inspired by evolutionary biology such as inheritance, mutation, selection, and crossover. For an introduction to genetic algorithms visit: http://gaul.sourceforge.net/intro.html Platform: Linux (GAUL library dependency) Home page: http://sourceforge.net/projects/tcl-gaul/ Man page: http://tcl-gaul.sourceforge.net/ Author: Alexandros Stergiakis alsterg ...

tcl-mq: POSIX Message Queues for Tcl. (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-mp Tcl-mp is a Tcl interface to POSIX Message Queues*. It provides a Tcl package that allows scripts to create/open/close/unlink multiple parallel message queues, and to send/receive messages synchronously and asynchronously to/from them. * A POSIX message queue is an Inter-Process Communication mechanism available on Linux and some other POSIX-compliant operating systems. It allows to or more processes (or threads) to communicate under the same OS. The messages are buffered by the kernel, which gives them kernel persistency. A message queue can be thought of as a linked list of messages. Threads with adequate permission can put messages onto the queue, and threads with adequuate permission can remove messages from the queue. Each message is assigned a priority by the sender, and the oldest message of highest priority is always retrieved first. Unlike PIPES and FIFOS, no requirement exists that someone be waiting for a message to arrive on a queue, before some process writes a message to that queue. It's not even a requirement for both processes to exist at the same time. Read mq_overview(7) for more details Platform: Linux Home page: http://sourceforge.net/projects/tcl-mp/ Man page: http://tcl-mp.sourceforge.net/ Author: Alexandros Stergiakis alsterg On Sep 3, 11:37=A0am, Alexandros Stergiakis <alst...@gmail.com> wrote: > This is an announcement for a relatively new Tcl pro...

tcl-mmap: A POSIX mmap interface for Tcl. (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-mmap Tcl-mmap is a Tcl interface to the POSIX mmap* system call. It provides a Tcl package that allows Tcl scripts to: 1) Memory map files for improved access efficiency; 2) Share memory between related processes; 3) Easily implement cyclic persistent log files. * See the mmap(2) man page. Platform: Linux/Unix Home page: http://sourceforge.net/projects/tcl-mmap/ Man page: http://tcl-mmap.sourceforge.net/ Author: Alexandros Stergiakis On Sep 3, 11:48=A0am, Alexandros Stergiakis <alst...@gmail.com> wrote: > This is an announcement for a relatively new Tcl project: tcl-mmap > > Tcl-mmap is a Tcl interface to the POSIX mmap* system call. It provides > a Tcl package that allows Tcl scripts to: 1) Memory map files for > improved access efficiency; 2) Share memory between related processes; > 3) Easily implement cyclic persistent log files. > > * See the mmap(2) man page. > Great to see this and the other packages you made. Looking at the manpage it looks a bit misformatted before the usage example. Any specific reason to use GPL for this instead the usual Tcl/MIT/BSD style license used? Michael schlenk wrote: > On Sep 3, 11:48 am, Alexandros Stergiakis <alst...@gmail.com> wrote: >> This is an announcement for a relatively new Tcl project: tcl-mmap >> >> Tcl-mmap is a Tcl interface to the POSIX mmap* system call. It provides >> a Tcl package that...

tcl-syslog: Unix system logging for Tcl (Tcl package)
This is an announcement for a relatively new Tcl project: tcl-syslog Tcl-syslog is a Tcl interface to the *nix syslog service. It provides a Tcl package that allows Tcl scripts to log messages to syslog. Platform: Linux/Unix Home page: http://sourceforge.net/projects/tcl-syslog/ Man page: http://tcl-syslog.sourceforge.net/ Author: Alexandros Stergiakis alsterg ...

Opening a TCL program from within another TCL program in ANSYS Tcl-Tk
Hi everyone, I have been pulling my hair with this one for a couple of days and still have not found a fix. I'm working within ANSYS Tcl-Tk implementation. I created a Tcl-Tk script that generates a simple window with three buttons. Each button opens another window which is created in a separate Tcl file. The second window have a lot of text entries, variables, procedures, etc. I can open the second Tcl file by itself and everything works as supposed, but when I open it using the button in the first window, it opens but any procedure called by the widgets on the second window are not found... Here's the deal... Since I'm working within the ANSYS implementation of Tcl-Tk, I'm actually using an ANSYS command to open the second window. The command I use is: ### ans_sendcommand ~eui,'source O:/mad_projects_2/ANSYS/Macros/ IBR_CAS.tcl' ### It actually sends a command back to ANSYS telling it to execute a Tcl command... I know this is not pretty but its the only way i was able to make it at least show the window. ############################## #Main Tcl (excerpt): ############################## namespace eval Tools { proc IBRCambpell {} { #source O:/mad_projects_2/ANSYS/Macros/IBR_CAS.tcl ans_sendcommand ~eui,'source O:/mad_projects_2/ANSYS/Macros/ IBR_CAS.tcl' } proc viewManager {} { ans_sendcommand ~eui,'source O:/mad_projects_2/ANSYS/Macros/ ViewManager.tcl' } proc powerAnnotation {} { ans_sendcommand ~eui,'source ...

tcl application with tcl application
Here is another question, I have one tcl-based application A, my co- worker has a tcl-based application B. Now I want to integrate my application A into the application B. After integration, I want to be able to run A's tcl command in B. Assume I can only change A's code, is there any way to do this? On 17 Dez., 07:03, teacupfull business <teacupfull.busin...@gmail.com> wrote: > Here is another question, I have one tcl-based application A, my co- > worker has a tcl-based application B. Now I want to integrate my > application A into the application B. >...

How to compile tcl or encrypt tcl
I use TclPro1.5 to compile my tcl script with tixwish in the Solaris before. But I cannot use the same method in Linux. Why? Is there any utility for me to compile or encrypt the code by using tixwish? The following is the simple code if I use the tixwish: #!/home/albertl/local/bin/tixwish puts "haha" And after using procomp by the TclPro1.5 Error in startup script: The TclPro ByteCode Loader is not available or does not support the correct version while executing "error "The TclPro ByteCode Loader is not available or does not support the correct version"" invoked from within "if {[catch {package require tbcload 1.3} err] == 1} { error "The TclPro ByteCode Loader is not available or does not support the correct version" ...." (file "a.tbc" line 4) The problem seems that tbcload1.3 cannot be found? But tbcload is already there "/home/albertl/local/lib/tbcload1.3" Why? Can anyone tell me? stratus schrieb: > I use TclPro1.5 to compile my tcl script with tixwish in the Solaris before. > But I cannot use the same method in Linux. Why? > > Is there any utility for me to compile or encrypt the code by using tixwish? > Tixwish is just a wish shell with the Tix package baked in. If TclPro does not have a specific bigwish with Tix included your out of luck on that road (but could build your own if you liked). You might have success with freewrap or TDK, don't know for su...

How Tcl speaks for itself and how Tcl is not spoken for...
Hello It's Friday and... well... Two things about Tcl going through my mind this week, a nice anecdote and a eyebrow-rising thing on Wikipedia: Anecdote: Until three months ago I worked in a scientific institue where I wrote much software in Tcl, especially a big Build and Report System, some tools for automatic checking of coding style and other things. Tcl had a bad reputation there (not because of me... they dropped Tcl before I started there in favour of Joy, then JavaScript and now Python) and besides me, there was only one co-worker who appearantly writes some small Tcl-Scripts to support other researchers in their work. To get completely rid of Tcl, they even started to reimplement all things, I wrote in Tcl in Python just to have it in a language, that most of them know (which is a good decision on the one hand, but on the other hand, I think, it would be better to simply learn Tcl ;-), which made me a little bit sad. Now there is a new collegue who has to maintain some of the things I wrote. Comming from Perl he wasn't exactly enthusiastic when he heard, that he must maintain my old code in such an obscure language.. Two weeks ago, I got mail from him. He's just studying a complex system of scripts that are used for a sandboxed build system for source code which comes from external untrusted source and must be compiled and tested. Of course it's written in Tcl (and some bash-Scripting). He told me, that although he has never looked at Tcl before,...

Extending TCL in C with tcl.h - Disabliing [<tcl-cmd>] feature
Hi, TCL has a command execution syntax like this: [<tcl cmd>] Anything inside the 3rd bracket will be executed as a Tcl command by the Tcl interprater. Is there any way I can disable/delete this Tcl construct [ <tcl-cmd>]? In other words, my Tcl interprator should print "[32]" for tcl command puts "[32]" It should not try to treat [] as a special character. Is this any way possible while extending Tcl in C with tcl.h? Thank you, Arijit * arijit79@gmail.com | puts "[32]" | | It should not try to treat [] as a special character. Check out the TCL quoting rules. http://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm http://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm#M10 http://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm#M15 Any of puts {[32]} puts "\[32\]" will do the trick. R' On May 8, 3:14 am, ariji...@gmail.com wrote: > Is there any way I can disable/delete this Tcl construct [ <tcl-cmd>]? By doing this, you would disable the primary functionality of Tcl. I'm certain you could go into the tcl source and stop it - but why not talk about what you are really trying to do. Perhaps someone can give you a better way of doing what you are wanting to do. ...

Tcl
Hello all. I found on hobbes the afaik latest Tcl for Os/2 v8.35 Is there any newer port, cause i try to update the eggdrop and that says: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is 8.5.X and can be downloaded from ftp://tcl.activestate.com/pub/tcl/tcl8_5/. -- With the best regards from the Netherlands, Tu, "Tellerbop" <Tellerbop@wint.nl>, hai scritto questo in data Wed, 14 Jan 2009 19:11:18 UTC: > Hello all. > > I found on hobbes the afaik latest Tcl for Os/2...

TCL
Hello, i would like to build TCL/TK as a separate DLL-Library. Can anyone tell me how this can be done with VC 6.0? Best regards, Reinhold "Reinhold.kwauka" <bernd-reinhold.kwauka@t-online.de> wrote: >Hello, > >i would like to build TCL/TK as a separate DLL-Library. Can anyone tell me >how this can be done >with VC 6.0? > >Best regards, >Reinhold > 1) get the source from http://tcl.sourceforge.net/ 2) open a command prompt 3) cd to the win/ subdirectory 4) call vcvars32.bat located in ??\vc98\bin\ of vc6 for wherever you installed it. 5) type @ the prompt: nmake -f makefile.vc -- David Gravereaux <davygrvy@pobox.com> [species: human; planet: earth,milkyway(western spiral arm),alpha sector] Reinhold.kwauka wrote: > Hello, > > i would like to build TCL/TK as a separate DLL-Library. Can anyone tell me > how this can be done > with VC 6.0? > > Best regards, > Reinhold > > Its already done. Just download a binary release for windows and check \Program Files\Tcl\lib for the DLLs and static libraries. ...

Tcl
Hello, where can I see for tcl syntacs and how-to run a tcl test? Thank You Vittore ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it ---------------------------------------------------------------------------- Posted to the ptolemy-hackers mailing list. Please send administrative mail for this list to: ptolemy-hackers-request@ptolemy.eecs.berkeley.edu ...

Tcl extension: check Tcl version?
Is there a recommended way to check if a (binary) Tcl extension is loaded to the same Tcl version that was used for linking the extension? Currently I'm encountering a problem with an extension that I have built (and linked) with libtk8.3.so and that can be loaded under wish8.5 as well (without re-bulding, using package require). A number of newly provided commands work well in spite of the version mixture, but others don't, and wish8.5 crashes when these commands are used. Is this behavior normal, i.e. should I check that compile-time version and run-time version are identical? Or does this indicate some subtle coding problem? Thanks for any suggestions Olaf Olaf Dietrich wrote: > Is there a recommended way to check if a (binary) Tcl extension > is loaded to the same Tcl version that was used for linking > the extension? > > Currently I'm encountering a problem with an extension that > I have built (and linked) with libtk8.3.so and that can be > loaded under wish8.5 as well (without re-bulding, using > package require). A number of newly provided commands work > well in spite of the version mixture, but others don't, and > wish8.5 crashes when these commands are used. > > Is this behavior normal, i.e. should I check that compile-time > version and run-time version are identical? Or does this > indicate some subtle coding problem? Not subtle. Major problem. DO NOT DO THAT. If you want to be loadable across mult...

MS Dictation and TCL
I'm trying to use the MS dictation tool while in TCL 8.5 program. The text starts to appear, but then the program crashes. It would be great to find a way to make this work. Thanks! Barney Tcl 8.5 (wish 8.5) makeindex (12/14/2007) MSWinXP sp3 plenty of ram and storage ...

How Tcl source finds init.tcl???
Hi, I have one question about how Tcl finds init.tcl. What environment variable does Tcl source use to get the search path for init.tcl? Is there any way to specifically use init.tcl from a certain path? Thanks a lot in advance! Lihong lihong pei wrote: > I have one question about how Tcl finds init.tcl. > What environment variable does Tcl source use to get the search path for > init.tcl? If the environment variable TCL_LIBRARY exists, it's value is assumed to be a single directory which is added to the search path for init.tcl. Note that this is offered mostly as a way for...

Tcl command to evaluate a tcl script?
Hi all, I need to evaluate a separate tcl file within a tcl file. Is there any tcl command to evaluate a tcl file ? Regards, Prabu.K prabu wrote: > Hi all, > > I need to evaluate a separate tcl file within a tcl file. Is there any > tcl command to evaluate a tcl file ? > > Regards, > Prabu.K > hi, try: source your_other_tcl_file.tcl cheers, Tobi ...

[TCL] multi-threaded tcl apps
Hi, Where can one find complete documentation on the ttrace package to the Thread package? I'd like to know what commands are available in ttrace and how to use them. --------------------------------------------- Andrew R. Falanga (a non-HP employee) Hewlett-Packard Company 11311 Chinden Blvd. Boise, Idaho --------------------------------------------- Please note: The e-mail address is purposely mangled. I do not wish my account at HP to become a spam haven. If you wish to e-mail me, the address consists of a dot between my first and last names (excluding my middle initial). The rest is accurate. Also, note, responses must be within the given context of messages I've posted to usenet. If it's not, I WILL NOT RESPOND! ...

Inline::Tcl vs. Inline::Tcl
The readme for CPAN's Inline::Tcl says this: > This module is not related to the Inline::Tcl module, but it might be > valuable to have some compatibility between the two. > This sentence seems to suggest that there is another module named Inline::Tcl somewhere. Is this true, and if so, where can I find it? Mumia W. wrote: > The readme for CPAN's Inline::Tcl says this: > > > This module is not related to the Inline::Tcl module, but it might be > > valuable to have some compatibility between the two. > > > > This sentence seems to suggest ...

Debugger for Tcl/Tk and [incr Tcl]
hi, where can i get Coverage for debugging tcl/tk, [incr Tcl] source? this tool is advised to use in 'Practical Programming in Tcl and Tk' or any other good debugger, which i could use? best, s. On Jan 23, 5:56=A0am, Sitaca <sit...@gmail.com> wrote: > hi, > > where can i get Coverage for debugging tcl/tk, [incr Tcl] source? > this tool is advised to use in 'Practical Programming in Tcl and Tk' > > or any other good debugger, which i could use? I see, at http://wiki.tcl.tk/8638 , a brief reference to the topic of coverage for tcl. I don't know whether or not any of the tools mentioned include coverage of itcl. On 23 jan, 12:52, "Larry W. Virden" <lvir...@gmail.com> wrote: > On Jan 23, 5:56=A0am, Sitaca <sit...@gmail.com> wrote: > > > hi, > > > where can i get Coverage for debugging tcl/tk, [incr Tcl] source? > > this tool is advised to use in 'Practical Programming in Tcl and Tk' > > > or any other good debugger, which i could use? > > I see, athttp://wiki.tcl.tk/8638, a brief reference to the topic of > coverage for tcl. I don't know whether or not any of the tools > mentioned include coverage of itcl. I have a more complete version of the coverage tool mentioned on that page. I just never got around to publishing it more widely. As for debuggers: the Wiki has a lot of pointers on that subject as well. Regards, Arjen Larry W. Virden wrote:...

dynamic call of tcl proc from tcl
Hello, I would like to invoce a tcl proc from a line of tcl where I have a proc name and a list variable of arguments. eg. % callproc $procName $argList where: ..callproc - TCL Procedure for dynamically calling procedures ..procName - Name of procedure to be called in a string ..argList - List of Arguments My goal is to avoid creating a procedure call as a string and evaluating it as there are many potential pitfalls with using evals in such a way. Thanks, JsD Java script Dude wrote: > I would like to invoce a tcl proc from a line of tcl where I have a > proc name and a list variable of arguments. > > eg. % callproc $procName $argList > > where: > .callproc - TCL Procedure for dynamically calling procedures > .procName - Name of procedure to be called in a string > .argList - List of Arguments Except for error/exception handling, the answer is: proc callproc {cmd argList} { uplevel 1 [linsert $argList 0 $cmd] } -- | Don Porter Mathematical and Computational Sciences Division | | donald.porter@nist.gov Information Technology Laboratory | | http://math.nist.gov/~DPorter/ NIST | |______________________________________________________________________| [; Thanks Don ;] ...

Tcl-2004 Update: More food and Tcl jobs
Gerald just finished some negotiating with the hotel, and we've increased the meals at Tcl-2004. There will be free breakfast, lunch and breaks on all days, and free dinner on Wed and Thur. We'll have an open bar a couple of the conference nights also. Just the food is worth more than the registration fee! Add in the technical talks, panels, camaraderie and social networking, and this conference is a bargain you won't see again. At least two groups that are looking for Tcl/Tk developers will be present, so bring a resume if you're on the prowl. Online registration will close on Friday, Oct 8. -- ..... Clif Flynt ... http://www.cflynt.com ... clif@cflynt.com ... ...Tcl/Tk: A Developer's Guide (2'nd edition) - Morgan Kauffman .. 11'th Annual Tcl/Tk Conference: Oct 11-15, 2004, New Orleans, LA .............. http://www.tcl.tk/community/tcl2004/ ............ ...

Possible bug in Tcl or Windows or Tcl on Windows
Hi, There seems to be a bug in the way numbers are compared in Tcl. Consider the below script for calculating Pythagorean triplets. For hypotenuse upto a value of 100, there should have been 63 unique triplets. On Windows XP the script detects only 62. The script doesn't detect the case where c=99, b=20 ==> a=101. However running the same script under Tcl 8.4.1 in Cygwin detects 63 triplets. I don't have a Linux machine at hand to test it there. Following is the script and relevant output. Could anyone shed some light on the cause of this. Maybe it has something to do with how the numbers are represented internally? Running the script for N>100 shows up many more such missed values. An equivalent program in C runs correctly on the same machine. C code was compiled using both gcc and VC++6.0. ######################################################################### # a^2 = b^2 + c^2 proc pythag {MAX} { set i 0 for {set c 2} {$c <= $MAX} {incr c} { for {set b 1} {$b < $c} {incr b} { set a [expr hypot($c, $b)] ;# Calc. Hypot if { ($c == 99) && ($b == 20)} { ;# <<<<<<<< puts ">> [expr round($a)] == $a" } if {[expr round($a)] == $a} { puts "$a : $b : $c" incr i } } } return $i } if {$argc == 1} { set MAX [lindex $argv 0] } else { puts stderr "Usage: tclsh $argv0 N" exit } puts [pythag $MAX] ############# OUTPUT ################ Tcl 8.4.1 (Cygwi...

Web resources about - [TCL] diff type operations in TCL - comp.lang.tcl

Operation Gladio - Wikipedia, the free encyclopedia
Operation Gladio ( Italian : Operazione Gladio ) is the codename for a clandestine NATO " stay-behind " operation in Italy after World War II ...

Logan police set up school zone drink driving operation
Logan police step up operation targeting drink drivers in school zones after nabbing more drunk mums and dads than expected.

Ingleburn shooting: operation concluded
The siege in Sydney's south-west concluded with three hostages released unharmed after a six-hour standoff with police on Monday.

Ingleburn shooting: operation concluded
The siege in Sydney's south-west concluded with three hostages released unharmed after a six-hour standoff with police on Monday.

Confessions of a Sydney surgeon: why your operation may not work
Commonly performed operations can be found to be useless, according to a practising Sydney surgeon.

Amazon's secret Cincinnati air cargo operations confirmed
A Greater Cincinnati air park that was rumored to be operating a secret air cargo operation for Amazon confirmed Wednesday it was shipping freight ...

Russia: Turkish troops in Syria for operation against Kurds
ANKARA, Turkey (AP) — Russian Foreign Minister Sergey Lavrov says Russia has information that Turkey's military is entrenched a few hundred meters ...

Operation That Illegally Debited Consumers’ Bank Accounts Must Repay $43M
Months after federal regulators ordered a data broker to pay $7.1 million for selling consumers’ sensitive information to scammers, a court ordered ...

The Chief Of Naval Operations Wants A Railgun ASAP
The Chief Of Naval Operations Wants A Railgun ASAP

Fox Bolsters Film Book Scouting Operations By Hiring John McLay
EXCLUSIVE : Twentieth Century Fox has brought aboard veteran international literary scout , John McLay , to bolster its book scouting ranks. ...

Resources last updated: 3/13/2016 4:02:28 PM