Ethereal-dev: Re: [ethereal-dev] col_append_fstr function not found during link stage

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxx>
Date: Wed, 13 Oct 1999 14:35:39 -0700 (PDT)
> While working on some code to handle truncated packet I discovered the
> col_append_fstr function in packet.h  It was just what I was looking for; a
> method to add an ***SHORT PACKET** message to the information column.  After
> I added the function the link stage failed because this new and wonderful
> function was unavailable.  
> 
> What gives ??

The declaration of "col_append_fstr()" was added to "packet.h" in
checkin 1.48:

	revision 1.48
	date: 1999/05/09 04:16:36;  author: sharpe;  state: Exp;  lines: +11 -1
	Added initial support for SMB plus most of negprot decode ..

The same goes for "col_append_str()".

There's no implementation of it in the CVS tree, though.

Richard's message of 12 Apr 1999 says:

	Date: Mon, 12 Apr 1999 22:06:58 +0900
	To: ethereal-dev@xxxxxxxx
	From: Richard Sharpe <sharpe@xxxxxxxxxx>
	Subject: [ethereal-dev] Added col_append_str
 
	Hi,
 
	With respect to my suggestions around dissect_telnet and
	dissect_ftp, I added col_append_str and it seems to work.  One
	problem is that the rest of the line does not display unless you
	expand the column and then scroll.
 
	Is there any way to have that column as wide as the widest text
	in it by default?
 
	I would have added col_append_fstr, but could not come to grips
	with how to have vsnprintf add additional items to its list,
	like the current contents of the column :-)

	Regards
	-------
	Richard Sharpe, sharpe@xxxxxxxxxx, NIC-Handle:RJS96
	NS Computer Software and Services P/L, 
	Ph: +61-8-8281-0063, FAX: +61-8-8250-2080, 
	Samba (Team member), Linux, Apache, Digital UNIX, AIX, C, ...

and my followup said:

	From: guy@xxxxxxxxxx (Guy Harris)
	Subject: Re: [ethereal-dev] Added col_append_str
	To: sharpe@xxxxxxxxxx (Richard Sharpe)
	Date: Mon, 12 Apr 1999 19:36:01 -0700 (PDT)
	Cc: ethereal-dev@xxxxxxxx
 
	> With respect to my suggestions around dissect_telnet and
	> dissect_ftp, I added col_append_str and it seems to work. One
	> problem is that the rest of the line does not display unless
	> you expand the column and then scroll.
	> 
	> Is there any way to have that column as wide as the widest text
	> in it by default?
 
	If "gtk_clist_set_column_width()" causes columns to expand in width (and
	causes the top-level window to expand as needed), then having
	"col_add_str()", "col_append_str()", etc. keep track of the maximum
	width of the column to which they're adding stuff, and using that to
	change the column widths after all packets have been run through the
	dissector to generate their summary lines,t hat might do it.  (See the
	"XXX" comment before "get_column_width()".)
 
	> I would have added col_append_fstr, but could not come to grips
	> with how to have vsnprintf add additional items to its list, like
	> the current contents of the column :-)
 
	One could, I guess, copy "fd->cinfo->col_data[i]" to a temporary buffer,
	and append it after the "vsnprintf()" call.

The first problem should, I think, now be fixed - the COL_INFO column
should now automatically expand to be wide enough to display the longest
string.  If Richard was waiting for that to be fixed before checking in
"col_append_str()", he can now check that in.

Phil Techau also said he'd implemented a routine with that name in later
mail:

	Date: Wed, 07 Jul 1999 18:23:23 -0400
	From: Phil Techau <phil@xxxxxxxxxxxxxxxx>
	To: ethereal-dev@xxxxxxxx
	Subject: [ethereal-dev] "Info" column

	I've written some decoding routines for some proprietary network
	messages.  These messages are layered on TCP.  Due to several
	conditions, there can be many of these messages in one network frame. 
	One of the main developers of this software asked if I could put a short
	summary of the contents of each message on the "Summary" (Info column)
	line.  I've shortened the name of each command that gets processed for
	summary line display, but still come up with some very long lines. 
 
	The summary I'm putting out for requests is something along the line of
	"command object1 object2", and for responses
	"response object1 Error:object2" if there was an error commanding one of
	the objects.  The current size of 256 bytes is nowhere near big enough
	to store the information for one frame of messages.
 
	I initially just bumped COL_MAX_LEN from 256 up to 4096, but that seemed
	rather wasteful and prevented me from running against large capture
	files until I straightened out a rather marginal virtual memory
	configuration on my workstation.
 
	What I have at the present time is a second definition:
	COL_MAX_INFO_LEN, which gets used when the column type is "info".
 
	I've also written a "col_append_str" routine to append each message's
	information to the data already stored in the desired ("info" in this
	case) field.  Right now this routine uses strlen and strncat, so isn't
	as efficient as the method used internally in packet-tcp.c.  However, we
	should have a general purpose routine to do appending so that each
	module that needs this functionality doesn't have to duplicate the
	effort.
 
	This seems to be something that others would want to do, so I'm hoping
	to get this functionality built in, rather than having to make the
	changes for each new release.
	If you want the specific changes made to incorporate these changes, let
	me know and I'll provide diffs of the affected routines.

In general, "post the diffs to the list" seems to be the strategy most
people use - it saves a protocol round-trip (i.e., instead of

	From: developer
	To: ethereal-dev@xxxxxxxx
	Subject: added dissector for Internet Telepathy Protocol

	I have some changes to add a dissector for the Internet
	Telepathy Protocol; let me know if you're interested.

	To: developer
	From: another-developer
	Cc: ethereal-dev@xxxxxxxx
	Subject: Re: added dissector for Internet Telepathy Protocol

	> I have some changes to add a dissector for the Internet
	> Telepathy Protocol; let me know if you're interested.

	Sure, send 'em out.

	From: developer
	To: another-developer
	Cc: ethereal-dev@xxxxxxxx
	Subject: Re: added dissector for Internet Telepathy Protocol

	OK, I've attached the ITP decoder.

you get just

	From: developer
	To: ethereal-dev@xxxxxxxx
	Subject: added dissector for Internet Telepathy Protocol

	I have some changes to add a dissector for the Internet
	Telepathy Protocol; the changes are attached.

).