Package: tk8.4
Version: 8.4.12-1
Severity: minor
Tags: patch

$ dpkg -l tk8.4 tkman cbrowser
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                       Version                    Description
+++-==========================-==========================-====================================================================
ii  cbrowser                   0.8-3                      a C/C++ source code 
indexing, querying and browsing tool
ii  tk8.4                      8.4.12-1                   Tk toolkit for Tcl 
and X11, v8.4 - run-time files
ii  tkman                      2.2-2                      A graphical, 
hypertext manual page and Texinfo browser
$ tkman -h
Application initialization failed: Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
Error in startup script: invalid command name "image"
    while executing
"image create bitmap icon -foreground black -background white -data {
#define tkman_width 64
#define tkman_height 64
static char tkman_bits[] = {
   0x..."
    (file "/usr/bin/tkman" line 788)
$ cbrowser -h
Application initialization failed: Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
Error in startup script: invalid command name "bind"
    while executing
"bind $bindtag <Button-5> [list %W yview scroll 5 units]"
    (procedure "setup_scroll_bindings" line 2)
    invoked from within
"setup_scroll_bindings Text"
    (file "/usr/bin/cbrowser" line 3030)
$ wish -h
Application initialization failed: Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
% $


Using the -h option should not cause "Application initialization failed"
to be displayed.  And, when using the -h option, the application using
"wish" should not continue.

After applying the attached patch:


$ tkman -h
Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
$ tkman -- -h
tkman   [-M <MANPATH>] [-M+ <paths to append to MANPATH>] [-+M <paths to
        prepend to MANPATH>] [-[!]iconify] [-version] [-title <string>]
        [-startup <file>] [-[!]debug] [<man page>[(<section>)]]
$ cbrowser -h
Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
$ wish -h
Command-specific options:
 -colormap: Colormap for main window
 -display:  Display to use
 -geometry: Initial geometry for window
 -name:     Name to use for application
 -sync:     Use synchronous mode for display server
 -visual:   Visual for main window
 -use:      Id of window in which to embed application
 --:        Pass all remaining arguments through to script
$


diff -ruN orig/tk8.4-8.4.12/generic/tkArgv.c tk8.4-8.4.12/generic/tkArgv.c
--- orig/tk8.4-8.4.12/generic/tkArgv.c	2002-01-25 22:09:36.000000000 +0100
+++ tk8.4-8.4.12/generic/tkArgv.c	2006-08-26 10:50:46.000000000 +0200
@@ -266,7 +266,12 @@
 	    }
 	    case TK_ARGV_HELP:
 		PrintUsage (interp, argTable, flags);
-		return TCL_ERROR;
+		Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
+		if (errChannel) {
+			Tcl_WriteChars(errChannel, Tcl_GetStringResult(interp), -1);
+			Tcl_WriteChars(errChannel, "\n", 1);
+		}
+		Tcl_Exit(1);
 	    case TK_ARGV_CONST_OPTION:
 		Tk_AddOption(tkwin, infoPtr->dst, infoPtr->src,
 			TK_INTERACTIVE_PRIO);

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to