Commit Graph

450 Commits

Author SHA1 Message Date
Laurent Deniel ab47385543 Add prefs.gui_marked_[fb]g color preferences for the
color of marked frames.

They are currently only available from preferences file,
but I will add the color selection in GUI later.

svn path=/trunk/; revision=2327
2000-08-21 21:24:15 +00:00
Laurent Deniel c7d9d83ebc Cosmetic change (close button at the right place :-).
svn path=/trunk/; revision=2326
2000-08-21 20:11:51 +00:00
Laurent Deniel dea8f0c202 Add some menu items related to the "frame mark" feature in
the Edit menu which allow you to:

- mark (or unmark) the currently selected frame
- mark all _displayed_ frames
- unmark all _displayed_ frames

Should I be more precise in the menu label ?
(e.g. "Mark All Displayed Frame" instead of "Mark All Frames"
  and "Mark Selected Frame" instead of "Mark Frame" ?)

svn path=/trunk/; revision=2325
2000-08-21 19:36:19 +00:00
Laurent Deniel 05984d233d Add the number of marked packets in the summary window.
svn path=/trunk/; revision=2323
2000-08-21 18:20:19 +00:00
Laurent Deniel 8fbd65cc7f Frames in the packet list can now be marked by the user using
the middle mouse button. The marked packets are displayed in
reverse video but this should change in the future (the color
should be configurable via the GUI).

Then,  the marked packets can be saved (via the "Save as"
window dialog).

Other features will be added in the future (I am waiting for
your comments and wishes).

svn path=/trunk/; revision=2322
2000-08-21 15:45:33 +00:00
Laurent Deniel ff42c86f9a Put an indentation in hexdump display of a TCP stream
only if both directions are displayed.

svn path=/trunk/; revision=2321
2000-08-21 13:04:05 +00:00
Laurent Deniel a3d48f0972 Make work better the (hexdump) popup menus.
- have popup_menu_handler return TRUE or FALSE according
  to the fact that the event is really processed or not.
- use gtk_signal_connect instead of gtk_signal_connect_object
  to have the widget that emitted the signal _and_ the popup
  menu widget.
- call gtk_signal_emit_stop_by_name to abort the propagation
  if the signal was processed.

svn path=/trunk/; revision=2318
2000-08-21 12:33:22 +00:00
Guy Harris 023bf363b5 Instead of each set of built-in preferences having "ok", "save",
"cancel", and "delete" methods, give them:

	"fetch" - fetch from the notebook tab any values not already
	stored in "prefs", and store them there, but doesn't apply them;

	"apply" - apply the settings in "prefs";

	"destroy" - clean up any windows created from the tab.

As we no longer have "cancel" methods, we don't have per-preference code
to revert preference values; instead, we have the common preference
dialog box code make a copy of all the current preferences, and, when
the "Cancel" button is clicked, free the current preferences and copy
the saved preferences to it, and apply the preferences.

Add an "Apply" button to the preference dialog box, which applies the
current preferences without closing the dialog box.

Treat a request to delete the preferences dialog box as equivalent to
clicking "Cancel".

Have a "remember_ptree_widget()" routine to remember all protocol tree
widgets, and use the list of those widgets when we set GUI preferences
for the protocol tree widgets, rather than setting the main protocol
tree widget and then using the list of packet windows.  Move that code
out of "main.c" to "proto_draw.c", as it's not used by anything in
"main.c", but is used by stuff in "proto_draw.c".

Make the font one of the preferences we can set on the fly for protocol
tree widgets.  Also make it something we can set on the fly for the
packet list widget.

svn path=/trunk/; revision=2316
2000-08-21 08:09:17 +00:00
Guy Harris 352f8f1603 "capture_child" isn't declared or defined if HAVE_LIBPCAP isn't defined;
check it only if HAVE_LIBPCAP is defined.

svn path=/trunk/; revision=2315
2000-08-21 01:52:57 +00:00
Laurent Deniel e0a8d41556 Add a popup menu for the hexdump window. For now, it has only the
common items but let's prepare the future (e.g. Match selected)...

svn path=/trunk/; revision=2314
2000-08-20 21:55:58 +00:00
Laurent Deniel e74040c295 - do not issue the font warning if in the child process (used for real time
capture) since it has already been done at GUI startup.

- fix a font name in warning message.

svn path=/trunk/; revision=2309
2000-08-20 15:38:50 +00:00
Guy Harris 2f2614652a When the Win32 GTK+ constructs fake XLFD names for Windows fonts, it
uses "normal" rather than "medium" as the weight name for normal-weight
fonts; map "normal", as well as "medium", to "bold" when constructing
the name of the bold version of a font.

svn path=/trunk/; revision=2306
2000-08-20 09:02:29 +00:00
Guy Harris ad934375fa Remove references to the "-b" option from the usage messages, as that
option has been removed.

svn path=/trunk/; revision=2305
2000-08-20 08:08:30 +00:00
Guy Harris e697eb8e9f Instead of having the normal-weight and bold fonts set separately,
generate the name of the boldface font from the Roman font; if the two
fonts don't have the same widths, the display will look weird when a
field is selected, and it's a bit of a pain for the user to have to
select *two* fonts.

On UNIX/X, default to
"-*-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-*-" rather than to
"-*-lucidatypewriter-medium-r-normal-*-*-120-*-*-*-*-iso8859-1" - some
Linux distributions appear to lack the Lucida typewriter font.

Add a "gui.font_name" preference to the preferences file, specifying the
normal-weight font to use.  Have it settable from the "GUI" tab in the
Preferences dialog box - the "Font..." button, when clicked, pops up a
font selection dialog box.

If we either can't open the selected font or the boldfaced version of
the font, default to "6x13" and "6x13bold" as fallbacks - the former
will probably be "fixed", and the latter would be "fixedbold" if X
actually created such an alias, but it doesn't so we use "6x13bold"
instead.

svn path=/trunk/; revision=2304
2000-08-20 07:53:45 +00:00
Laurent Deniel 9110dda9dc Add Mbit/sec to the summary window.
svn path=/trunk/; revision=2300
2000-08-19 21:36:51 +00:00
Guy Harris 170f561bf2 Don't catch the "delete_event" signal for the "Help" window - we just
need to catch the "destroy" event, and have its handler clear the global
help window pointer.

That means that the "Close" button callback also need not clear that
pointer, it merely needs to destroy the widget; given that we're now
always passing it a pointer to the widget as the "data" argument, we
just have it destroy that widget.

svn path=/trunk/; revision=2285
2000-08-17 08:17:38 +00:00
Guy Harris da88c237c2 It was silly of me to require that "forget_scrolled_window()" be called
explicitly; the right thing to do was to have
"remember_scrolled_window()" catch the "destroy" signal on the scrolled
window widget, and have the handler for that signal forget the scrolled
window.

Doing that obviates the need to have creators of scrolled windows keep
track of the windows they have and forget them when they're destroyed.

The signal for a "the window manager has requested that this window go
away" event is "delete_event", not "delete-event"; fix the
"gtk_signal_connect()" calls that were using "delete-event".

svn path=/trunk/; revision=2284
2000-08-17 07:56:44 +00:00
Laurent Deniel ec5366cede Fix a long standing bug in the scrolled window handling in follow TCP stream
which make ethereal aborts if the preferences were modified (or cancel) after
the TCP window was closed.

Fix the same bug in the other scrolled window handling (help & protocols).

(forget_scrolled_window() was not called at the window closure).

svn path=/trunk/; revision=2283
2000-08-16 21:08:48 +00:00
Laurent Deniel e4c5d20f3a The "Edit:protocols..." window is now sorted.
svn path=/trunk/; revision=2282
2000-08-16 20:14:24 +00:00
Laurent Deniel df89199498 - remove "Match Selected" from the packet list popup menu.
- reorganise a bit the two right click popup menus :

  . the first part is common to the packet list and protocol tree menus
  . the second part is window-specific.

 (if we had a popup menu for the hexdump window, that would be the same).

svn path=/trunk/; revision=2281
2000-08-16 19:15:11 +00:00
Guy Harris c8cb7ffb19 In "set_plist_sel_browse()", don't unselect the current packet if the
selection mode of the packet list window isn't actually going to be
changed - it's a bit annoying to have the protocol tree window clear out
from under you if all you've done is pop up the Edit->Preferences dialog
and cancelled it (or accepted it without changing any GUI preference).

svn path=/trunk/; revision=2280
2000-08-15 22:22:35 +00:00
Guy Harris 75a756e881 Rename the "Properties" pop-up menu item "Protocol Properties", to make
it clearer what properties it lets you edit.  (Perhaps it should say
"Edit Protocol Properties", to make it even clearer?)

svn path=/trunk/; revision=2279
2000-08-15 21:35:34 +00:00
Laurent Deniel e559d013fc Oups. Forgot some set_menus_for_selected_tree_row calls.
svn path=/trunk/; revision=2277
2000-08-15 21:03:55 +00:00
Laurent Deniel 55d80b7bec Fix a problem with const char *
svn path=/trunk/; revision=2276
2000-08-15 20:53:31 +00:00
Laurent Deniel 5a326952de Implements the "Properties" menu item which displays the preferences window
at the correct notebook page when a particular protocol (which has registered
some preferences) is selected in the tree view.

- add set_menus_for_selected_tree_row() in menu.[ch]

- add prefs_is_registered_protocol() and
      prefs_get_title_by_name() in prefs.[ch]

svn path=/trunk/; revision=2275
2000-08-15 20:46:17 +00:00
Laurent Deniel cc36f0b931 Add the "Edit:Protocols..." feature which currently only implements
the following:

It is now possible to enable/disable a particular protocol decoding
(i.e. the protocol dissector is void or not). When a protocol
is disabled, it is displayed as Data and of course, all linked
sub-protocols are disabled as well.

Disabling a protocol could be interesting:

- in case of buggy dissectors
- in case of wrong heuristics
- for performance reasons
- to decode the data as another protocol (TODO)

Currently (if I am not wrong), all dissectors but NFS can be disabled
(and dissectors that do not register protocols :-)

I do not like the way the RPC sub-dissectors are disabled (in the
sub-dissectors) since this could be done in the RPC dissector itself,
knowing the sub-protocol hfinfo entry (this is why, I've not modified
the NFS one yet).

Two functions are added in proto.c :

