aboutsummaryrefslogtreecommitdiffstats
path: root/file.c
AgeCommit message (Collapse)AuthorFilesLines
2012-06-20Handle the case where the user has added comments to a file that's notGuy Harris1-0/+9
in a format that supports comments and they do a "Save" by popping up a similar question to the one we pop up in the "Save As" case and, if they say "choose another format", pop up a "Save As" dialog box. svn path=/trunk/; revision=43395
2012-06-20If the file has an SHB comment or any packet comments, and the userGuy Harris1-6/+48
tries to do "Save As" in a format for which we don't support comments (currently, we only support them for pcap-ng), ask whether they want to discard the comments and save anyway or, *if* the file can be saved in a format for which we *do* support comments, they want to save the file in some other format. Keep a count of packet comments so that we don't have to scan all the frame_data structures to determine whether we have any comments. svn path=/trunk/; revision=43392
2012-06-17Add "simple dialog" routines to pop up modal message boxes. Use them inGuy Harris1-204/+172
file.c and routines called from it; non-modal dialogs end up, in some cases, either hidden, devoid of the input focus and not dismissable, or both. svn path=/trunk/; revision=43321
2012-06-17Export a wtap_dump_can_write_encaps() routine from Wiretap; it takes aGuy Harris1-2/+2
file type and a GArray of encapsulation types and returns TRUE if a capture with all those encapsulation types can be written to a file in that file type and FALSE otherwise. Use it where appropriate. svn path=/trunk/; revision=43315
2012-06-15For a capture file, keep an array of all encapsulation types seen.Guy Harris1-3/+44
Show all of them in the summary dialog; we will be using it in the future to figure out what capture file formats we can write to (just because a capture file format supports per-packet encapsulations, that doesn't mean that it supports *all possible* encapsulations). svn path=/trunk/; revision=43278
2012-06-10Clear GtkTreeStore before freeing edtJakub Zawadzki1-8/+13
When building current data for packet details treeview we store two things. - Generated string with item label - Pointer to node field_info structure After epan_dissect_{free, cleanup} pointer to field_info node is no longer valid so we should clear GtkTreeStore before freeing. svn path=/trunk/; revision=43188
2012-06-05If we do a Save or Save As with a move, don't reread the capture file,Guy Harris1-39/+295
just tweak the elements in the capture_file structure as necessary and poke the UI to update stuff such as the windows title. If we do a Save or Save As with a copy, don't reread the capture file, just close the old wtap, open a wtap for the copy, and tweak the elements in the capture_file structure as necessary and poke the UI to update stuff such as the windows title. Otherwise, don't do a full read-and-dissect pass on the capture file, just close the old wtap, open a wtap for the new file, tweak the elements in the capture_file structure as necessary and poke the UI to update stuff such as the windows title, and rescan the file to update the packet offsets (and cause Wiretap to regenerate, for a gzipped file, the information needed to support fast random access to the gzipped file). This should speed up Save and Save As a bit, as well as removing some glitches in the UI (e.g., you won't see the packet list disappear and reappear). svn path=/trunk/; revision=43101
2012-06-05Fix some comments.Guy Harris1-2/+2
svn path=/trunk/; revision=43096
2012-06-05Distinguish between "failed" and "user stopped it" for "save as" andGuy Harris1-26/+43
"export specified packets". For "failed", let the user try again with a different file, in case it failed due to, for example, running out of space or quota (probably the most likely failure mode for writing, and trying to a different volume might be the best workaround). For "user stopped it", presumably they don't want to try again (the most likely reason is "it was taking too damn long"). Put "Exporting to: ...", not "Saving: ..." in the statusbar if we're doing "export specified packets". In process_specified_packets(), allow a null range pointer to be specified, meaning "save 'em all"; that avoids the possibly-expensive (with a large capture) operation of initializing the range. If a "safe save" atop an existing file fails or is stopped, get rid of the temporary file we created. svn path=/trunk/; revision=43095
2012-06-03As we might use cf->lnk_t while a capture is in progress, we need upGuy Harris1-4/+6
update it after each burst of packets. (This is broken - we should have cf->lnk_t be WTAP_ENCAP_PER_PACKET in all capture file formats that can handle more than one packet type, and, in order to support writing out *some* such files in formats that can only handle one packet type, just use the type of the first packet when doing a one-pass operation and gather up all the packet types in a multi-pass operation.) svn path=/trunk/; revision=43048
2012-06-03g_filename_display_basename() returns a g_mallocated string, so itsGuy Harris1-6/+9
callers either need to free it or their callers need to free it or.... This means that cf_get_display_name() must always return a g_mallocated string and its callers or... must free it. For some of those callers, create a new set_window_title() routine to do the work - they're all using the same pattern. svn path=/trunk/; revision=43047
2012-06-03Use g_filename_display_basename() rather than get_basename() when we'reGuy Harris1-2/+2
getting the basename for display purposes, so it's converted from the GLib/GTK+ locale filename encoding to UTF-8. (For Windows, the locale filename encoding is UTF-8, and the internal encoding is UTF-16, so the file names should *probably* all be valid UTF-8 - Windows may not support invalid UTF-16 in file names. For Qt, I'm not sure whether the file dialogs ever return file names in some non-UTF-8 encoding.) svn path=/trunk/; revision=43044
2012-06-03Update a comment.Guy Harris1-2/+3
svn path=/trunk/; revision=43043
2012-06-02If the rename in a safe "Save As" fails, the current file's name hasGuy Harris1-4/+5
*not* changed; what we need to, on Windows, reopen is the *old* file name, not the name we're saving as. svn path=/trunk/; revision=43003
2012-06-01TShark doesn't need wtap_fdreopen(), as it doesn't do saves and thusGuy Harris1-2/+3
doesn't do safe saves, so wtap_fdreopen() always needs to reopen the random file descriptor. At the point where a safe save is done, the sequential read is done, so the sequential stream is closed; there's no need to reopen it. (The former fourth argument to wtap_fdreopen() wasn't an indication of whether the file was compressed, it was an indicationof whether the random stream should be reopened.) svn path=/trunk/; revision=42977
2012-06-01make it compile.Anders Broman1-1/+1
I suppose we do random access if compressed. svn path=/trunk/; revision=42966
2012-06-01Sigh. There appears to be no way to get Windows to allow us to rename aGuy Harris1-9/+18
file that we ourselves have open. In the "safe save" code path for capture files, on Windows temporarily close the file descriptors for the currently-open capture before doing the rename and then, if the rename failed, reopen them, leaving the rest of the wtap and capture_file structures intact. Rename filed_open() to file_fdopen(), to make its name match what it does a bit better (it's an fdopen()-style routine, i.e. do the equivalent of an open with an already-open file descriptor rather than a pathname, in the file_wrappers.c set of routines). Remove the file_ routines from the .def file for Wiretap - they should only be called by code inside Wiretap. Closing a descriptor open for input has no reason to fail (closing a descriptor open for *writing* could fail if the file is on a server and dirty pages are pushed asynchronously to the server and synchronously on a close), so just have file_close() return void. svn path=/trunk/; revision=42961
2012-05-29Test was backwards - if fname_new is *NON*-null, it was the name of aGuy Harris1-2/+2
temporary file to which we were writing in order to do a "safe save". Thanks to Coverity for pointing this out - should fix CIDs 703317 and 703316. svn path=/trunk/; revision=42891
2012-05-26I already got rid of that variable - it just mirrors cf->filename.Guy Harris1-1/+0
svn path=/trunk/; revision=42860
2012-05-26We can't save a live capture file with a ws_rename() on Windows, as weGuy Harris1-5/+26
have the file open. Go back to doing it with a copy on Windows. Explain what the problem is, and give a way in which we might be able to make it work on Windows (without using any NT native API calls...). svn path=/trunk/; revision=42859
2012-05-25Use GTK+'s GtkMessageDialog for the questions we ask in the process ofGuy Harris1-34/+36
saving files, and run it modal (which we're already doing with the GtkFileChooserDialog); this means less callback-based state machine stuff, simplifying the code paths a bit. If we're saving a file before closing it, don't bother reloading it after saving it. svn path=/trunk/; revision=42855
2012-05-24cf_update_capture_comment(): free the shb_inf when we're done with it.Jeff Morriss1-0/+3
svn path=/trunk/; revision=42830
2012-05-24Keep track, in Wiretap, of whether the file is compressed, and provideGuy Harris1-1/+5
an API to fetch that. When doing "Save" on a compressed file, write it out compressed. In the Statistics -> Summary dialog and in capinfos, report whether the file is gzip-compressed. svn path=/trunk/; revision=42818
2012-05-24In the "Save As" and "Export Specified Packets" code path, do a "safeGuy Harris1-87/+73
save" if the destination file exists. Don't forbid overwriting an existing file in either of those cases (we still forbid overwriting the current capture file) - the GUI asks the user whether they want to do the overwrite, and allows them to cancel out of it - and don't remove the file before writing to it (doing so makes the save *un*safe). Attempt to do a save of an unedited temporary file by just moving the file on Windows as well as on UN*X - ws_rename() will remove the target if necessary on Windows (and won't do it as a separate operation before attempting the rename), so it behaves like ws_rename() on UN*X (which is just a wrapper around rename()). svn path=/trunk/; revision=42816
2012-05-22"Save As" always saves everything and, when the save is done, makes theGuy Harris1-73/+144
new file the current file, as is the case in most if not all other GUI applications. A new "Export Specified Packets" menu option allows you to specify which packets to write out, with the default being the displayed packets (and those on which the displayed packets depend for, e.g. reassembly), and never makes the resulting file the current file. The two operations are conceptually distinct. Lumping them into one menu item, with the default for "Save As" being "displayed packets only" and thus making it behave like the latter operation, was causing some confusion; see, for example, bug 6640. Make the dialog popped up if you try to "Save As" or "Export Specified Packets" on top of an existing file ask the "do you want to do this?" question in the main part of the message, and note in the secondary text that doing that will overwrite what's in the file; that matches what TextEdit on OS X and the GNOME text editor say. svn path=/trunk/; revision=42792
2012-05-22We're an editor now, as we let you add, delete, and edit frame comments,Guy Harris1-25/+123
so "Save" should, for non-temporary files, mean "save the current state of the capture file on top of the existing file" without prompting for a file name. That means we have to do a "safe save" - i.e, write the capture out to a new file and, if that succeeds, rename the new file on top of the old file - as the actual packet data to write out is in the file we're overwriting, not in memory. (We'd want to do that anyway, of course....) Update some comments. Clean up indentation slightly, and get rid of an unnecessary variable (in all the cases where we use it, we assign it the same value, and that value isn't modified out from under us before we use it). Note that after a "Save", or a "Save As" that writes out all captured packets, we shouldn't have to close the current file and open the new file and reread it - we should be able to open the new file and update the frame offsets in the frame_data structures. Note that we need to do some a better job of reporting rename failures. svn path=/trunk/; revision=42777
2012-05-22The GUI's state machine requires that, when reloading a capture after aGuy Harris1-12/+11
save, we post capture file callback events similar to the ones posted when reading a capture - otherwise, the reload will leave the welcome screen up. Rename cf_cb_file_save_reload_finished to cf_cb_file_reload_finished, add a cf_cb_file_reload_started callback, have them work similarly to read_finished and read_started except that the reload uses "Reloading" in the progress bar and status bar. Clean up some indentation while we're at it. svn path=/trunk/; revision=42764
2012-05-22Finish fixing https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7270#c4 :Jeff Morriss1-9/+12
Revert r42758 as it only helps in one case; rather, fix it correctly: if we're redissecting or refiltering, clear any frame dependencies as we go along. (Fortunately, frame dependencies are all forward dependencies-- meaning that a given frame can only be depended upon by a later frame-- so we can do this as we rescan the packets/frames.) svn path=/trunk/; revision=42762
2012-05-21Partial fix for https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7270#c4 :Jeff Morriss1-4/+5
Clear the dependent_of_displayed flag when there's no dfilter. This only helps the case when you clear a display filter before moving on to another display filter. svn path=/trunk/; revision=42758
2012-05-21Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7270 :Jeff Morriss1-5/+10
Don't mark frames as dependent upon a displayed frame unless the (supposedly) displayed frame is actually displayed. (Fix to r41214 <sigh>.) svn path=/trunk/; revision=42752
2012-05-20Change the "user_saved" member of a capture_file structure toGuy Harris1-7/+7
"unsaved_changes", and have it be TRUE iff changes have been made to the file since it was read - *not* if it's a temporary file from a live capture. Check the "is_tempfile" member, and the "unsaved_changes" member, when appropriate. Just have a set_toolbar_for_capture_file() routine that updates the "save", "close", and "reload" toolbar as appropriate, given a capture_file structure - absorb the function of set_toolbar_for_unsaved_capture_file() into it. svn path=/trunk/; revision=42721
2012-05-18When saving packets, fill in hdr.presence_flags from the flags in theGuy Harris1-2/+17
frame_data structure; there's no guarantee that the wtap_pkthdr in the wtap structure reflects the current packet. svn path=/trunk/; revision=42705
2012-05-07Give hints to capture from stdin or pipe instead of opening it as a fileBalint Reczey1-1/+2
svn path=/trunk/; revision=42484
2012-04-17Fix bug #7112, where the interface ids were not savedruengeler1-1/+2
svn path=/trunk/; revision=42110
2012-04-03Fix dependent_frames memleak. Jakub Zawadzki1-3/+0
Reviewed-By: Jeff Morriss (http://www.wireshark.org/lists/wireshark-dev/201204/msg00013.html) svn path=/trunk/; revision=41902
2012-03-23Don't mark the file as unsaved unless the capture or packet comments ↵Jeff Morriss1-3/+15
actually changed. svn path=/trunk/; revision=41744
2012-03-15Should have been part of r41542: Don't free idb_inf in wtap_dump_open_ng(): ↵Jeff Morriss1-2/+5
free it in the callers. svn path=/trunk/; revision=41553
2012-03-13Add an explicit capture_cb_capture_failed indication for the case whereGuy Harris1-6/+7
we weren't even able to start a capture, rather than delivering a fake "capture start" indication and relying on a later "capture file closed" indication - for a capture that was never opened in the first place - to handle GUI cleanups. Don't deliver any GUI indications in cf_close() if we didn't have a capture file open in the first place. Clear the status bar and welcome header if that indication is delivered. If we start a capture from the command line with the -k flag, don't show the captured packet information unless the capture actually starts. svn path=/trunk/; revision=41521
2012-03-02Fix indentation.Guy Harris1-9/+9
svn path=/trunk/; revision=41320
2012-02-29- Add a LED in the statusbar to indicate that capture comments exists,Anders Broman1-0/+31
clickable to open an edit window. - Add checks for NULL pointers. Help with a different color LED possibly with Jeff's (c) in it apreceated. Should the LED be placed elsewhere or the whole thing done differently? svn path=/trunk/; revision=41242
2012-02-28Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3315 -Jeff Morriss1-2/+22
make Save-As/Displayed/All-Packets save not only the displayed packets but also any other packets needed (e.g., for reassembly) to fully dissect the displayed packets. This works only for the "All packets" case; choosing only the Selected packet, the Marked packets, or a range of packets would require actually storing which packets depend on which (too much memory) or going through the packet list many times (too slow). Also, this behavior is always the case: you can't save the displayed packets without their dependencies (I don't see why this would be desirable). So far this is done for SCTP and things using the reassembly routines (TCP has been tested). The Win32 dialog was modified but hasn't been tested yet. One confusing aspect of the UI is that the Displayed count in the Save-As dialog does not match the number of displayed packets. (I tried renaming the button "Displayed + Dependencies" but it looked too big.) The tooltip tries to explain this and the fact that this works only in the All-Packets case; suggestions for improvement are welcome. Implementation details: Dissectors (or the reassembly code) can list frames which were needed to build the current frame's tree. If the current frame passes the display filter then each listed frame is marked as "depended upon" (this takes up the last free frame_data flag). When performing a Save-As/Displayed/All-Packets then choose packets which passed the dfilter _or_ are depended upon. svn path=/trunk/; revision=41216
2012-02-21Whitespace changes.Michael Tüxen1-4/+4
svn path=/trunk/; revision=41116
2012-02-20From Jose Pedro Oliveira fix a typoAnders Broman1-1/+1
svn path=/trunk/; revision=41091
2012-02-20Handle reading and writing of multiple IDB:s, write IDB options and use ↵Anders Broman1-2/+5
correct lengt for strings, handle more than 100 char comment svn path=/trunk/; revision=41082
2012-02-16With the WTAP_ERR_UNSUPPORTED error, Wiretap supplies a string givingGuy Harris1-1/+9
the details of what in particular is unsupported; report it in TShark and Wireshark. Handle WTAP_ERR_RANDOM_OPEN_PIPE in TShark. Handle WTAP_ERR_COMPRESSION_NOT_SUPPORTED in TShark, and have its error message in Wireshark not speak of gzip, in case we support compressed output in other formats in the future. If we see a second section header block in a pcap-NG file, don't report it as "the file is corrupted", report it as "the file uses a feature we don't support", as that's the case - and don't free up the interface data array, as the file remains open, and Wireshark might still try to access the packets we were able to read. svn path=/trunk/; revision=41041
2012-02-15Make it possible to get inforamtion from the read SHB to the one to write out.Anders Broman1-2/+6
svn path=/trunk/; revision=41032
2012-02-11Add the abillity to read and write option comments unedited.Anders Broman1-6/+13
This is POC we may want to have more efficient use of the frame data structure etc. But this allows for work to be done on the GUI to actually add comments. svn path=/trunk/; revision=40969
2012-02-08Write address resolution block.Anders Broman1-1/+4
svn path=/trunk/; revision=40938
2012-01-16Move some headers for UI stuff, and the alert_box.c UI-specific file, toGuy Harris1-5/+7
the ui directory. (Perhaps some other files that would be used by all flavors of Wireshark, for any GUI toolkit or for someting such as ncurses, and not for any command-line tool such as TShark, should be moved there as well.) Shuffle some #includes to put the "ui/XXX.h" includes together. svn path=/trunk/; revision=40529
2012-01-15Move gtk to ui/gtk.Jörg Mayer1-1/+1
This looses the last checkin to gtk, will add this manually back. svn path=/trunk/; revision=40518