Here is a patch to show the proper interface list
in Windows 95/98 as well as allow packet captures on WIN32 operating
systems.
Index:
ethereal/capture.c =================================================================== RCS
file: /cvsroot/ethereal/capture.c,v retrieving revision 1.98 diff -u
-r1.98 capture.c --- capture.c 2000/02/19 14:00:33 1.98 +++
capture.c 2000/03/20 20:49:42 @@ -513,6 +513,22 @@
time_t upd_time, cur_time;
int err, inpkts;
char errmsg[1024+1]; + +
// Initialize Windows Socket if we are in a WIN32 OS + // This needs
to be done before querying the interface for network/netmask +#ifdef _WIN32
+ WORD wVersionRequested; + WSADATA wsaData; +
wVersionRequested = MAKEWORD( 1, 1 ); + err = WSAStartup(
wVersionRequested, &wsaData ); + if (err!=0) {
+ snprintf(errmsg, sizeof errmsg,
+ "Couldn't initialize Windows Sockets.");
+ pch=NULL; + goto error; + }
+#endif + #ifdef linux
fd_set set1; struct timeval
timeout; Index:
ethereal/util.c =================================================================== RCS
file: /cvsroot/ethereal/util.c,v retrieving revision 1.38 diff -u -r1.38
util.c --- util.c 2000/03/14 08:26:19 1.38 +++
util.c 2000/03/20 20:49:45 @@ -608,25 +608,45
@@ get_interface_list(int *err, char *err_str) {
GList *il = NULL; wchar_t *names; + char
*win95names; char newname[255]; int i, j,
done; names = (wchar_t
*)pcap_lookupdev(err_str); i = done = 0; - if
(names) - do -
{ - j =
0; - while (names[i] !=
0) - newname[j++]
= names[i++]; -
i++; - if (names[i] ==
0) - done =
1; - newname[j++] =
0; - il = g_list_append(il,
g_strdup(newname)); - } while (!done); -
+ if (names) { + // If names[0] is less than 256 it means the
first byte is 0 + // This implies that we are using unicode
characters + if (names[0]<256) { + do
+ { + j = 0;
+ while (names[i] != 0)
+ newname[j++] = names[i++];
+ i++; + if (names[i] ==
0) + done = 1; +
newname[j++] = 0; + il = g_list_append(il,
g_strdup(newname)); + } while (!done); + }
+ // Otherwise we are in Windows 95/98 and using ascii(8 bit)
characters + else { + do
+ { + win95names=names;
+ j = 0; + while
(win95names[i] != 0) + newname[j++] =
win95names[i++]; + i++;
+ if (win95names[i] == 0)
+ done = 1; +
newname[j++] = 0; + il = g_list_append(il,
g_strdup(newname)); + } while (!done); + }
+ }
return(il); } #endif
|