net.exe: Parses options for NET USE (try 2)
Tim Schwartz
tim at sanityinternet.com
Thu Jul 26 11:28:03 CDT 2007
-------------- next part --------------
diff --git a/programs/net/En.rc b/programs/net/En.rc
index f3d8f4f..59e7c97 100644
--- a/programs/net/En.rc
+++ b/programs/net/En.rc
@@ -37,4 +37,5 @@ STRINGTABLE
STRING_STOP_SVC_SUCCESS, "The %s service was stopped successfully.\n"
STRING_STOP_SVC_FAIL, "The %s service failed to stop.\n"
STRING_HELP_USAGE, "The syntax of this command is:\n\nNET HELP command\n -or-\nNET command /HELP\n\n Commands available are:\n NET HELP NET START NET STOP\n"
+ STRING_INVALID_NETUSE_PARM, "%s is not a valid parameter for NET USE.\n"
}
diff --git a/programs/net/Ko.rc b/programs/net/Ko.rc
index 8d78dde..73b4a20 100644
--- a/programs/net/Ko.rc
+++ b/programs/net/Ko.rc
@@ -38,4 +38,5 @@ STRINGTABLE
STRING_STOP_SVC_SUCCESS, "%s ������ ���� ����.\n"
STRING_STOP_SVC_FAIL, "%s ������ ���� ����.\n"
STRING_HELP_USAGE, "������ ����:\n\nNET HELP ������ \n -or-\nNET ������ /HELP\n\n ������ ������:\n NET HELP NET START NET STOP\n"
+ STRING_INVALID_NETUSE_PARM, "%s\n"
}
diff --git a/programs/net/net.c b/programs/net/net.c
index 73e1763..d72c9af 100644
--- a/programs/net/net.c
+++ b/programs/net/net.c
@@ -21,8 +21,10 @@
#include <windows.h>
#include "resources.h"
+#define MAXLEN 256
#define NET_START 0001
#define NET_STOP 0002
+#define NET_USE_ADD 0003
int output_string(int msg, ...)
{
@@ -36,6 +38,12 @@ int output_string(int msg, ...)
return 0;
}
+static BOOL net_use(int operation, char *device_name, char *remote_name, char *domain_name, char *user_name, char *user_password)
+{
+ printf("net_use stub\ndevice_name: %s, remote_name: %s, domain_name: %s, user_name: %s, user_password: %s\n", device_name, remote_name, domain_name, user_name, user_password);
+ return FALSE;
+}
+
static BOOL StopService(SC_HANDLE SCManager, SC_HANDLE serviceHandle)
{
LPENUM_SERVICE_STATUS dependencies = NULL;
@@ -118,6 +126,17 @@ static BOOL net_service(int operation, char *service_name)
int main(int argc, char *argv[])
{
+ char device_name[MAXLEN], remote_name[MAXLEN], user_password[MAXLEN], user_name[MAXLEN], domain_name[MAXLEN];
+ char *buffer, temp[MAXLEN];
+ int counter = 0;
+
+ memset(&device_name, 0, MAXLEN);
+ memset(&remote_name, 0, MAXLEN);
+ memset(&user_password, 0, MAXLEN);
+ memset(&user_name, 0, MAXLEN);
+ memset(&domain_name, 0, MAXLEN);
+ memset(&temp, 0, MAXLEN);
+
if (argc < 2)
{
output_string(STRING_USAGE);
@@ -159,5 +178,50 @@ int main(int argc, char *argv[])
return 0;
}
+ if(!strcasecmp(argv[1], "use"))
+ {
+ argv++; argv++;
+ /* First non-switch parameter is device name, second is share name, third (if it exists) is password */
+ while(argc > 2)
+ {
+ if (*argv[0] != '/')
+ {
+ if(!device_name[0]) strcpy(device_name, *argv);
+ else if(!remote_name[0]) strncpy(remote_name, *argv, strlen(*argv));
+ else if(!user_password[0]) strncpy(user_password, *argv, strlen(*argv));
+ else
+ {
+ output_string(STRING_INVALID_NETUSE_PARM, *argv);
+ return 1;
+ }
+ } else
+ {
+ if(strstr((char *)_strlwr(*argv), "/user:"))
+ {
+ buffer = strstr(*argv, ":");
+ buffer++;
+ while((buffer[0] != '@') && (buffer[0] != '\\') && (buffer[0] != '\0'))
+ {
+ temp[counter] = buffer[0];
+ buffer++; counter++;
+ }
+ if(buffer[0] == '@')
+ {
+ strncpy(user_name, temp, strlen(temp));
+ buffer++;
+ strncpy(domain_name, buffer, strlen(buffer));
+ }
+ if(buffer[0] == '\\')
+ {
+ strncpy(domain_name, temp, strlen(temp));
+ buffer++;
+ strncpy(user_name, buffer, strlen(buffer));
+ }
+ }
+ }
+ argc--; argv++;
+ }
+ if(net_use(NET_USE_ADD, device_name, remote_name, domain_name, user_name, user_password)) return 1;
+ }
return 0;
}
diff --git a/programs/net/resources.h b/programs/net/resources.h
index 4c1c167..533580a 100644
--- a/programs/net/resources.h
+++ b/programs/net/resources.h
@@ -30,3 +30,4 @@
#define STRING_STOP_SVC_SUCCESS 112
#define STRING_STOP_SVC_FAIL 113
#define STRING_HELP_USAGE 114
+#define STRING_INVALID_NETUSE_PARM 115
More information about the wine-patches
mailing list