gboolean proto_is_protocol_enabled(int n);
void proto_set_decoding(int n, gboolean enabled);

and two MACROs which can be used in dissectors:

OLD_CHECK_DISPLAY_AS_DATA(index, pd, offset, fd, tree)
CHECK_DISPLAY_AS_DATA(index, tvb, pinfo, tree)

See also the XXX in proto_dlg.c and proto.c around the new functions.

svn path=/trunk/; revision=2267
2000-08-13 14:09:15 +00:00
Laurent Deniel 281e892939 - add ipv6.addr for the source and destination addresses (like ipv4)
- implement the TCP follow feature for TCP over IPv6

svn path=/trunk/; revision=2258
2000-08-11 22:18:22 +00:00
Laurent Deniel 6a480953a9 Miscellaneous code cleaning
- add <stdarg.h> or <varargs.h> in snprintf.h
  and remove those inclusions in the other #ifdef NEED_SNPRINTF_H codes

- remove the check of multiple inclusions in source (.c)  code
  (there is a bit loss of _cpp_ performance, but I prefer the gain of
   code reading and maintenance; and nowadays, disk caches and VM are
   correctly optimized ;-).

- protect all (well almost) header files against multiple inclusions

- add header (i.e. GPL license) in some include files

- reorganize a bit the way header files are included:

  First:
  #include <system_include_files>
  #include <external_package_include_files (e.g. gtk, glib etc.)>
  Then
  #include "ethereal_include_files"

  with the correct HAVE_XXX or NEED_XXX protections.

- add some HAVE_XXX checks before including some system header files

- add the same HAVE_XXX in wiretap as in ethereal

Please forgive me, if I break something (I've only compiled and regression
tested on Linux).

svn path=/trunk/; revision=2254
2000-08-11 13:37:21 +00:00
Guy Harris 42f7676996 Give the Help menu the more-or-less canonical style from most
Motif/KDE/GNOME(?) and Windows applications, with "Help" above "About",
and separated from "About" by a separator line.

(This also makes "Help->Help" the default, which is probably what most
users would want, especially if, as, and when we fill out the help.)

svn path=/trunk/; revision=2239
2000-08-09 06:43:22 +00:00
Gilbert Ramirez ba2272fb26 Small fix for initialization of new follow_info struct.
svn path=/trunk/; revision=2233
2000-08-09 05:26:11 +00:00
Gilbert Ramirez 3f8d753943 In TCP Follow window, allow the optional showing of:
Entire Conversation
	Client -> Server packets
	Server -> Client packets

Have "Save As" button work as a "Print to File" button; it asks for
a filename and uses the same routine that "Print" uses to save the file.
What you see in the window is what you get in the file. So, you can get
any of the above conversations/soliloquies combined with:

	ASCII
	EBCDIC
	Hex Dump

svn path=/trunk/; revision=2232
2000-08-09 05:18:45 +00:00
Laurent Deniel cedac6e3f1 Add a Help window that contains:
- short overview
- list of known protocols
- list of display filters
- short capture filter help

The display filter help can be extended in the future
when we will have a GUI for filter construction. But
this is better than nothing ;-)
And cut & paste from the text help window and the filter
input field works...

svn path=/trunk/; revision=2227
2000-08-08 12:28:50 +00:00
Guy Harris 7b4e1a3742 Cast an argument to "isspace()" to "guchar" so that if it has the 8th
bit set it won't get sign-extended; this squelches a GCC complaint, and
may keep weird things from happening if there're non-ASCII ISO 8859/n
characters in a filter file.

svn path=/trunk/; revision=2222
2000-08-07 22:35:14 +00:00
Guy Harris ee78255b00 Arrange that filter dialog boxes have an "Apply" button only if one can
apply the filter, i.e. only if the dialog box is attached to the filter
text entry in the main window.

svn path=/trunk/; revision=2212
2000-08-05 07:02:28 +00:00
Gilbert Ramirez a3e7190456 Add a "Save As" feature to the TCP Follow dialogue, to save the stream
file to a user-specified file.

Move the file-copy routine in save_cap_file() to an indepenent
function in file.c  (copy_binary_file()) so that follow_dlg.c can use it.

Remove #include "follow.h" from the C files that don't need it.

svn path=/trunk/; revision=2200
2000-08-03 12:44:40 +00:00
Guy Harris 3d20d56999 Add a routine to check whether a file is a directory or not.
To test whether a file the user selected to be opened from the file
selection box is really a directory (so that we can point the file
selection box at it, rather than trying to open the directory as a
capture file, which wouldn't work), use the routine in question.

To make the GTK+ file selection box start out in the last directory from
which we opened a file, use "gtk_file_selection_complete()", rather than
"chdir()"ing to that directory.

Those changes keep us from "chdir()"ing all over the place; that way, if
Ethereal dumps core, the core dump shows up in the directory from which
it was run, rather than in the directory from which you last opened or
into which you last saved a file.

svn path=/trunk/; revision=2190
2000-07-31 04:53:40 +00:00
Richard Sharpe a194f2b07a Added changes so Edit->Filters...->Apply works as I think
it should.

Also added the two files I need to generate an sgml list of fields
that the UserGuide etc needs.

svn path=/trunk/; revision=2174
2000-07-29 03:20:51 +00:00
Guy Harris 024c2d72fe Use ESD_TYPE_CRIT for most errors (the model used by various GUIs seems
to use "warning" dialog boxes only to warn the user "if you do that, bad
things may happen" *and* to offer them the option either to drive on or
quit, so perhaps ESD_TYPE_CRIT should be used for all errors).

However, put "Ethereal: Error" rather than "Ethereal: Critical" in the
title bar, in the hopes that it'll make it clearer that Something Bad
Happened.

If the user specifies that captures should be saved to a user-specified
file rather than a temporary file, report errors trying to create that
file with "file_open_error_message()".

Make the "for_writing" argument to "file_open_error_message()" a
"gboolean", as it's either TRUE (if the file is being opened for
writing) or FALSE (if it's being opened for reading).

Report EISDIR as "XXX is a directory (folder), not a file.".

svn path=/trunk/; revision=2143
2000-07-20 05:10:02 +00:00
Guy Harris b736ff6251 In the "Preferences" dialog box, "Save" sets the current preference
values to the ones specified in the dialog box, so it should also
redissect the packets and re-evaluate the display filter if any of them
changed.  (I.e., it did part of an "Apply"; it needs to do all of it.)

"Cancel" also needs to find out if any preferences were changed by the
reversion and redissect and refilter if they did.

svn path=/trunk/; revision=2132
2000-07-10 09:18:38 +00:00
Guy Harris ebb525fac6 Put up a progress dialog when changing the time display; it can take a
long time on a large capture.

If the user is changing the setting of "Display TOS as DiffServ" *and*
the time stamp format, don't bother doing the time display update -
we'll regenerate the entire display anyway because we changed the
setting of "Display TOS as DiffServ".

svn path=/trunk/; revision=2130
2000-07-09 23:22:33 +00:00
Guy Harris 2801bb142a In the "Display Options" dialog box code, separately keep track of the
timestamp type when the dialog box was popped up, so we can revert to it
if the user clicks "Cancel", and the timestamp type as of when we
started *or* as of when we last changed it, so that we can check whether
the user's changed it from its current value and only redisplay the time
fields if they've changed it (as redisplaying the time fields could be
expensive - we have to scan through all the packets and rebuild the
packet list).

svn path=/trunk/; revision=2128
2000-07-09 20:59:23 +00:00
Guy Harris 0a71de8137 Turn the code of "colorize_packet()" into a static routine that is given
a word to use in the progress dialog, and a flag indicating whether the
display filter is to be reevaluated or not, and:

	have "colorize_packet()" call that routine with "Colorizing" and
	FALSE as those arguments;

	have the filtering code call that routine with "Filtering" and
	TRUE as those arguments;

	add an exported routine to call that routine with "Reprocessing"
	and TRUE as those arguments, to use to re-generate the packet
	list and to re-filter the packets if a protocol preference has
	been changed.

Keep track of whether preferences are changed from their initial value
by a preferences file or a command-line option, or from their previous
value by the "Preferences" dialog box; have "prefs_apply_all()" only
call the "apply" callback for a module if they have.

Call "prefs_apply_all()" after the command-line arguments have been
parsed and after "OK" has been clicked in the "Preferences" dialog box,
to notify modules of preference changes if they've registered a callback
for that.

