/*
 * $Id: W32_fzs.c,v 1.1.1.1 2003/10/31 21:29:38 jnathan Exp $
 *
 * Copyright (c) 1999, 2000
 *	Politecnico di Torino.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that: (1) source code distributions
 * retain the above copyright notice and this paragraph in its entirety, (2)
 * distributions including binary code include the above copyright notice and
 * this paragraph in its entirety in the documentation or other materials
 * provided with the distribution, and (3) all advertising materials mentioning
 * features or use of this software display the following acknowledgement:
 * ``This product includes software developed by the Politecnico
 * di Torino, and its contributors.'' Neither the name of
 * the University nor the names of its contributors may be used to endorse
 * or promote products derived from this software without specific prior
 * written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#if defined(WIN32)
#include <stdio.h>
#include <signal.h>
#include <windows.h>

void* GetAdapterFromList(void* device,int index)
{
	DWORD dwVersion;
	DWORD dwWindowsMajorVersion;
	char* Adapter95;
	WCHAR* Adapter;
	int i;

	dwVersion=GetVersion();
	dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion)));
	if (dwVersion >= 0x80000000 && dwWindowsMajorVersion >= 4)  // Windows '95
	{
		Adapter95=device;
		for(i=0;i<index-1;i++){
			while(*Adapter95++!=0);
			if(*Adapter95==0)return NULL; 
		}
		return	Adapter95;
	}
	else{
		Adapter=(WCHAR*)device;
		for(i=0;i<index-1;i++){
			while(*Adapter++!=0);
			if(*Adapter==0)return NULL; 
		}
		return	Adapter;
	}
	
}

void PrintDeviceList(const char* device)
{
	DWORD dwVersion;
	DWORD dwWindowsMajorVersion;
	const WCHAR* t;
	const char* t95;
	int i=0;
	int DescPos=0;
	char *Desc;
	int n=1;

	dwVersion=GetVersion();
	dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion)));
	if (dwVersion >= 0x80000000 && dwWindowsMajorVersion >= 4)  // Windows '95
	{
		t95=(char*)device;

		while(*(t95+DescPos)!=0 || *(t95+DescPos-1)!=0){
			DescPos++;
		}

		Desc=(char*)t95+DescPos+1;
        printf("\nInterface\tDevice\t\t\t\t\tDescription\n-------------------------------------------\n");
		printf("%d ",n++);

		while (!(t95[i]==0 && t95[i-1]==0))
		{
			if (t95[i]==0){
				putchar(' ');
				putchar('(');
				while(*Desc!=0){
					putchar(*Desc);
					Desc++;
				}
				Desc++;
				putchar(')');
				putchar('\n');
			}
			else putchar(t95[i]);

			if((t95[i]==0) && (t95[i+1]!=0)){
				printf("%d ",n++);
			}

			i++;
		}
		putchar('\n');
	}
	
	else{		//Windows NT

		t=(WCHAR*)device;
		while(*(t+DescPos)!=0 || *(t+DescPos-1)!=0){
			DescPos++;
		}

		DescPos<<=1;
		Desc=(char*)t+DescPos+2;
        printf("\nInterface\tDevice\t\t\t\t\tDescription\n----------------------------------------------------------------------------\n");
		printf("%d ",n++);
		while (!(t[i]==0 && t[i-1]==0))
		{
			if (t[i]==0)
			{
				putchar(' ');
				putchar('(');
				while(*Desc!=0){
					putchar(*Desc);
					Desc++;
				}
				Desc++;
				putchar(')');
				putchar('\n');
			}
			else putchar(t[i]);

			if(t[i]==0 && t[i+1]!=0)printf("%d ",n++);

			i++;
		}
		putchar('\n');
	}
}
#endif /* WIN32 */


syntax highlighted by Code2HTML, v. 0.9.1