aboutsummaryrefslogtreecommitdiffstats
path: root/prefs.c
Commit message (Collapse)AuthorAgeFilesLines
* When reading the preferences file, if the "module.preference" stringGilbert Ramirez2001-11-191-18/+35
| | | | | | | | | | references an unknown module, check the "preference" part to see if another "." is found; iterate until a known module is found, or until nor more "."'s are found. Needed for the new "x.25.non_q_bit_is_sna" preference. svn path=/trunk/; revision=4225
* Fix a couple of comments.Guy Harris2001-11-091-4/+4
| | | | svn path=/trunk/; revision=4187
* Allow periods in module names.Gilbert Ramirez2001-11-081-2/+2
| | | | svn path=/trunk/; revision=4177
* Allow a dissector to register preferences that it no longer supports asGuy Harris2001-11-041-3/+95
| | | | | | | | | | | | | | | | | | | | | | obsolete; we silently ignore attempts to set those in a preferences file, so that we don't spam the user with error messages caused by them having saved preferences in an earlier release that contained those preferences. Make the Diameter and iSCSI dissectors register obsolete preferences. Crash if some code tries to register a preferences module with a name that contains something other than lower-case ASCII letters, numbers, or underscores, or that has already been registered, or if some code tries to register a preference with a name that contains something other than lower-case ASCII letters, numbers, underscores, or periods, or that has already been registered, so that we don't put code like that in a release and have to shovel code into "prefs.c" to fix it up later. (The problem with multiple modules or preferences with the same name should be obvious; the problem with names with blanks, or upper-case letters, or punctuation, is that they're a pain to type on the command line.) svn path=/trunk/; revision=4148
* Crash if a dissector tries to create more than one preference with theGuy Harris2001-11-031-3/+17
| | | | | | | | | | | | same name; if that happens, there's no way to tell to which of them a line in a preferences file, or an option supplied with "-o", refers, so it's clearly a bug in the code. This has happened in the past, and fixing that required some preference renaming *and* code in the preferences-file-reading code to try to preserve the user's settings and not spew warnings when starting Ethereal or Tethereal; let's try to catch it *before* the code gets into the code base. svn path=/trunk/; revision=4143
* Have a routine that takes a file name for a personal configuration fileGuy Harris2001-10-241-20/+5
| | | | | | | | | | and generates the path name; have it, if the file is to be opened for reading on Win32, check whether it exists and, if not, check for it in the old home directory-based configuration directory and, if so, return that path instead, so that files saved with earlier versions of Ethereal will be seen. svn path=/trunk/; revision=4072
* Add a new routine to create the ".ethereal" directory for a user.Guy Harris2001-10-231-22/+1
| | | | | | | | | | | | | Use that routine rather than duplicating that code in the routines to write out the preference file and filter files. Use it in the code for the color filter dialog, so that the directory in question is created if necessary. As that routine returns an error indication, have the code that calls that routine put up a message box if the attempt fails. svn path=/trunk/; revision=4065
* Add a routine to get the directory in which personal configuration filesGuy Harris2001-10-221-28/+38
| | | | | | | | | | reside. Use it, rather than concatenating the user's home directory and ".ethereal" in a number of files. Fix up some additional places to use G_DIR_SEPARATOR_S as the pathname separator. svn path=/trunk/; revision=4061
* Use G_DIR_SEPARATOR_S rather than "/" as a pathname separator in formatGuy Harris2001-10-211-6/+8
| | | | | | | | | | | | | | | | strings used to generate pathnames. Move the definition of PF_DIR from <epan/epan.h> to <epan/filesystem.h>, so that files requiring only the definition of PF_DIR don't have to include <epan/epan.h>, and get rid of no-longer-necessary includes of <epan/epan.h>. Add a routine to get the directory for "system files" such as "/etc/ethers" - it's "/etc" on UNIX, and the datafile directory on Windows (as there's no "/etc" on Windows). Use that to construct the pathname of the ethers and ipxnet files. svn path=/trunk/; revision=4056
* Keep the list of modules with preferences sorted by the module name, inGuy Harris2001-10-211-2/+11
| | | | | | | dictionary order (case-insensitive), so that they show up in order in the "Preferences" dialog box. svn path=/trunk/; revision=4052
* The Quake3 dissector wasn't in the previous release, only users runningGuy Harris2001-10-161-29/+9
| | | | | | | | CVS versions would've had "quake3.udp.port" in the preferences file; therefore, we can remove the code to map them to "quake3.udp.arena_port" and "quake3.udp.master_port". svn path=/trunk/; revision=4034
* The Quake III dissector called both the arena server port preference andGuy Harris2001-10-131-54/+76
| | | | | | | the master server port preference "quake3.udp.port"; rename them to "quake3.udp.arena_port" and "quake3.udp.master_port". svn path=/trunk/; revision=4023
* On Windows, use the directory in which the binary resides as theGuy Harris2001-08-211-7/+14
| | | | | | | | | | | | | | | | | | | | | | directory in which global data files are stored. If an installed binary is being run, that's the correct directory for them; if a build-tree binary is being run, the "manuf" file will be there, and you can put other data files there as well, if necessary. Do the same with plugins, except that, if there's no "plugins\\{version}" subdirectory of that directory, fall back on the default installation directory, so you at least have a place where you can put plugins for use by build-tree binaries. (Should we, instead, have the Windows build procedure create a subdirectory of the "plugins" source directory, with the plugin version number as its name, and copy the plugins there, so you'd use the build-tree plugin binaries?) Move "test_for_directory()" out of "util.c" and into "epan/filesystem.c", with the other file system access portability wrappers and convenience routines. Fix "util.h" not to declare it - or other routines moved to "epan/filesystem.c" a while ago. svn path=/trunk/; revision=3858
* Use an unsigned character when processing string lists, so that you canGuy Harris2001-07-231-2/+3
| | | | | | | use "isspace()" on them without getting screwed by negative array subscripts. svn path=/trunk/; revision=3780
* Make "put_string_list()" truly take a GList of strings as arguments;Guy Harris2001-07-231-55/+57
| | | | | | | generate such a list from the list of column format information and hand the resulting list to "put_string_list()" when writing out the preference. svn path=/trunk/; revision=3779
* Reformat to be a bit closer to the way it looked before the parserGuy Harris2001-07-221-13/+12
| | | | | | changes. svn path=/trunk/; revision=3778
* Ignore non-quoted white space in string lists.Guy Harris2001-07-221-49/+96
| | | | | | | Backslash-escape backslashes and double quotes when writing string lists out. svn path=/trunk/; revision=3777
* "col_format_to_pref_str()" is used only in "prefs.c", and knows aboutGuy Harris2001-07-221-2/+52
| | | | | | | | the format of string lists in a preferences file; rename it to "put_string_list()", make it take the list as an argument rather than working only on "prefs.col_list", and put it in "prefs.c". svn path=/trunk/; revision=3776
* Check for valid column titles (non-zero-length) and valid column formatsGuy Harris2001-07-221-8/+31
| | | | | | | | | | in preference settings. In the process of doing that, fix a memory leak (we were handing a null pointer, rather than a pointer to the list of strings in "column.format", to "clear_string_list()"). svn path=/trunk/; revision=3775
* Don't require the strings in string lists to be quoted, just allow themGuy Harris2001-07-221-50/+77
| | | | | | | | | | | | to be quoted. Correctly handle backslash-quoting in string lists. Return an error if the "get_string_list()" indicates that "column.format" string list is syntactically invalid or if it doesn't contain an even number of entries. svn path=/trunk/; revision=3773
* Various signed vs. unsigned fixes, from Joerg Mayer.Guy Harris2001-06-181-3/+3
| | | | svn path=/trunk/; revision=3560
* Make Ethereal default to promiscuous-mode captures, the way it didGuy Harris2001-06-041-6/+5
| | | | | | | | | | before promiscuous-vs-non-promiscuous was made a preference in the preferences file (I suspect at least some of the problems people are seeing with captures on Windows not seeing all the traffic they expect to see might be due to the captures not being done in promiscuous mode - and the default behavior shouldn't have changed in any case). svn path=/trunk/; revision=3511
* Support for "-N" flag enabling selected forms of name resolution, fromGuy Harris2001-05-311-13/+86
| | | | | | | | | | | | Joerg Meyer. Support for saving to the preferences file the settings for all types of name resolution. Do a case-insensitive check for "true" and "false" in Boolean preference settings. svn path=/trunk/; revision=3489
* There's no "enable name resolution in captures" preference in Ethereal,Guy Harris2001-04-151-10/+20
| | | | | | | | | | | | and never was - there's only an Ethereal-wide "enable name resolution" preference. Name it just "name_resolve". Replace all tests of "g_resolving_actif" with tests of "prefs.name_resolv", and replace all code that sets "g_resolving_actif" with code that sets "prefs.name_resolv", so that the setting of "prefs.name_resolv" actually affects whether names are resolved or not. svn path=/trunk/; revision=3300
* Added the ethereal capture preferences to the preference file.Jeff Foster2001-04-131-1/+50
| | | | svn path=/trunk/; revision=3298
* "get_home_dir()", in "epan/filesystem.c", usesGuy Harris2001-04-021-2/+2
| | | | | | | | | | | | | "find_last_pathname_separator()" on Win32; move the other pathname manipulation routines from "util.c" into "epan/filesystem.c". Remove from "util.h" the declarations of routines not defined in "util.c", and put them into "epan/filesystem.h" if they're not already there. Adjust #includes to make the above work. svn path=/trunk/; revision=3241
* Map the old MGCP preference names to the new ones (including a specialGuy Harris2001-01-051-5/+80
| | | | | | hack to handle the two copies of "mgcp.{tcp,udp}.port" as best we can). svn path=/trunk/; revision=2832
* Add a new "prefs_register_protocol()" routine, which is likeGuy Harris2001-01-031-1/+13
| | | | | | | | | | | | "prefs_register_module()" except that it takes a protocol index as returned by "proto_register_protocol()" as its first argument, rather than taking two character strings as arguments as its first two arguments, and uses the protocol's abbreviation as the name to use for preferences in the preferences file and the "-o" flag and uses the protocol's short name as the name to use in the tabs in the "Edit->Preferences" window. svn path=/trunk/; revision=2812
* Have "proto_register_protocol()" build a list of data structures forGuy Harris2001-01-031-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | protocols, in addition to adding structures to the list of filterable fields. Give it an extra argument that specifies a "short name" for the protocol, for use in such places as pinfo->current_proto; the dialog box for constructing filters; the preferences tab for the protocol; and so on (although we're not yet using it in all those places). Make the preference name that appears in the preferences file and the command line for the DIAMETER protocol "diameter", not "Diameter"; the convention is that the name in question be all-lower-case. Make some routines and variables that aren't exported static. Update a comment in the ICP dissector to make it clear that the dissector won't see fragments other than the first fragment of a fragmented datagram. svn path=/trunk/; revision=2810
* Fix a number of problems that caused compiles to fail ifGuy Harris2000-11-181-5/+5
| | | | | | PLUGINS_NEED_ADDRESS_TABLE was defined. svn path=/trunk/; revision=2662
* At least on UNIX/X, make the wildcard pattern that's the initialGuy Harris2000-10-151-2/+47
| | | | | | | | | | | | | fixed-width font preference match only ISO 8859/1 fonts, so that we don't match ISO 10646 fonts (as happens on some systems). Users will have to select a font with the appropriate character set encoding if they don't want stuff displayed as 8859/1 (note that making the widgets that use the fixed-width font handle arbitrary character sets is probably a non-trivial task, given that the *dissectors* will also have to handle arbitrary character sets, and that the character set used in a given packet isn't necessarily the character set in the user's locale). svn path=/trunk/; revision=2496
* More EPAN-related code movements. Get rid of usage of #include "globals.h"Gilbert Ramirez2000-09-281-1/+2
| | | | | | | and #include "util.h" from epan code. Move get_home_dir() into epan/filesystem.c as it's used by plugins.c. svn path=/trunk/; revision=2461
* Oops, I left off one "-*" in the XLFD description for the font that isGuy Harris2000-09-121-2/+2
| | | | | | | | 6x13 on most UNIXes (frankly, I think XLFD should have been hidden very deeply in the bowels of most X toolkits, and not even exposed to most programmers, much less to users). svn path=/trunk/; revision=2420
* Graham Bloice's patch to support inverse video rather than boldfaceGuy Harris2000-09-081-1/+13
| | | | | | | | | | highlighting of the bytes, in the hex dump window, corresponding to a selected field. Also, make "remember_ptree_widget()" static, as it's not used outside "gtk/proto_draw.c". svn path=/trunk/; revision=2399
* Add prefs.gui_marked_[fb]g color preferences for theLaurent Deniel2000-08-211-1/+37
| | | | | | | | | 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
* Instead of each set of built-in preferences having "ok", "save",Guy Harris2000-08-211-8/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "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
* Instead of having the normal-weight and bold fonts set separately,Guy Harris2000-08-201-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix a problem with const char *Laurent Deniel2000-08-151-2/+2
| | | | svn path=/trunk/; revision=2276
* Implements the "Properties" menu item which displays the preferences windowLaurent Deniel2000-08-151-1/+20
| | | | | | | | | | | | 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
* Miscellaneous code cleaningLaurent Deniel2000-08-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* Cast an argument to "isspace()" to "guchar" so that if it has the 8thGuy Harris2000-08-071-2/+2
| | | | | | | | 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 preferences file. svn path=/trunk/; revision=2221
* Turn the code of "colorize_packet()" into a static routine that is givenGuy Harris2000-07-091-10/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add support for a global "ethereal.conf" preferences file, stored in theGuy Harris2000-07-051-43/+542
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove instances of getenv("HOME") and provide a get_home_dir() functionGilbert Ramirez2000-01-291-6/+7
| | | | | | which provides a default value if "HOME" is not set. svn path=/trunk/; revision=1579
* Don't have "write_prefs()" display a dialog box if the attempt to openGuy Harris2000-01-031-8/+12
| | | | | | | | | 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
* Allow user to modify appearance of lines and expanders in GUI protocolGilbert Ramirez1999-12-301-3/+48
| | | | | | tree. svn path=/trunk/; revision=1400
* Changed the protocol tree widget from a GtkTree to a GtkCTree. The two reasonsGilbert Ramirez1999-12-291-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Move the definition of "prefs" from "gtk/prefs_dlg.c" to "prefs.c", soGuy Harris1999-12-291-1/+3
| | | | | | | 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
* Add a new page to the Preferences notebook: a GUI page. The soleGilbert Ramirez1999-12-161-1/+15
| | | | | | | | | | | | | | | 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
* Move the GTK+ implementations of various UI utilities out of "util.c"Guy Harris1999-12-091-2/+2
| | | | | | | | | | | | | | | | | | | 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