This commit was manufactured by cvs2svn to create tag
[Samba.git] / source / rpcclient / svcctrl_cmds.c
blob7b8e15806de4643fa616e0aa7eb7cc7421eba46b
1 /*
2 Unix SMB/Netbios implementation.
3 Version 1.9.
4 SMB client
5 Copyright (C) Andrew Tridgell 1994-2000
6 Copyright (C) Luke Kenneth Casson Leighton 1996-2000
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #include "includes.h"
24 #include "ntdomain.h"
25 #include "rpcclient.h"
27 extern struct client_info cli_info;
29 char *complete_svcenum(char *text, int state)
31 static uint32 i = 0;
32 static uint32 num_svcs = 0;
33 static ENUM_SRVC_STATUS *svc = NULL;
34 fstring srv_name;
36 fstrcpy(srv_name, "\\\\");
37 fstrcat(srv_name, cli_info.dest_host);
38 strupper(srv_name);
41 if (state == 0)
43 free(svc);
44 svc = NULL;
45 num_svcs = 0;
47 /* Iterate all users */
48 if (msrpc_svc_enum(srv_name, &svc, &num_svcs,
49 NULL, NULL) == 0)
51 return NULL;
54 i = 0;
57 for (; i < num_svcs; i++)
59 fstring svc_name;
60 unistr_to_ascii(svc_name, svc[i].uni_srvc_name.buffer,
61 sizeof(svc_name) - 1);
63 if (text == NULL || text[0] == 0 ||
64 strnequal(text, svc_name, strlen(text)))
66 char *name = strdup(svc_name);
67 i++;
68 return name;
72 return NULL;
75 /****************************************************************************
76 This defines the commands supported by this client
77 ****************************************************************************/
78 static const struct command_set svc_commands[] = {
80 * service control
84 "svcenum",
85 cmd_svc_enum,
86 "[-i] Lists Services Manager",
87 {NULL, NULL}
91 "svcinfo",
92 cmd_svc_info,
93 "<service> Service Information",
94 {complete_svcenum, NULL}
98 "svcstart",
99 cmd_svc_start,
100 "<service> [arg 0] [arg 1] ... Start Service",
101 {complete_svcenum, NULL}
105 "svcset",
106 cmd_svc_set,
107 "<service> Test Set Service",
108 {complete_svcenum, NULL}
112 "svcstop",
113 cmd_svc_stop,
114 "<service> Stop Service",
115 {complete_svcenum, NULL}
119 * oop!
124 NULL,
125 NULL,
126 {NULL, NULL}
130 void add_svc_commands(void)
132 add_command_set(svc_commands);