After "OK" has been clicked in the "Preferences" dialog box, if any
preferences have changed, call the reprocessing routine, as the summary
line for some frames and/or the current display filter's value when
applied to some frames may have changed as a result of a preference
change.  Do the same after "OK" or "Apply" has been clicked in the
"Display Options" dialog box (as it controls a protocol preferences
item.

svn path=/trunk/; revision=2126
2000-07-09 03:29:42 +00:00
Guy Harris ae1df37513 If the progress dialog gets a "delete" event, have the handler return
TRUE, meaning "don't delete this", and if its "stop this operation"
button gets clicked, don't have its handler delete the progress dialog;
instead, leave the deletion of the window up to the code using the
dialog, as it'll do so when it stops the operation.

Make the "read file" operation destroy the dialog; all the other
operations already did so (as they just broke out of the loop doing the
operation, rather than returning).

Don't catch the "destroy" operation on the dialog box - its handler
appeared never to get called; we can just free the "progdlg_t" for the
dialog in "destroy_progress_dlg()", right after destroying the dialog
box widget.

svn path=/trunk/; revision=2122
2000-07-07 23:09:15 +00:00
Guy Harris 4e69c6bc87 Use "progdlg_t *" rather than "void *" as the handle for a progress
dialog box; that lets us do some type-checking, but we can still typedef
it to an incompletely-defined structure to hide the implementation
details from the caller.

Make "create_progress_dlg()" take, as an argument, the title to put in
the "stop the operation" button, and use "Stop" rather than "Cancel" if
stopping the operation doesn't undo all the work it's done.

Thaw the clist if we break out of a "read the file" operation, as we
freeze it before the operation.

Have the handler for the "delete" event on the progress dialog box
return FALSE, to let GTK+ know that it should, in fact, delete the
window.  ("delete" event handlers should return TRUE if the window
shouldn't actually be deleted, FALSE if it should; they should not
return "void".)

svn path=/trunk/; revision=2120
2000-07-07 07:01:58 +00:00
Guy Harris b1f950b377 Add support for a global "ethereal.conf" preferences file, stored in the
same directory as the "manuf" file ("/etc" or "/usr/local/etc", most
likely).

Add a mechanism to allow modules (e.g., dissectors) to register
preference values, which:

	can be put into the global or the user's preference file;

	can be set from the command line, with arguments to the "-o"
	flag;

	can be set from tabs in the "Preferences" dialog box.

Use that mechanism to register the "Decode IPv4 TOS field as DiffServ
field" variable for IP as a preference.

Stuff that still needs to be done:

	documenting the API for registering preferences;

	documenting the "-o" values in the man page (probably needs a
	flag similar to "-G", and a Perl script to turn the output into
	documentation as is done with the list of field);

	handling error checking for numeric values (range checking,
	making sure that if the user changes the variable from the GUI
	they change it to a valid numeric value);

	using the callbacks to, for example, update the display when
	preferences are changed (could be expensive);

	panic if the user specifies a numeric value with a base other
	than 10, 8, or 16.

We may also want to clean up the existing wired-in preferences not to
take effect the instant you tweak the widget, and to add an "Apply"
button to the "Preferences" dialog.

svn path=/trunk/; revision=2117
2000-07-05 09:41:07 +00:00
Guy Harris ed5651a909 Get rid of the stuff to let the callback that pops up the Preferences
dialog select a particular page - I think that was used only by the
filter code back when "Filter:" buttons popped up a Preferences dialog
with the Filter page (which is no longer a Preferences dialog page)
selected, but now there's a separate Filter dialog box.

svn path=/trunk/; revision=2116
2000-07-05 06:33:02 +00:00
Guy Harris 4522bab239 Put the close button in an HButtonBox, so that it doesn't expand to the
width of the window.

svn path=/trunk/; revision=2115
2000-07-05 06:19:27 +00:00
Guy Harris 83fe7fc195 Put the "Cancel" button in a progress dialog box in an HButtonBox,
rather than an Alignment; that appears to be the correct way to keep
buttons from expanding to the full width of the window.

Don't use "gtk_widget_show()" on every single widget in the progress
dialog box, use "gtk_widget_show_all()" on the top-level widget.

svn path=/trunk/; revision=2114
2000-07-05 05:50:00 +00:00
Guy Harris 36d85ce33c To make windows modal, use "gtk_window_set_modal()" rather than
"gtk_grab_add()"; the former makes it a bit clearer what's being done,
and I think it may be considered the right way to do it (GTK+ remembers
the state of the window and appears to add and remove the grab as
appropriate).

svn path=/trunk/; revision=2113
2000-07-05 02:52:39 +00:00
Guy Harris 105d0f4f70 Add a "dlg_window_new()" routine, which creates a GTK_WINDOW_DIALOG
window and makes it transient for the top-level window; the
transient-for at least provides a hint to X window managers to

	minimize the dialog if the main window is minimized;

	keep the dialog on top of the main window in the Z order for
	windows;

	perhaps (if there are any window managers that actually *do*
	this) even put it atop the main window in the X-Y plane (KWM
	doesn't and I seem to remember that the Exceed X server for
	Windows doesn't).

It's generally considered the Right Thing To Do for dialog boxes.

Use that routine to create dialog boxes, rather than doing it directly
in the code for that dialog box.

svn path=/trunk/; revision=2112
2000-07-05 02:45:42 +00:00
Guy Harris 0c94e5bd81 Note, in a comment, that "gtk_set_locale()" sets the C-language locale.
svn path=/trunk/; revision=2110
2000-07-05 02:04:16 +00:00
Gilbert Ramirez 32fe73b2de Change version to 0.8.10
In gtk/Makefile.nmake, add progress_dlg.obj

svn path=/trunk/; revision=2108
2000-07-04 12:10:06 +00:00
Guy Harris 864c5eabe1 GtkLabel is a subclass of GtkMisc, so it has alignment and padding
parameters and doesn't have to be stuffed into a GtkAlignment to align
it on the left.  (Alas, GtkButton *isn't* a subclass of GtkMisc, so we
have to stuff the Cancel button into an alignment to keep it from
growing to the width of the window.)

svn path=/trunk/; revision=2105
2000-07-03 19:42:36 +00:00
Guy Harris e4a9d0f426 If the user clicks the "Cancel" button in a progress-bar dialog box for
reading a capture file, we should just clean up and return so that
Ethereal continues running with no capture file loaded, unless the read
is being done as a result of Ethereal being run with the "-r" flag, in
which case we still exit (although we may eventually choose to continue
running with no capture file loaded even in that case).

svn path=/trunk/; revision=2104
2000-07-03 09:34:27 +00:00
Guy Harris 9e42b3a4ed Remove the progress bar from the status line, and, instead, for any
potentially long-running operation that has a progress indicator, pop up
a modal dialog box with

	an indication of what is being done;

	a progress bar;

	a "Cancel" button to stop the operation.

This:

	leaves more room on the status line for a filter expression;

	provides a mechanism to allow the user to cancel long-running
	operations (although the way we do so may not back out of them
	as nicely as the user might like, if it's not obvious what the
	"right" way is or if the "right" way is difficult to implement
	or involves doing as much work as letting the operation
	continue);

	means that, because the dialog box is modal, we don't have to
	worry about the user performing arbitrary UI operations out from
	under the operation and changing arbitrary bits of state being
	used by that operation.

svn path=/trunk/; revision=2103
2000-07-03 08:36:52 +00:00
Guy Harris 7843ac6d0e Add routines to Wiretap to allow a client of Wiretap to get:
a pointer to the "wtap_pkthdr" structure for an open capture
	file;

	a pointer to the "wtap_pseudo_header" union for an open capture
	file;

	a pointer to the packet buffer for an open capture file;

so that a program using "wtap_read()" in a loop can get at those items.

Keep, in a "capture_file" structure, an indicator of whether:

	no file is open;

	a file is open, and being read;

	a file is open, and is being read, but the user tried to quit
	out of reading the file (e.g., by doing "File/Quit");

	a file is open, and has been completely read.

Abort if we try to close a capture that's being read if the user hasn't
tried to quit out of the read.

Have "File/Quit" check if a file is being read; if so, just set the
state indicator to "user tried to quit out of it", so that the code
reading the file can do what's appropriate to clean up, rather than
closing the file out from under that code and causing crashes.

Have "read_cap_file()" read the capture file with a loop using
"wtap_read()", rather than by using "wtap_loop()"; have it check after
reading each packet whether the user tried to abort the read and, if so,
close the capture and return an indication that the read was aborted by
the user.  Otherwise, return an indication of whether the read
completely succeeded or failed in the middle (and, if it failed, return
the error code through a pointer).

Have "continue_tail_cap_file()" read the capture file with a loop using
"wtap_read()", rather than by using "wtap_loop()"; have it check after
reading each packet whether the user tried to abort the read and, if so,
quit the loop, and after the loop finishes (even if it read no packets),
return an indication that the read was aborted by the user if that
happened.  Otherwise, return an indication of whether the read
completely succeeded or failed in the middle (and, if it failed, return
the error code through a pointer).

Have "finish_tail_cap_file()" read the capture file with a loop using
"wtap_read()", rather than by using "wtap_loop()"; have it check after
reading each packet whether the user tried to abort the read and, if so,
quit the loop, and after the loop finishes (even if it read no packets),
close the capture and return an indication that the read was aborted by
the user if that happened.  Otherwise, return an indication of whether
the read completely succeeded or failed in the middle (and, if it
failed, return the error code through a pointer).

Have their callers check whether the read was aborted or not and, if it
was, bail out in the appropriate fashion (exit if it's reading a file
specified by "-r" on the command line; exit the main loop if it's
reading a file specified with File->Open; kill the capture child if it's
"continue_tail_cap_file()"; exit the main loop if it's
"finish_tail_cap_file()".

svn path=/trunk/; revision=2095
2000-06-27 07:13:42 +00:00
Guy Harris 5af6a8d416 Pull the code to fetch display options from the display options dialog
box into a common subroutine.

Don't call "change_time_formats()" to update the display unless the time
format actually changed.

svn path=/trunk/; revision=2094
2000-06-27 05:18:44 +00:00
Guy Harris 252385f3fa Get rid of a debugging fprintf.
svn path=/trunk/; revision=2093
2000-06-27 04:40:15 +00:00
Guy Harris 7fbf320b8a Patch from Ben Fowler to rename the global variable "cf" to "cfile", to
make it easier to use grep to find all references to it without getting
a lot of false hits and to check, after allocating the memory chunk for
"frame_data" structures, that the allocation succeeded.

svn path=/trunk/; revision=2092
2000-06-27 04:36:03 +00:00
Guy Harris 068f36c4fe Write and read the temporary file for "Follow TCP Stream" as a binary
file, not as a text file; that makes no difference on UNIX, but, as the
file *is* binary, it makes a difference on Win32 systems.

svn path=/trunk/; revision=2086
2000-06-24 05:06:29 +00:00
Guy Harris f3eddb46cc Changes from Graham Bloice to support "Update list of packets in real
time" during captures on Win32.

svn path=/trunk/; revision=2074
2000-06-15 08:02:43 +00:00
Gilbert Ramirez 78cd3a9a26 Add gtk_set_locale() as recommended by
"Kaoru.Kusunoki" <kusunoki@mbox.kyoto-inet.or.jp>

svn path=/trunk/; revision=2038
2000-06-05 03:09:21 +00:00
Gilbert Ramirez 0f7cf64763 Add a "Enable name resolution" check box to the File Open dialogue.
svn path=/trunk/; revision=2035
2000-06-02 03:35:39 +00:00
Guy Harris baaad29bf8 Graham Bloice's Win32 Makefile changes to build in batch mode (gets rid
of multiple compile lines in the output of the build, speeds the build
up).

svn path=/trunk/; revision=2024
2000-05-29 20:11:41 +00:00
Guy Harris d6a6de8cb3 Incorporate the GTK+ 1.2.8 version of "gtkclist.c" (which includes all
the speedups ours included, and some others).

svn path=/trunk/; revision=2010
2000-05-26 07:47:47 +00:00
Guy Harris cfc9ec9f21 Don't duplicate the "gtk_radio_button_new_with_label()" and
"gtk_check_button_new_with_label()" code, just call those routines and
then fix up the label, as suggested by Dermot Musgrove on the gtk
mailing list.

svn path=/trunk/; revision=2009
2000-05-26 07:32:56 +00:00
Gilbert Ramirez d7e6e0e384 Add wtap-int.h. Move definitions relevant to the internal workins of wiretap
to that file, leave public definitions in wtap.h.

Rename "union pseudo_header" to "union wtap_pseudo_header".
Make the wtap_pseudo_header pointer available in packet_info struct.

svn path=/trunk/; revision=1989
2000-05-19 23:07:04 +00:00
Guy Harris f3d90d30a4 Remove the "union pseudo_header" from the "frame_data" structure;
there's no need to keep it around in memory - when the frame data is
read in when handing a frame, read in the information, if any, necessary
to reconstruct the frame header, and reconstruct it.  This saves some
memory.

This requires that the seek-and-read function be implemented inside
Wiretap, and that the Wiretap handle remain open even after we've
finished reading the file sequentially.

This also points out that we can't really do X.25-over-Ethernet
correctly, as we don't know where the direction (DTE->DCE or DCE->DTE)
flag is stored; it's not clear how the Ethernet type 0x0805 for X.25
Layer 3 is supposed to be handled in any case.  We eliminate
X.25-over-Ethernet support (until we find out what we're supposed to
do).

svn path=/trunk/; revision=1975
2000-05-18 09:09:50 +00:00
Guy Harris 7bf3c7523b Have "proto_tree_is_visible" false except when we're in the middle of
doing something that requires that the text for protocol tree entries be
generated, i.e.

	1) initialize it to FALSE;

	2) have every routine that sets it clear it when it's done;

	3) when printing packets, set it to TRUE only if we're not just
	   printing packet summary lines;

