#include <windows.h>
#include <lm.h>
#include <stdio.h>
#include <stdlib.h>
#pragma hdrstop



#define MAXLEN 256



int main( int argc, char *argv[] )
{
	USE_INFO_2 u;
	DWORD rc, i = 0;
	wchar_t server[MAXLEN], local[MAXLEN], share[MAXLEN];
	wchar_t user[MAXLEN], domain[MAXLEN], pwd[MAXLEN];

	if ( argc < 4 || argc > 7 )
	{
		puts( "usage: nusea \\\\server X: \\\\machine\\share [user domain password]" );
		return 1;
	}

	mbstowcs( server, argv[1], MAXLEN );
	mbstowcs( local, argv[2], MAXLEN );
	mbstowcs( share, argv[3], MAXLEN );

	if ( argc >= 5 )
		mbstowcs( user, argv[4], MAXLEN );
	else
		user[0] = L'\0';

	if ( argc >= 6 )
		mbstowcs( domain, argv[6], MAXLEN );
	else
		domain[0] = L'\0';

	if ( argc >= 7 )
		mbstowcs( pwd, argv[6], MAXLEN );
	else
		pwd[0] = L'\0';

	memset( &u, '\0', sizeof u );

	u.ui2_local = (char *) local;
	u.ui2_remote = (char *) share;
	u.ui2_password = ( pwd[0] == L'\0'? (char *) NULL: (char *) pwd );
	u.ui2_username = ( user[0] == L'\0'? (char *) NULL: (char *) user );
	u.ui2_domainname = ( domain[0] == L'\0'? (char *) NULL: (char *) domain );

	rc = NetUseAdd( (char *) server, 1, (BYTE *) &u, &i );

	if ( rc != ERROR_SUCCESS )
		printf( "NetUseAdd() returned %lu (arg# = %lu)\n", rc, i );

	return 0;
}

