windows-nt/Source/XPSP1/NT/base/cluster/clusapi/trename.c

194 lines
4.5 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
trename.c
Abstract:
Test for cluster object rename APIs
Author:
John Vert (jvert) 5/10/1996
Revision History:
--*/
#include "windows.h"
#include "cluster.h"
#include "stdio.h"
#include "stdlib.h"
LPWSTR ClusterName=NULL;
BOOL DoGroup=FALSE;
BOOL DoResource=FALSE;
BOOL DoCluster=FALSE;
LPWSTR OldName=NULL;
LPWSTR NewName=NULL;
CHAR UsageText[] =
"TRENAME [-c cluster] type [oldname] newname\n"
" cluster\tspecifies the name of the cluster to connect to\n"
" type\t\teither \"cluster\" or \"group\" or \"resource\"\n"
" oldname\t\tthe current friendly name of the object\n"
" \t\t(required for group or resource)\n"
" newname\t\tthe new friendly name of the object\n";
void
Usage(
void
)
{
fprintf(stderr, UsageText);
exit(1);
}
LPWSTR
GetString(
IN LPSTR String
)
{
LPWSTR wString;
DWORD Length;
Length = strlen(String)+1;
wString = malloc(Length*sizeof(WCHAR));
if (wString == NULL) {
fprintf(stderr, "GetString couldn't malloc %d bytes\n",Length*sizeof(WCHAR));
}
mbstowcs(wString, String, Length);
return(wString);
}
void
ParseArgs(
int argc,
char *argv[]
)
{
int i;
DWORD ArgsSeen=0;
for (i=1;i<argc;i++) {
if ((argv[i][0] == '-') ||
(argv[i][0] == '/')) {
switch (argv[i][1]) {
case 'c':
if (++i == argc) {
Usage();
}
ClusterName = GetString(argv[i]);
break;
default:
Usage();
break;
}
} else {
switch (ArgsSeen) {
case 0:
//
// type
//
if (_stricmp(argv[i], "group")==0) {
DoGroup = TRUE;
} else if (_stricmp(argv[i], "resource") == 0) {
DoResource = TRUE;
} else if (_stricmp(argv[i], "cluster") == 0) {
DoCluster = TRUE;
ArgsSeen++;
} else {
Usage();
}
ArgsSeen++;
break;
case 1:
OldName = GetString(argv[i]);
ArgsSeen++;
break;
case 2:
NewName = GetString(argv[i]);
ArgsSeen++;
break;
default:
Usage();
}
}
}
if (ArgsSeen != 3) {
Usage();
}
}
_cdecl
main (argc, argv)
int argc;
char *argv[];
{
HCLUSTER hClus;
HGROUP hGroup;
HRESOURCE hResource;
LPSTR KeyName, ParamName;
LPSTR ParamValue;
DWORD Status;
ParseArgs(argc, argv);
hClus = OpenCluster(ClusterName);
if (hClus == NULL) {
fprintf(stderr,
"OpenCluster %ws failed %d\n",
(ClusterName == NULL) ? L"(NULL)" : ClusterName,
GetLastError());
return(0);
}
if (DoGroup) {
hGroup = OpenClusterGroup(hClus, OldName);
if (hGroup == NULL) {
fprintf(stderr,
"OpenGroup %ws failed %d\n", OldName, GetLastError());
return(0);
}
Status = SetClusterGroupName(hGroup, NewName);
if (Status != ERROR_SUCCESS) {
fprintf(stderr,
"SetClusterGroupName from %ws to %ws failed %d\n",
OldName,
NewName,
Status);
}
} else if (DoResource) {
hResource = OpenClusterResource(hClus, OldName);
if (hResource == NULL) {
fprintf(stderr,
"OpenResource %ws failed %d\n", OldName, GetLastError());
return(0);
}
Status = SetClusterResourceName(hResource, NewName);
if (Status != ERROR_SUCCESS) {
fprintf(stderr,
"SetClusterResourceName from %ws to %ws failed %d\n",
OldName,
NewName,
Status);
}
} else if (DoCluster) {
Status = SetClusterName(hClus, NewName);
if (Status != ERROR_SUCCESS) {
fprintf(stderr,
"SetClusterName to %ws failed %d\n",
NewName,
Status);
}
}
return(0);
}