and then get rid of settings to FALSE made unnecessary as a result of
those changes.

This makes sure it's not set when it doesn't have to be (which causes
the protocol tree code to format the text when it doesn't have to,
wasting CPU time).

svn path=/trunk/; revision=1973
2000-05-18 08:35:01 +00:00
Guy Harris 33f9afee30 Graham Bloice's changes to make clicking on a column header cause the
display to be sorted by the value in that column (and to reverse the sort
order the next time you click on that column).

Use "F<>" rather than "B<>" for file names in the Ethereal man page.

svn path=/trunk/; revision=1931
2000-05-10 06:00:22 +00:00
Guy Harris 740bb55521 Make the "Preferences" dialog box use the new utilities to make the Esc
key cancel the dialog box.

svn path=/trunk/; revision=1923
2000-05-08 07:58:20 +00:00
Guy Harris 158df5470a Keep a pointer to the current "Preferences" window, if any - if not, the
pointer is NULL - so that, instead of doing nothing if the user selects
"Edit->Preferences" when there's already a "Preferences" dialog box
open, we raise and de-iconify that window.

Connect the preferences dialog box and any file selection dialog box
opened from its Print tab, so that:

	if the preferences dialog box goes away, so does the file
	selection dialog box (as it no longer has a text widget into
	which it can stuff the selected file name);

	if the "File:" button is clicked when there's already a file
	selection dialog box open, we just reactivate that existing
	dialog box rather than popping up a new one.

Catch the ESC key in the file selection dialog box popped up for the
"File:" button in the Print tab of the Preferences dialog box, and make
it cancel the file selection dialog box.

svn path=/trunk/; revision=1922
2000-05-08 07:54:54 +00:00
Guy Harris 9bb3a841e3 Catch the ESC key in the file selection dialog boxes popped up for
"File->Open", "File->Save As", and the "File:" buttons in the Capture
Preferences and Print dialog boxes, and make it cancel the file
selection dialog box.

svn path=/trunk/; revision=1921
2000-05-08 07:13:40 +00:00
Guy Harris be87df37bf Set up the buttons in the "Capture Preferences" dialog box to use
mnemonics.

Give the button, in the "Display Options" dialog box, that controls
whether name resolution is enabled or not the same label ("Enable name
resolution") as the equivalent button in the "Capture Preferencs" dialog
box.

svn path=/trunk/; revision=1920
2000-05-08 05:51:37 +00:00
Guy Harris f0991d4a51 Connect the capture preferences dialog box and any file selection dialog
box it has open, so that:

	if the capture preferences dialog box goes away, so does the
	file selection dialog box (as it no longer has a text widget
	into which it can stuff the selected file name);

	if the "File:" button is clicked when there's already a file
	selection dialog box open, we just reactivate that existing
	dialog box rather than popping up a new one.

svn path=/trunk/; revision=1919
2000-05-08 05:42:54 +00:00
Guy Harris b6f55c2966 Keep a pointer to the current "Print" window, if any - if not, the
pointer is NULL - so that, instead of doing nothing if the user selects
"File->print" when there's already a "Print" dialog box open, we raise
and de-iconify that window.

Connect the print dialog box and any file selection dialog box it has
open, so that:

	if the print dialog box goes away, so does the filter dialog box
	(as it no longer has a text widget into which it can stuff the
	selected file name);

	if the "File:" button is clicked when there's already a file
	selection dialog box open, we just reactivate that existing
	dialog box rather than popping up a new one.

svn path=/trunk/; revision=1918
2000-05-08 05:35:08 +00:00
Guy Harris 63d3730e11 Keep a pointer to the current "Display Options" window, if any - if not,
the pointer is NULL - so that, instead of doing nothing if the user
selects "Display->Options" when there's already a "Display Options"
dialog box open, we raise and de-iconify that window.

Register a "destroy" callback for the "Display Options" window, so that
no matter how it's destroyed, even if it's destroyed by a window manager
close button rather than by clicking the "OK" or "Cancel" button, we
note that fact by clearing the pointer to the current "Display Options"
window, so that if the user then selects "Display->Options", we know
that we need to pop a new "Display Options" window up.

svn path=/trunk/; revision=1917
2000-05-08 05:12:19 +00:00
Guy Harris 73d9b5f47c Set up the buttons in the "Find Frame" and "Print" dialog boxes to use
mnemonics.

svn path=/trunk/; revision=1916
2000-05-08 04:53:21 +00:00
Guy Harris e160ffa08c Add functions to create buttons whose labels specify mnemonics, i.e.
that contain an "_" preceding a letter, indicating that the letter is to
be underlined in the label, and that if the key for that letter is
pressed (either with Alt or without it) in the dialog box to which the
button belongs, and the widget with the input focus doesn't do anything
with that button, the button is sent the "clicked" signal.

Attach mnemonics to the buttons in the "Display->Options" dialog box.

svn path=/trunk/; revision=1915
2000-05-08 04:23:46 +00:00
Guy Harris e701346096 Make the display options dialog box use the new utilities to make the
Esc key cancel the dialog box.

svn path=/trunk/; revision=1914
2000-05-08 01:23:16 +00:00
Guy Harris 3d8fa758b5 Get rid of some unnecessary (and "#if 0"ed-out) includes.
svn path=/trunk/; revision=1913
2000-05-08 01:11:46 +00:00
Guy Harris 6dd7421ac7 Make the "Print" dialog box use the new utilities to make the Return
key print the packets and make the Esc key cancel the dialog box.

svn path=/trunk/; revision=1907
2000-05-03 07:50:38 +00:00
Guy Harris d96eb452ac Make the summary dialog box use the new utilities to make the Return
and Esc keys close the dialog box; to make the Return key work, we have
to make the "Close" button the default widget.

svn path=/trunk/; revision=1906
2000-05-03 07:44:12 +00:00
Guy Harris 2d51ff4e4f Make dialog boxes created with "simple_dialog()" use the new utilities
to make the Esc key cancel the dialog box (or accept it, if it has no
"Cancel" button).

svn path=/trunk/; revision=1905
2000-05-03 07:19:38 +00:00
Guy Harris 4509614da1 Make the "Capture Preferences" dialog box use the new utilities to make
the Return key start the capture and make the Esc key cancel the dialog
box.

svn path=/trunk/; revision=1904
2000-05-03 07:09:40 +00:00
Guy Harris ebdbff44e8 Add some utilities to:
set the "activate" signal for a widget to call a routine to
	activate the "OK" button for a dialog box;

	set the "key_press_event" signal for a top-level dialog window
	to call a routine to activate the "Cancel" button for a dialog
	box if the key being pressed is the <Esc> key;

to make it easier to drive dialog boxes entirely from the keyboard.

Make the "Find Frame" and "Go To Frame" dialog boxes use those
utilities.

svn path=/trunk/; revision=1903
2000-05-02 08:04:31 +00:00
Guy Harris f3feac3b1d Put in a comment to note what we'd do if we ever wanted to make the
contents of the popup menu differ based on what row or column we're in.

svn path=/trunk/; revision=1902
2000-05-02 07:44:37 +00:00
Guy Harris 592f641bfc Make "P" a mnemonic for "Print" in the "File" menu.
svn path=/trunk/; revision=1901
2000-05-02 03:21:41 +00:00
Guy Harris 9d13d08eef Use "isprint()", rather than "isgraph()" followed by a check for space,
as "isprint()" is defined to be "isgraph() or space" (or, historically
speaking, "isgraph()", which came later, is defined to be "isprint()
except for space).

Make the characters in "packet_hex_print()" be "guchar" rather than
"gchar", so that they don't get sign-extended if the 8th bit is set, and
thus don't cause "isprint()" and company to give random answers.

svn path=/trunk/; revision=1893
2000-04-27 20:39:21 +00:00
Gilbert Ramirez 32c34e33ea Print spaces as spaces (instead of '.') in the hex dump pane.
Thanks to "Dan Warburton" <warb@tgf.tc.faa.gov> for catching that error.

svn path=/trunk/; revision=1892
2000-04-27 17:04:37 +00:00
Guy Harris eef42ea392 On Win32, build Ethereal as a Windows-subsystem program rather than a
console-subsystem program, so that when not run from a shell window it
doesn't cause a shell window to be popped up.  (Yes, this means that any
messages it prints, when not popped up from a shell window, get lost,
but the same is true of Ethereal on UNIX/X.)  Trick for doing this
shamelessly stolen from the Win32 port of the GIMP.

We do not want to build Tethereal or editcap as Windows-subsystem
programs, however, so we take the "/SUBSYSTEM" flag out of LDFLAGS and
put it into the link commands for Ethereal, Tethereal, and editcap.

