2 * Common file dialog routines
4 * Wireshark - Network traffic analyzer
5 * By Gerald Combs <gerald@wireshark.org>
6 * Copyright 2006 Gerald Combs
8 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include <wsutil/nstime.h>
19 #include <wiretap/wtap.h>
21 #include <epan/prefs.h>
23 #include "ui/file_dialog.h"
25 ws_file_preview_stats_status
26 get_stats_for_preview(wtap
*wth
, ws_file_preview_stats
*stats
,
27 int *err
, char **err_info
)
32 uint32_t data_records
;
37 time_t time_preview
, time_current
;
47 wtap_rec_init(&rec
, 1514);
48 while ((wtap_read(wth
, &rec
, err
, err_info
, &data_offset
))) {
49 if (rec
.presence_flags
& WTAP_HAS_TS
) {
50 cur_time
= nstime_to_sec(&rec
.ts
);
52 start_time
= cur_time
;
56 if (cur_time
< start_time
) {
57 start_time
= cur_time
;
59 if (cur_time
> stop_time
){
64 switch (rec
.rec_type
) {
67 case REC_TYPE_FT_SPECIFIC_EVENT
:
68 case REC_TYPE_FT_SPECIFIC_REPORT
:
69 case REC_TYPE_SYSCALL
:
70 case REC_TYPE_SYSTEMD_JOURNAL_EXPORT
:
76 if ((records
% 1000) == 0) {
77 /* do we have a timeout? */
79 if (time_current
-time_preview
>= (time_t) prefs
.gui_fileopen_preview
) {
87 stats
->have_times
= have_times
;
88 stats
->start_time
= start_time
;
89 stats
->stop_time
= stop_time
;
90 stats
->records
= records
;
91 stats
->data_records
= data_records
;
93 wtap_rec_cleanup(&rec
);
97 return PREVIEW_READ_ERROR
;
99 return timed_out
? PREVIEW_TIMED_OUT
: PREVIEW_SUCCEEDED
;