print.c and ps.c are in libwirshark now.
[metze/wireshark/wip.git] / ringbuffer.c
index 9319cf9f5132d557579a50ae1a47c022cd423377..f9f1e6d67883f2d76d57fc13c0d09c30555596bd 100644 (file)
@@ -19,7 +19,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 /*
@@ -42,9 +42,7 @@
  *
  */
 
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #ifdef HAVE_LIBPCAP
 
@@ -65,7 +63,6 @@
 
 #include <glib.h>
 
-#include "pcapio.h"
 #include "ringbuffer.h"
 #include <wsutil/file_util.h>
 
@@ -120,7 +117,8 @@ static int ringbuf_open_file(rb_file *rfile, int *err)
                            rb_data.fsuffix, NULL);
 
   if (rfile->name == NULL) {
-    *err = ENOMEM;
+    if (err != NULL)
+      *err = ENOMEM;
     return -1;
   }
 
@@ -228,12 +226,17 @@ const gchar *ringbuf_current_filename(void)
 }
 
 /*
- * Calls libpcap_fdopen() for the current ringbuffer file
+ * Calls ws_fdopen() for the current ringbuffer file
  */
 FILE *
 ringbuf_init_libpcap_fdopen(int *err)
 {
-  rb_data.pdh = libpcap_fdopen(rb_data.fd, err);
+  rb_data.pdh = ws_fdopen(rb_data.fd, "wb");
+  if (rb_data.pdh == NULL) {
+    if (err != NULL) {
+      *err = errno;
+    }
+  }
   return rb_data.pdh;
 }
 
@@ -248,7 +251,10 @@ ringbuf_switch_file(FILE **pdh, gchar **save_file, int *save_file_fd, int *err)
 
   /* close current file */
 
-  if (!libpcap_dump_close(rb_data.pdh, err)) {
+  if (fclose(rb_data.pdh) == EOF) {
+    if (err != NULL) {
+      *err = errno;
+    }
     ws_close(rb_data.fd);      /* XXX - the above should have closed this already */
     rb_data.pdh = NULL;        /* it's still closed, we just got an error while closing */
     rb_data.fd = -1;
@@ -281,7 +287,7 @@ ringbuf_switch_file(FILE **pdh, gchar **save_file, int *save_file_fd, int *err)
 }
 
 /*
- * Calls libpcap_dump_close() for the current ringbuffer file
+ * Calls fclose() for the current ringbuffer file
  */
 gboolean
 ringbuf_libpcap_dump_close(gchar **save_file, int *err)
@@ -290,11 +296,13 @@ ringbuf_libpcap_dump_close(gchar **save_file, int *err)
 
   /* close current file, if it's open */
   if (rb_data.pdh != NULL) {
-    if (!libpcap_dump_close(rb_data.pdh, err)) {
+    if (fclose(rb_data.pdh) == EOF) {
+      if (err != NULL) {
+        *err = errno;
+      }
       ws_close(rb_data.fd);
       ret_val = FALSE;
     }
-
     rb_data.pdh = NULL;
     rb_data.fd  = -1;
   }
@@ -342,15 +350,13 @@ ringbuf_error_cleanup(void)
 
   /* try to close via wtap */
   if (rb_data.pdh != NULL) {
-    if (libpcap_dump_close(rb_data.pdh, NULL)) {
+    if (fclose(rb_data.pdh) == 0) {
       rb_data.fd = -1;
     }
     rb_data.pdh = NULL;
   }
 
   /* close directly if still open */
-  /* XXX - it shouldn't still be open; "libpcap_dump_close()" should leave the
-     file closed even if it fails */
   if (rb_data.fd != -1) {
     ws_close(rb_data.fd);
     rb_data.fd = -1;