svn path=/trunk/; revision=1857
2000-04-14 09:00:25 +00:00
Gilbert Ramirez b218a8f550 Consolidate flags in struct frame_data, and add "visited" flag. Use
it in SOCKS dissector.

(Okay, how many times am I going to modify packet.h today, forcing you
to re-compile everything? :-)

svn path=/trunk/; revision=1850
2000-04-13 20:39:38 +00:00
Guy Harris c577b0ef60 As we always have to have a filter string (thanks to a bug in the Linux
libpcap), if we have a null filter string we report it as "no filter",
just as we would do for a null filter string pointer.

svn path=/trunk/; revision=1844
2000-04-13 09:17:09 +00:00
Guy Harris db471396fa Have separate global variables for the current "File:Open" and
"File:Save {As}" dialog boxes, if any.

svn path=/trunk/; revision=1827
2000-04-10 18:40:13 +00:00
Gilbert Ramirez 0bc96179d8 Disable "Update list of packets in real tiem" and
"Automatic scrolling in live capture" for Win32.

svn path=/trunk/; revision=1817
2000-04-07 15:37:59 +00:00
Guy Harris 1a460aa453 Define "popup_menu_object" only in "gtk/menu.c", and just declare it as
an "extern" in "gtk/menu.h", to avoid complaints from the linker on some
platforms.

svn path=/trunk/; revision=1810
2000-04-06 06:52:10 +00:00
Guy Harris e59a0d5260 The Win32 port of libpcap requires that programs with which it's built
be built as multi-threaded programs; add "/MT" to the list of compiler
flags.

Add "clean" rules in subdirectories, and run subdirectory "nmake -f
Makefile.nmake clean" when "nmake -f Makefile.nmake clean" is done in
the top-level directory, so that "nmake -f Makefile.nmake clean" cleans
everything up.

svn path=/trunk/; revision=1791
2000-04-04 08:22:13 +00:00
Guy Harris c2b1feea05 Turn "ethereal_proto_init()" and "ethereal_proto_cleanup()" into
"dissect_init()" and "dissect_cleanup()", in "packet.c", so that we
don't duplicate those routines in Ethereal and Tethereal (and so on),
and don't have to remember to update N different versions of them if we
have to change the way we do one-time initialization and cleanup.

svn path=/trunk/; revision=1790
2000-04-04 07:03:07 +00:00
Guy Harris 5f0fc518c7 Use the new split between protocol registration and protocol handoff
registration routines to get rid of the special handling of ONC RPC
protocols - dissectors for ONC RPC-based protocols should register their
protocol, fields, and ETT values in a protocol registration routine, and
register themselves with the ONC RPC dissector in their protocol handoff
routine, so that the latter is done after the ONC RPC dissector's
protocol registration routine is called, so that the data structures
needed when dissectors for ONC RPC protocols register themselves with
the ONC RPC dissector have been initialized.

Get rid of "init_dissect_rpc()", which initializes said data structures;
do that in "proto_register_rpc()" instead.

svn path=/trunk/; revision=1789
2000-04-04 06:46:41 +00:00
Guy Harris 3ee409084c Move the creation of, and registration of protocols known to UDP in, the
hash table attached to "udp.port" out of "init_dissect_udp()" into
"proto_register_udp()", so that it's done the way TCP does it, and then
get rid of "init_dissect_udp()".

svn path=/trunk/; revision=1781
2000-04-03 09:41:31 +00:00
Guy Harris c6e50f9bc9 Split "filter_dialog_cb()" into "filter_dialog_cb()", which pops up a
"global" dialog box when "Edit:Filters" is selected, so that the list of
filters can be edited, and "filter_browse_cb()", which pops up a dialog
box associated with a "Filter:" button and a text entry widget attached
to that button, so that a filter can be selected or saved (although it
also supports the same editing that the "global" dialog box does).

Have "filter_dialog_cb()" connect the window in which the "Filter:"
button lives and the filter dialog box, so that:

	if the window in which the "Filter:" button lives goes away, so
	does the filter dialog box (as it no longer has a text widget
	into which it can stuff the selected filter);

	if the "Filter:" button is clicked when there's already a filter
	dialog box open, we just reactivate that existing dialog box
	rather than popping up a new one.

Also keep a pointer to the "global" filter dialog box, so that we also
arrange that there's only one of them (by reactivating the existing on
if "Edit:Filters" is selected when there's already a "global" filter
dialog box open).

Keep around pointers to the dialog boxes that contain the "Filter:"
buttons, so that we can arrange that there be only one of them (that was
a side-effect of an earlier attempt at fixing the problems described
above, but it's still useful for keeping multiple competing dialog boxes
from being open - there's more of that to be done).

Make the pointer to the "Open Capture File" dialog box widget static to
"file_dlg.c" - nobody outside of "file_dlg.c cares about it.

svn path=/trunk/; revision=1774
2000-04-01 12:03:42 +00:00
Guy Harris 5549f62efd There's no need to catch the "delete_event" signal on "Follow TCP
Stream" windows - the window should always be deleted in that situation,
so there's no need for a signal handler that might return TRUE (meaning
"don't delete the window"), and the "destroy" handler gets called when
the window actually gets destroyed, so there's no need to do any cleanup
in the "delete_event" handler.

Catch the "delete_event" signal on the main window in a routine with the
right signature, and that returns FALSE so that the window actually gets
deleted.

Call "close_cap_file()" in the callback for the "File:Quit" menu item
(which is also called by the "delete_event" handler for the main
window), rather than calling it after "gtk_main()" returns -
"close_cap_file()" manipulates stuff in the main window, and if we do so
after "gtk_main()" returns, it appears that the main window may have
disappeared (if we are exiting because the user deleted the main
window), in which case we can get crashes or other errors when
"close_cap_file()" tries to manipulate stuff in the main window.

There's no need to catch the "destroy" signal on the main window - we do
some of the cleanup in the handler for "delete_event" (we have to, for
reasons described above), and we do the rest of it after the main
routine returns.

svn path=/trunk/; revision=1773
2000-04-01 11:30:53 +00:00
Guy Harris 4173af0077 Exit from Ethereal by making the main loop exit, so that any quit
routines we register get called.

Register the "follow TCP stream" windows with "gtk_quit_add_destroy()",
so that, when Ethereal exits, they all get destroyed; this means that
their destroy callbacks get called, which means that they get to delete
their temporary files, so that, if you exit Ethereal without manually
closing the "follow TCP stream" windows, the temporary files don't get
left around.

Exit from Ethereal's "main()" function by calling "gtk_exit()", rather
than "exit()", so that we do whatever cleanup GTK+ requires.  (We used
to call "gtk_exit()" in the callback for the "File:Quit" menu item and
the "delete" callback for the main window, but we now just call
"gtk_main_quit()" so that we exit from the main loop.)

svn path=/trunk/; revision=1772
2000-04-01 10:23:01 +00:00
Guy Harris 239109b3e9 No work need be done when a summary dialog box is destroyed, or when the
window manager tries to delete it, so no callback is needed for the
"destroy" or "delete_event" signals (grabs are, at least in GTK+ 1.2.7,
removed when a widget is destroyed, and there's no need for the destroy
callback to destroy the widget itself; the delete event handler *could*,
for example, pop up a dialog box saying "Do you really want to close
this?", and allow the user to back out of the operation, but there's
no unsaved work that would be lost by closing the window, so there's no
point in having a delete event handler that does that).

svn path=/trunk/; revision=1771
2000-04-01 09:16:49 +00:00
Guy Harris 7dbe2ffaf2 Get rid of the "Find Frame" and "Go To Frame" items under "Display"; we
put them under "Edit" a while ago.

svn path=/trunk/; revision=1764
2000-03-29 22:39:19 +00:00
Gilbert Ramirez c317b042a8 Add getopt.c (from GNU libc) for use on Win32.
Ethereal/win32 now supports command-line options.
Tethereal now compiles on win32, except for the fact that I haven't
put the Makefile.nmake changes in for that yet.

svn path=/trunk/; revision=1758
2000-03-28 20:20:11 +00:00
Guy Harris 3f6f2f4eaa Ralf Schneider's change to boost the maximum size of a line in the
"filters" file (we also make it a #define so you only have to change it
in one place).

svn path=/trunk/; revision=1755
2000-03-28 06:20:08 +00:00
Guy Harris 87d1359345 Give the entry box in the "Find Frame" and "Go To Frame" dialog boxes
the initial focus, so you can start typing immediately.

svn path=/trunk/; revision=1722
2000-03-15 08:54:24 +00:00
Guy Harris 050979d522 We already set the foreground and background color for every frame,
which means we're already doing a "do something to the last row in the
packet list" operation on every frame we add to the list, so adding a
call to "gtk_clist_set_row_data()" won't make matters worse.

In addition, we already set one column in a row on a "change time
format" operation, so finding the row for a frame by calling
"gtk_clist_find_row_from_data()" doesn't turn a constant-time operation
into a linear-time operation, it just cranks the proportionality
constant up - it was quadratic before, alas, and it's still quadratic.

Adding calls to "gtk_clist_find_row_from_data()" to the "Find Frame" and
"Go To Frame" code does add an extra linear operation there, but those
operations shouldn't be common - and "Go To Frame", going to the last
frame on an ~100,000-frame big capture file, was quick, at least on my
450 MHz Pentium II machine, so maybe it won't be too bad.

And "select_packet()" either has to search the frame table for the frame
with the specified row number, or has to call "gtk_clist_get_row_data()"
to do that - the first is linear in the position of the frame in the
frame table, and the latter is linear in its position in the CList, and
the latter is less than or equal to the former, so the only thing making
it worse would be a change in the proportionality constant.

So it probably won't hurt performance by much.

Furthermore, if we add the ability to sort the display on an arbitrary
column, or to delete frames from the display - both of which are in the
wish list - storing the row number of the frame in the "frame_data"
structure won't necessarily work, as the row number can change out from
under us.

Therefore, reinstate the old way of doing things, where we associate
with each row a pointer to the "frame_data" structure for the row, using
"gtk_clist_set_row_data()".

svn path=/trunk/; revision=1703
2000-03-08 06:48:01 +00:00
Guy Harris 6c2961e447 Use GtkScrolledWindows to add scrollbars to the hex/ASCII panes and to
the "Follow TCP Stream" displays; that means we can use the same GTK+
calls to set the scrollbar placement on them that is used to set it on
other widgets.

