From Harald Welte:
[obnox/wireshark/wip.git] / wiretap / k12.c
index 3b23224a0abfa5680432a4f8270acf3d1c9b8181..0ff3d68f16214d7d6248c3e5debf803c2c4d5cca 100644 (file)
@@ -272,9 +272,12 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
     static guint buffer_len = 0x2000 ;
     guint bytes_read;
     guint last_read;
-    guint actual_len, left;
+    guint left;
     guint8 junk[0x14];
     guint8* writep;
+#ifdef DEBUG_K12
+    guint actual_len;
+#endif
 
     /* where the next unknown 0x10 bytes are stuffed to the file */
     guint junky_offset = 0x2000 - (gint) ( (file_offset - 0x200) % 0x2000 );
@@ -298,7 +301,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
             return 0;
         } else if ( bytes_read < 0x14 ){
             K12_DBG(1,("get_record: SHORT READ OR ERROR"));
-            *err = file_error(fh);
+            *err = file_error(fh, err_info);
             if (*err == 0) {
                 *err = WTAP_ERR_SHORT_READ;
             }
@@ -315,7 +318,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
             return 0;
         } else if ( bytes_read != 0x4 ) {
             K12_DBG(1,("get_record: SHORT READ OR ERROR"));
-            *err = file_error(fh);
+            *err = file_error(fh, err_info);
             if (*err == 0) {
                 *err = WTAP_ERR_SHORT_READ;
             }
@@ -323,7 +326,10 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
         }
     }
 
-    actual_len = left = pntohl(buffer);
+    left = pntohl(buffer);
+#ifdef DEBUG_K12
+    actual_len = left;
+#endif
     junky_offset -= 0x4;
 
     K12_DBG(5,("get_record: GET length=%u",left));
@@ -331,7 +337,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
     /* XXX - Is WTAP_MAX_PACKET_SIZE */
     if (left < 4 || left > WTAP_MAX_PACKET_SIZE) {
         K12_DBG(1,("get_record: Invalid GET length=%u",left));
-        *err = WTAP_ERR_BAD_RECORD;
+        *err = WTAP_ERR_BAD_FILE;
         *err_info = g_strdup_printf("get_record: Invalid GET length=%u",left);
         return -1;
     }
@@ -349,7 +355,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
 
             if ( last_read != left ) {
                 K12_DBG(1,("get_record: SHORT READ OR ERROR"));
-                *err = file_error(fh);
+                *err = file_error(fh, err_info);
                 if (*err == 0) {
                     *err = WTAP_ERR_SHORT_READ;
                 }
@@ -363,7 +369,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
 
             if ( last_read != junky_offset ) {
                 K12_DBG(1,("get_record: SHORT READ OR ERROR, read=%d expected=%d",last_read, junky_offset));
-                *err = file_error(fh);
+                *err = file_error(fh, err_info);
                 if (*err == 0) {
                     *err = WTAP_ERR_SHORT_READ;
                 }
@@ -376,7 +382,7 @@ static gint get_record(guint8** bufferp, FILE_T fh, gint64 file_offset,
 
             if ( last_read != 0x10 ) {
                 K12_DBG(1,("get_record: SHORT READ OR ERROR"));
-                *err = file_error(fh);
+                *err = file_error(fh, err_info);
                 if (*err == 0) {
                     *err = WTAP_ERR_SHORT_READ;
                 }
@@ -495,7 +501,7 @@ static gboolean k12_read(wtap *wth, int *err, gchar **err_info, gint64 *data_off
 }
 
 
-static gboolean k12_seek_read(wtap *wth, gint64 seek_off, union wtap_pseudo_header *pseudo_header, guchar *pd, int length, int *err _U_, gchar **err_info) {
+static gboolean k12_seek_read(wtap *wth, gint64 seek_off, union wtap_pseudo_header *pseudo_header, guint8 *pd, int length, int *err _U_, gchar **err_info) {
     k12_t *k12 = (k12_t *)wth->priv;
     k12_src_desc_t* src_desc;
     guint8* buffer;
@@ -685,7 +691,7 @@ int k12_open(wtap *wth, int *err, gchar **err_info) {
 
     if ( file_read(header_buffer,0x200,wth->fh) != 0x200 ) {
         K12_DBG(1,("k12_open: FILE HEADER TOO SHORT OR READ ERROR"));
-        *err = file_error(wth->fh);
+        *err = file_error(wth->fh, err_info);
         if (*err != 0) {
             return -1;
         }
@@ -979,7 +985,7 @@ static void k12_dump_src_setting(gpointer k _U_, gpointer v, gpointer p) {
 
 static gboolean k12_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
                          const union wtap_pseudo_header *pseudo_header,
-                         const guchar *pd, int *err) {
+                         const guint8 *pd, int *err) {
     k12_dump_t *k12 = (k12_dump_t *)wdh->priv;
     guint32 len;
     union {
@@ -1056,14 +1062,9 @@ static gboolean k12_dump_close(wtap_dumper *wdh, int *err) {
 }
 
 
-gboolean k12_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err) {
+gboolean k12_dump_open(wtap_dumper *wdh, int *err) {
     k12_dump_t *k12;
 
-    if (cant_seek) {
-        *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
-        return FALSE;
-    }
-
     if ( ! wtap_dump_file_write(wdh, k12_file_magic, 8, err)) {
         return FALSE;
     }