Keep a list of all the GtkScrolledWindows whose scrollbar placement we
control with the GUI preference item for that, and change them all when
the GUI preference item is changed (which means that the GUI preference
item now applies to the "Follow TCP Stream" window as well as to the
hex/ASCII panes).

svn path=/trunk/; revision=1676
2000-03-02 07:05:57 +00:00
Guy Harris f8df32fefa Use the "destroy" signal on a packet popup window to find out when to
destroy the data structure for that window, rather than doing so when
the "tree-unselect-row" signal catcher is unhooked from the tree view.

svn path=/trunk/; revision=1672
2000-03-01 06:50:18 +00:00
Guy Harris 7c11334000 Jeff Foster's changes, with my additions, to allow the user to pop up a
window showing the protocol tree and hex/ASCII data for the currently
selected packet.

svn path=/trunk/; revision=1670
2000-02-29 06:24:41 +00:00
Laurent Deniel e7d574dd39 Add "Resolve Name" item in detailed tree popup.
svn path=/trunk/; revision=1658
2000-02-20 14:52:28 +00:00
Gilbert Ramirez 9f0954f198 Add GTK+-1.2.7 fixes to gtkclist.c, w/o removing our speed enhancements.
svn path=/trunk/; revision=1641
2000-02-17 18:27:04 +00:00
Guy Harris 0fa3ae9df0 When exiting Ethereal, don't just unlink any temporary capture file,
call "close_cap_file()", which will unlink the current capture file if
it's a temporary file - but will do so after closing it; certain OSes
whose names begin with "W" don't let you remove a file if it's currently
open, so if you exit Ethereal, without closing the capture first, after
doing a capture on one of those OSes, the temporary file won't be
removed.

svn path=/trunk/; revision=1628
2000-02-13 10:36:06 +00:00
Guy Harris dd3c88c1ff Update the Win32 Nmakefiles to reflect the move of the color code into
the "gtk" directory and the split of that code into "colors.c" and
"color_dlg.c".

svn path=/trunk/; revision=1624
2000-02-12 08:44:43 +00:00
Guy Harris 258da28261 Remove some unnecessary includes from "gtk/color_dlg.c" and
"gtk/colors.c", and make "gtk/color_dlg.c" include "gtk/color_dlg.h" to
make sure compilation checks the declaration of the routines with their
definitions.

svn path=/trunk/; revision=1623
2000-02-12 08:42:28 +00:00
Guy Harris 55c8a368b8 Split the color manipulation stuff into "color_dlg.[ch]", containing the
dialog boxes for editing color filtes, and "colors.[ch]", containing the
toolkit-dependent code to manipulate colors.

svn path=/trunk/; revision=1622
2000-02-12 08:31:49 +00:00
Guy Harris c80a7fd1d5 The color stuff is almost completely toolkit-dependent (this isn't just
the color-selection and color-filter-editing GUI stuff; different
toolkits, and different windows systems, have their own notions of color
objects - they may have nothing in common other than the notion that
colors have red, green, and blue values); move it all to the "gtk"
subdirectory for now, and, as we discover stuff stuff that can be made
platform-independent, drag it up to the top-level directory.

svn path=/trunk/; revision=1621
2000-02-12 08:15:31 +00:00
Guy Harris 80de78aaad Move the declarations of the routines in "gtk/file_dlg.c" out of
"gtk/main.h" and into a new "gtk/file_dlg.h" file.

svn path=/trunk/; revision=1620
2000-02-12 06:58:42 +00:00
Guy Harris 2cad7bc346 Make the routines internal to the filter-editing dialog box static.
Declare the one routine exported by "gtk/filter_prefs.c" in
"gtk/filter_prefs.h" rather than in "gtk/main.h".  Declare
"E_FILT_TE_PTR_KEY" there, as well, rather than in "prefs_dlg.h", as the
filter-editing dialog box is no longer a preference tab.

Don't include "prefs_dlg.h" unless the stuff declared therein is of
interest.

Fix "gtk/find_dlg.c" to fire up the filter-editing dialog box, not the
no-longer-extant preferences tab for filters, if the "Filter:" button is
clicked.

svn path=/trunk/; revision=1619
2000-02-12 06:46:54 +00:00
Gilbert Ramirez f9a8a11ef5 Integrate Ed Meaney's <emeaney@altiga.com> changes for using libpcap
from WinDump with Ethereal. We now have packet capturing on Win32. :)

svn path=/trunk/; revision=1612
2000-02-09 19:18:42 +00:00
Gilbert Ramirez 41f0a2c5e6 Update Makefiles for win32. Move local configuration to config.nmake,
have top-level Makefile.nmake call Makefile.nmake's in subdirectories.
Build plugins, and build generated source (lex, yacc). The only thing we
can't build is register.c; I need to re-work the top-level Makefile.nmake
because it lists object files, not C files, which make-reg-dotc needs.

svn path=/trunk/; revision=1608
2000-02-09 00:41:57 +00:00
Gilbert Ramirez c4fa7c87df Code changes, but not Makefile changes, for enabling plugins for Win32.
svn path=/trunk/; revision=1605
2000-02-07 17:08:27 +00:00
Gilbert Ramirez ea8136cd8e Remove instances of getenv("HOME") and provide a get_home_dir() function
which provides a default value if "HOME" is not set.

svn path=/trunk/; revision=1579
2000-01-29 16:41:28 +00:00
Gilbert Ramirez 18d8686647 I forgot to toggle the data_out_file "semaphore" (well, we us it like one)
at the end of follow_read_stream(), which causes a segfault if you change
the TCP Follow screen to EBCDIC, and then go back and select a TCP packet.

svn path=/trunk/; revision=1578
2000-01-29 13:30:08 +00:00
Gilbert Ramirez 8897888b04 Fix the File|Open menu problem for builds w/o pcap (aka, win32 builds).
svn path=/trunk/; revision=1561
2000-01-25 17:57:31 +00:00
Gilbert Ramirez 55b37ca14d Add an include of "../menu.h" to fix a win32 build break.
svn path=/trunk/; revision=1559
2000-01-25 17:32:52 +00:00
Gilbert Ramirez 2d2505d558 Enable File|Open menu item when Ethereal is started with no "-r" option.
svn path=/trunk/; revision=1558
2000-01-25 13:44:39 +00:00
Guy Harris d1aac3e35f Provide a "get_dirname()" routine, that takes a pathname and returns
either a pointer to the directory part of the pathname (after stomping
on the pathname separator with a '\0', so don't use this on pathnames
you plan to use afterwards), or NULL if the pathname contains no
directory part, and make it handle Win32 pathnames on Win32 systems.

Use it to get the containing directory of the currently open file, so
that the "chdir()" stuff we do to cause the "File:Open" dialog box to
show you files in the directory in which you last looked works on Win32
systems.

svn path=/trunk/; revision=1555
2000-01-25 05:48:47 +00:00
Guy Harris 8192b89967 Use "get_basename()" rather than finding the last component of "argv[0]"
by hand.

svn path=/trunk/; revision=1553
2000-01-25 04:44:33 +00:00
Gerald Combs b7a9eca9ba If we open a file, and immediately try to open another file while the first
one is loading, we dump core.  Add the "Open..." menu item to the list of
items that we disable while a file is loading.

svn path=/trunk/; revision=1551
2000-01-25 03:48:16 +00:00
Gerald Combs ce6ccdeb1e Try to work around the undraw_cursor() bug in GTK+ 1.2.3 - 1.2.6. Setting
the text widget scroll bar adjustment to 0.0 appears to fix things (on my
system, at least).

svn path=/trunk/; revision=1550
2000-01-25 03:45:45 +00:00
Gilbert Ramirez c11ba26785 Set a fixed-width font for win32.
svn path=/trunk/; revision=1542
2000-01-24 20:29:07 +00:00
Guy Harris a6c861577f Add spaces to the usage message, to match what was done to the Tethereal
usage message.

svn path=/trunk/; revision=1535
2000-01-24 05:06:39 +00:00
Guy Harris 0c7e180da6 Include the "-D" flag in the usage message.
svn path=/trunk/; revision=1533
2000-01-24 04:49:45 +00:00
Guy Harris f393a19883 Heikki Vatiainen's patch to add a flag to control whether to interpret
the IPv4 TOS field as a TOS field or as a DiffServ field, and allow that
field to be controlled by a command-line option or an option in the
"Display:Options" dialog box.

svn path=/trunk/; revision=1532
2000-01-24 04:44:58 +00:00
Guy Harris f09b4f0ace Use "strrchr()" instead of "rindex()" - "strrchr()" is the routine the
ANSI C standard specifies.

Fix up some menu stuff that should've been fixed when I put "Find Frame"
and "Go To Frame" under "Edit".

svn path=/trunk/; revision=1509
2000-01-18 19:01:35 +00:00
Guy Harris 766e37db65 Put into the "Capture Preferences" dialog box a check box to control
whether, in a live capture that updates the display as packets arrive,
the packet list pane should scroll to show the most recently captured
packets or not.

svn path=/trunk/; revision=1506
2000-01-18 09:25:04 +00:00
Guy Harris aa718b5e74 Put the "Find Frame" and "Go To Frame" menu items under "Edit"; leave
them under "Display" as well for now.

svn path=/trunk/; revision=1505
2000-01-18 09:05:30 +00:00
Guy Harris 4603877dc4 Jerry Talkington's changes to support, in the packet list and protocol
tree panes, menus popped up by the right mouse button.

svn path=/trunk/; revision=1504
2000-01-18 08:38:18 +00:00
Guy Harris 4aaff9af74 Squelch some complaints from GCC (and protect against the admittedly
unlikely possibility that, on some platform, converting a "gpointer" to
pointers of the types in question involves more than just reinterpreting
the bits of the "gpointer" value).

svn path=/trunk/; revision=1503
2000-01-17 20:30:17 +00:00
Gilbert Ramirez 0439185d4a Add Makefile.nmake to list of deliverables. I had sent Thomas Parvais
a tarball from the current CVS image using "make dist". That's why
he sent an e-mail today saying that the gtk/Makefile.namek was not
in CVS. It's in CVS, but it wasn't in the tarball I sent him.

svn path=/trunk/; revision=1501
2000-01-17 18:14:13 +00:00
Olivier Abad fdc1055f9f We have to #include "plugins.h" before using the HAVE_PLUGINS define.
svn path=/trunk/; revision=1500
2000-01-17 17:12:43 +00:00
Guy Harris 7f30e566a0 Move the routine to get a list of the network interfaces on the system
to "util.c", and provide a routine to free that list as well.

When picking an interface on which to do a capture (if no "-i" flag was
specified), use that routine, and pick the first interface on the list.

svn path=/trunk/; revision=1495
2000-01-16 02:48:12 +00:00
Gilbert Ramirez 34a287ee01 Remove libltdl from the build. The directory is still in CVS, but it is
not used in the build. I'll wait a few days to remove the libltdl
directory, just in case.

svn path=/trunk/; revision=1490
2000-01-15 13:25:22 +00:00
Gilbert Ramirez acc4ff5884 Move top-level window creation to separate function outside of
main().

svn path=/trunk/; revision=1489
2000-01-15 12:54:24 +00:00
Olivier Abad bc1b21d94f Add missing #ifdef HAVE_PLUGINS before calling init_plugins()
svn path=/trunk/; revision=1488
2000-01-15 10:50:23 +00:00
Guy Harris 278b21900a If no "-i" flag is specified to Tethereal when no file is to be read,,
or to Ethereal when the "-k" flag is specified, i.e. when a capture is
to be started immediately, use "pcap_lookupdev()" to pick an interface,
just as tcpdump does.

svn path=/trunk/; revision=1482
2000-01-15 06:05:21 +00:00
Gilbert Ramirez 339d67b043 Merge in the final code to make Ethereal run on Win32, compiled
with MSVC 6.0 and 'nmake', the make tool that comes with MSVC.

It compiles, links, and runs. It doesn't run correctly. There's a problem
when reading files. I'm getting short reads.  I'm not linking in zlib or
libsnmp because it first needs to be debugged.

I changed the plugin code to use gmodule instead of libltdl, but the
Unix build still links ethereal against libltdl. I'll fix that tonight; sorry
about leaving it in such a sad state, but I wanted to check in this code
before I left work on a Friday night. Ethereal still works, but the
building is less than optimal.

svn path=/trunk/; revision=1479
2000-01-15 00:23:13 +00:00
Olivier Abad cd15d6c0f8 Add an "Hex. Dump" radio button to the "Contents of TCP stream" window. It
displays the contents of the TCP connexion in hexadecimal.
The two opposite directions of the conversation are displayed side by side.

svn path=/trunk/; revision=1454
2000-01-12 22:07:56 +00:00
Gilbert Ramirez 1990d5fb5c Some initial changes for win32 support, but not all.
Added lots of #ifdef HAVE_*_H wrappers.
Added some #defines in config.h.win32
Check for more headers in configure.in
Added prototype for inet_aton() in inet_v6defs.h.
Changed "BYTE" token (i.e., #define) in ascend-gramamr.y because it
conflicts with a windows definition. Use HEXBYTE instead.

svn path=/trunk/; revision=1448
2000-01-10 17:33:17 +00:00
Guy Harris 9fe38ca2b5 Move the code in "column.c" that implements the column preferences tab
into "gtk/column_prefs.c".

Get rid of "get_column_width()" - instead, export
"get_column_longest_string()", and have "get_column_width()"'s callers
make the GDK call to get the width of that string, so that "column.c"
contains no GTK+/GDK code.

svn path=/trunk/; revision=1447
2000-01-10 01:44:00 +00:00
Guy Harris 0452dfe11e Allow people to print packets if there are packets to print, even if
we're in the middle of an "Update list of packets in real time" capture.

svn path=/trunk/; revision=1440
2000-01-08 23:34:50 +00:00
Guy Harris d0e7e804f9 Fix the "Print" button in the window popped up by "Follow TCP Stream" to
print only the actual stream data, not the address and port binary
information.

Fix it to handle the ASCII/EBCDIC selection as well.

svn path=/trunk/; revision=1427
2000-01-06 08:20:13 +00:00
Guy Harris c4a7eb6457 Printing multiple pages of PostScript wasn't as tricky as I thought; add
support for printing in PostScript to the "Print..." dialog box.

svn path=/trunk/; revision=1426
2000-01-06 07:33:35 +00:00
Guy Harris 9607209dcc Don't bother checking whether the filter string is empty - just use it
even if it's empty, rather than using an empty string instead of it if
it's empty.

Also, "gtk_entry_get_text()" appears, from the documentation, always to
return a non-null pointer (and it returned a non-null pointer when I
started a capture with an empty filter string); don't supply a null
string if it's null, just do a "g_assert()" to make sure it's non-null.

Put in a comment explaining why we aren't trying to be clever and
detecting an empty filter string and setting "cf.filter" to NULL if it's
empty.

svn path=/trunk/; revision=1423
2000-01-06 05:09:01 +00:00
Gerald Combs 5b8384f5e1 When initializing a capture filter, assign a pointer to an empty string
instead of NULL.

svn path=/trunk/; revision=1422
2000-01-05 22:31:46 +00:00
Olivier Abad a04e67e0ab Implement plugins status save/restore :
Add a "Save status" button to the Plugins window which saves the status
(enabled/disabled) and the filter used by all the plugins in
~/.ethereal/plugins.status

Moved plugins_scan_dir() from gtk/plugins_dlg.c to plugins.c because it is
GUI independent. Read plugins.status in this function and restore the saved
status.

Add a init_plugins() function in plugins.c which calls plugins_scan_dir() in
order to build the plugin_list. It is called by ethereal_proto_init() in
gtk/main.c

svn path=/trunk/; revision=1417
2000-01-04 20:37:18 +00:00
Olivier Abad a12e96ee07 Add a "Default" button to reset the filter string to its default value.
svn path=/trunk/; revision=1415
2000-01-03 20:18:25 +00:00
Guy Harris 4096029a66 Take the "simple_dialog()" stuff out of "ui_util.h" and "gtk/ui_util.c",
and move it to "simple_dialog.h" and "gtk/simple_dialog.c".

svn path=/trunk/; revision=1414
2000-01-03 06:59:25 +00:00
Guy Harris 302c116483 Don't have "write_prefs()" display a dialog box if the attempt to open
the preferences file fails, have it return an error indication and the
path of the preferences file, and have its caller display the dialog
box.  That way you don't have to drag in the dialog box code if you're
going to use the preferences code in, say, a "line-mode" Ethereal.

svn path=/trunk/; revision=1413
2000-01-03 06:29:39 +00:00
Guy Harris 77e59876a7 Use the right #define to control inclusion of "ui_util.h".
svn path=/trunk/; revision=1412
2000-01-03 06:28:44 +00:00
Guy Harris 91801fd5dd Make "menus_init()", set_menu_sensitivity()", and "grp" static to
"gtk/menu.c", as they're not used outside it.

Move the definition of "GTK_MENU_FUNC()" from "gtk/menu.h" to
"gtk/menu.c", as it's not used outside of "gtk/menu.c".

Get rid of the declaration of "menus_create()" in "gtk/menu.h", as that
routine doesn't exist.

svn path=/trunk/; revision=1411
2000-01-03 04:06:09 +00:00
Guy Harris 2ef301bcf6 Have "gtk/menu.c" (and, in the future, code for other UIs) export a set
of routines to enable and disable various sets of menu items; call only
those routines, not routines to enable or disable particular menu items,
from files in the top-level directory, as other UIs may not refer to
menu items with path strings of the sort used in GTK+, and as this
buries knowledge of the menu items available in "gtk/menu.c" rather than
requiring stuff outside of "gtk/menu.c" to know what menu items exist.

svn path=/trunk/; revision=1410
2000-01-03 03:57:04 +00:00
Gilbert Ramirez 5694165915 A little hack for the really lazy (i.e., me). Allow users to type a
directory name in the filename box in the file open dialoge box. If what
you type is a directory, the file selection gui chdir's to that diretory
and shows you the files in that directory.

svn path=/trunk/; revision=1405
2000-01-01 04:28:45 +00:00
Gilbert Ramirez 8be6563d38 Allow user to modify appearance of lines and expanders in GUI protocol
tree.

svn path=/trunk/; revision=1400
1999-12-30 23:02:56 +00:00
Gilbert Ramirez df9ce260fb Disallow multiple selections in the CTree and CList widgets.
In order to use GTK_SELECTION_BROWSE correctly, I had to set auto_resize
to TRUE for the GtkCTree column.

Yes, I'm using terminology that's opposite that of GTK+.

When I say the selection bar "browses", I mean that you can browse the rest
of the widget with an outline selection bar, without changing the
selection. This corresponds to mode GTK_SELECTION_SINGLE.

When I say "select", I mean that the arrow keys change the selection.
This corresponds to mode GTK_SELECTION_BROWSE.

Go figure. But I like my terminology better.

svn path=/trunk/; revision=1398
1999-12-30 19:53:11 +00:00
Gilbert Ramirez 8162d65615 Changed the protocol tree widget from a GtkTree to a GtkCTree. The two reasons
I did this:

First, Havoc Pennington, in "GTK+/Gnome Application Development", in
Appendix seciton A.3.88, recommends using GtkCTree instead of GtkTree
because GtkCtree is faster, and GtkTree has limitation on its total row
height: since it must fit inside a GdkWindow, it is limited to 32,768
pixels of height. GtkTree is more flexible with regards to the types of
widgets that can be placed in the tree, but since we deal only with text,
that doesn't matter, at least for now.

Secondly, a GtkTree doesn't allow arrow-key navigation (at least as far
as I could tell). It always bothered me that the up and down arrow keys
worked in the packet list and in the hex dump, but no in the protocol tree.
GtkCTree does allow arrow-key navigation. In fact, GtkCTree is a subclass
of GtkCList (the packet list widget), so they behave a lot alike.

I went ahead and fixed the selection bar which has been bothering Richard
for a long time now. :) In the GUI preferences dialogue, you can now set
both the packet list selection bar and the protocol tree selection bar
to either "browse" or "select" mode. "browse" mode is what you're used to:
the arrow keys move an outline of the selection bar, but do not change
the selection. "select" mode does change the selection when the arrow keys
are pressed. The default behavior is set to "select", which seems more
natural for a first-time user.

svn path=/trunk/; revision=1393
1999-12-29 20:10:12 +00:00
Guy Harris 868eb7518a Update a comment.
svn path=/trunk/; revision=1390
1999-12-29 07:39:51 +00:00
Guy Harris b0a46e6052 Move the definition of "prefs" from "gtk/prefs_dlg.c" to "prefs.c", so
that you don't have to have "gtk/prefs_dlg.c" to get it defined - future
non-GTK (text mode, curses, etc.) programs wouldn't have it.

svn path=/trunk/; revision=1387
1999-12-29 05:53:48 +00:00
Gerald Combs 335f0b4647 Add support for "--with-plugindir=<plugin install dir>" to configure.
Make the default plugindir $(libdir)/ethereal/plugins/0.8.  Ethereal now
looks for plugins in the following directories:
  /usr/lib/ethereal/plugins/0.8
  /usr/local/lib/ethereal/plugins/0.8
  $plugindir (if different from above)
  $HOME/.ethereal/plugins

svn path=/trunk/; revision=1382
1999-12-28 04:40:24 +00:00
Gerald Combs 45babe7bb5 Integrate libtool/libltdl with the plugin code. Add libtool and libltdl
to the distribution.

svn path=/trunk/; revision=1379
1999-12-26 22:38:07 +00:00
Guy Harris b96ac8c220 I thought I'd seen a problem with the combo box in the "Capture:Start"
dialog box if we hadn't found any interfaces on which we could capture,
but perhaps the problem was that "gtk_combo_set_popdown_strings()"
doesn't like it if you set the list of items to a NULL list - if you
don't set it at all, you get a combo box with only one blank entry in
the list, but you don't seem to get complaints from GTK+ 1.2.6, at
least.

Pop up the "Capture:Start" dialog box even if we don't find any
interfaces on which we could capture; at least this way, they won't just
get confronted with a

	There are no network interfaces that can be opened.
	Please check to make sure you have sufficient permission
	to capture packets.

message box and no way to give us any more information other than "it
said 'There are no network interfaces that can be opened...'" - they can
at least try the interfaces that *should* work, and report the error
messages they get, giving us a better chance at figuring out what the
problem is.

Trim white space from the entry in that combo box, and, if there isn't
anything other than possibly white space, pop up a

	You didn't specify an interface on which to capture packets.

message box and leave the dialog box up so that the user can supply an
interface name.

svn path=/trunk/; revision=1373
1999-12-23 09:31:09 +00:00
Guy Harris a4738ae15a Move the code to raise a window into a "reactivate_window()" routine,
and have that routine also de-iconify the window.

svn path=/trunk/; revision=1365
1999-12-20 06:05:15 +00:00
Gilbert Ramirez f34e877593 Add a new page to the Preferences notebook: a GUI page. The sole
option right now is the placement of the vertical scrollbars in the 3 panes.
(it's one decision; you can't have the placement of the vertical scrollbar
in the packet list pane different than the placement in the protocol tree
pane, for example).

I did this because I find it convenient to have the vertical scrollbars
on the *left* side of the text. My mouse cursor is usually expanding and
collapsing the protocol tree widgets, and once the protocol tree changes
size, I usually have to scroll. I'd rather move my mouse cursor just a few
pixels over to find the vertical scrollbar.

svn path=/trunk/; revision=1351
1999-12-16 06:20:18 +00:00
Gilbert Ramirez 1063eaaecc Reduce the About box to a reasonable size. Gerald's name remains
with the copyright, and everyone else has been relegated to the
man page and AUTHORS file.

svn path=/trunk/; revision=1350
1999-12-16 04:11:33 +00:00
Guy Harris e588b8057b A first cut, untested.
svn path=/trunk/; revision=1347
1999-12-15 08:20:30 +00:00
Gilbert Ramirez e996e3d661 Oops. My last commit was made form the wrong tree and code that
was under development was accidentally checked in. This reverses the
changes.

svn path=/trunk/; revision=1342
1999-12-15 07:03:11 +00:00
Gilbert Ramirez b906ce0a17 Add Dearborn Group Technology's Gryphon dissector as our first
shipped plugin.

svn path=/trunk/; revision=1341
1999-12-15 06:53:36 +00:00
Guy Harris 096134536e Stuart Stanley's ISIS dissection support.
svn path=/trunk/; revision=1340
1999-12-15 04:34:44 +00:00
Gilbert Ramirez 423b152c0c Do a better check of 'bend'. The code works w/o it, but only because
I got lucky when I introduced 'bend'. The behavior is the same, but
now it's due to planning, not luck.

svn path=/trunk/; revision=1324
1999-12-14 06:52:09 +00:00
Gilbert Ramirez 66674a789e Remove the horizontal scroll bar under the hex dump. It did nothing
at all since the GtkText widget does not scroll horizontally (it says
so in the GTK+ docs and in the gtktext.c file in the GTK+ distribution).
Even if the Ethereal window is shrunk horizontally, the text widget will
line wrap (we could turn that off, but it just truncates the line, instead
of making the text widget horizontally-scrollable).

Also, change the packet list scrollbar policy to AUTOMATIC so that scroll
bars only appear when needed. This is how the protocol tree pane has
been configured already.

svn path=/trunk/; revision=1308
1999-12-13 04:20:33 +00:00
Gilbert Ramirez 490fcbb775 One final fix to the 3-pane GUI behavior. Now when the the Ethereal
window is extended veritically, either up or down, the packet list
and hex dump pane sizes stay the same, and the protocol tree pane
is the one that grows. Hurrah! Of course you can still modify the
size of each pane with the little separator between each pane.

svn path=/trunk/; revision=1307
1999-12-13 03:45:33 +00:00
Gilbert Ramirez 4a15f6582a Added Bert Driehuis <driehuis@playbeing.org>'s I4B wiretap module
and V.120 decoder.

svn path=/trunk/; revision=1304
1999-12-12 22:40:10 +00:00
Olivier Abad 7aef27dd3c Avoid loading "." and ".." when scanning directories for plugins
svn path=/trunk/; revision=1299
1999-12-12 10:22:41 +00:00
Gilbert Ramirez d85f804b4b Add the who protocol (rwho/rwhod/ruptime)
In packet_hex_print(), compute (bstart + blen) only once.

In time_secs_to_str(), return a meaningful string when time == 0, instead
of returing pointer to char buffer with old, inappropriate data in it.

svn path=/trunk/; revision=1297
1999-12-12 05:11:57 +00:00
Guy Harris 19af67b894 Change the comments to reflect the fact that this is now no longer a tab
of the "Edit:Preferences" dialog box.

svn path=/trunk/; revision=1279
1999-12-10 07:20:57 +00:00
Guy Harris f47ff8dfd0 Squelch a GCC complaint.
svn path=/trunk/; revision=1278
1999-12-10 07:04:30 +00:00
Gilbert Ramirez 53017596ca Make the protocol tree GUI pane associate with the packet list pane
instead of the hex dump pane.

svn path=/trunk/; revision=1276
1999-12-10 06:44:39 +00:00
Guy Harris 7537c5cc73 Jerry Talkington's patch to remove the filter stuff from
"Edit:Preferences" and put it directly under "Edit:Filters", and to add
an "Apply" button to it, which makes the currently selected filter the
current filter and applies it to the current capture.

svn path=/trunk/; revision=1275
1999-12-10 06:28:24 +00:00
Gilbert Ramirez 71b7cd5031 Move GTK code out of summary.c and into gtk/summary_dlg.c
summary.c now provides a struct of info (see summary.h)

Changed the name of the summary dialogue callback (hence the change
in menu.c), and added a close button to the dialogue.

Moved #include <gtk/gtk.h> out of print.c and into prefs.h where it
was needed for GdkColor.

svn path=/trunk/; revision=1273
1999-12-10 04:21:04 +00:00
Olivier Abad 7ce8202f00 Put in an RCS ID.
svn path=/trunk/; revision=1267
1999-12-09 20:55:49 +00:00
Olivier Abad 564a1c1d62 plugins support (i.e. Dynamically loadable dissectors)
depends on dlopen() being available on the target platform

svn path=/trunk/; revision=1263
1999-12-09 20:43:38 +00:00
Guy Harris 80618858d6 Move the GTK+ implementations of various UI utilities out of "util.c"
into "gtk/ui_util.c", and move the declarations of those UI utilities
out of "util.h" into "ui_util.h".  (The header file is in the top-level
directory, rather than the "gtk" directory, because it declares
window-system-independent interfaces to routines with
window-system-dependent implementations.)

Add to "gtk/ui_util.c" a routine to set the window and icon title.

Use that routine to make the title of an Ethereal top-level window be

	{filename} - Ethereal

if there's a capture open, and have "{filename}" be "<capture>" if it's
a temporary capture file.

svn path=/trunk/; revision=1255
1999-12-09 07:19:20 +00:00
Guy Harris 6198327782 Add Dave Chapeskie's name to the list of contributors.
svn path=/trunk/; revision=1240
1999-12-07 22:59:31 +00:00
Guy Harris 4c691e81ad It appears that the IRIX SIOCSNOOPLEN "ioctl", as used by "libpcap" to
set the capture length on IRIX, may fail if the capture length supplied
is too large, rather than just truncating it.  Use MIN_PACKET_SIZE,
rather than WTAP_MAX_PACKET_SIZE, in our sample open.

Let's hope some *other* platform doesn't barf if the capture length is
too *small*....

(Sigh.  Would that "pcap_open_live()" accepted 0 as a capture size,
meaning "give me the whole packet".  Unfortunately, it doesn't, so IRIX
users may have to crank the capture size back in the capture dialog
box.)

svn path=/trunk/; revision=1239
1999-12-07 22:11:02 +00:00
Gilbert Ramirez 1b7ba3f862 Remove 3 GTK+ header files and have our gtkclist.c use
the the system version of the gtk header files.

svn path=/trunk/; revision=1238
1999-12-07 22:06:27 +00:00
Guy Harris b01c9d20d4 Add the "-R" flag to the usage message.
Don't list capture-oriented flags in the usage message if Ethereal was
built without "libpcap".

If a capture-oriented flag is given to an Ethereal built without
"libpcap", print a message noting that and give a usage message.

Print only one usage message, even if more than one bad command-line
flag is given.

svn path=/trunk/; revision=1236
1999-12-07 07:12:49 +00:00
Guy Harris e5f812d6ed James Coe's patch to add SRVLOC and NCP-over-IP support.
svn path=/trunk/; revision=1234
1999-12-07 06:13:19 +00:00