1: // AdvancedCopy Manager for Windows
2: // All Rights Reserved, Copyright FUJITSU LIMITED, 2002-2005
3: //
4: // OpcRestorePre.js: Pre-Processing Script for swstrestore
5: //
6: // [Parameters]
7: // 1st argument: device name of transaction volume
8: //
9: // [Return Values]
10: // 0: The script ended normally.
11: // 2: The number of the arguments is incorrect.
12: // 3: not used, but must not be used because older versions use these values.
13: // 4: An error other than the above occurred.
14:
15: try {
16: // create global objects
17: var WshShell = WScript.CreateObject("WScript.Shell"); // create Shell object
18: var WshEnv = WshShell.Environment("PROCESS"); // create Environment object
19: var fsObj = WScript.CreateObject("Scripting.FileSystemObject"); // create FileSystemObject object
20:
21: // create SwstRestorePreProc object
22: var proc = new SwstRestorePreProc();
23:
24: // there is nothing to do if the pre/post-processing is not customized
25: proc.doNothingForDriveLetter();
26:
27: SwstQuit(0);
28: } catch (e) {
29: SwstQuit(4);
30: }
31:
32: function SwstRestorePreProc()
33: {
34: // member variables
35: this.tvName = WScript.Arguments.length!=1?SwstQuit(1):WScript.Arguments.Item(0); // device name of transaction volume
36: this.postFileName = getDataPathName() + "\\" + getPutFileName(this.tvName) + ".pre"; // name of postprocessing file
37:
38: // member functions
39: this.doNothingForDriveLetter = doNothingForDriveLetter; // self-explanatory
40: this.writePostFile = writePostFile; // self-explanatory
41: }
42:
43: function doNothingForDriveLetter()
44: {
45: this.writePostFile("none");
46: }
47:
48: function writePostFile(type)
49: {
50: var overwrite = true; // means to overwrite a file if it exists.
51: var postFileStream = fsObj.CreateTextFile(this.postFileName, overwrite);
52: postFileStream.Write(type);
53: postFileStream.Close();
54: }
55:
56: function SwstQuit(exitStatus)
57: {
58: switch(exitStatus) {
59: case 0:
60: WScript.Quit(0);
61: case 1:
62: WScript.Echo("[Restore Preprocessing] The number of the arguments is incorrect.");
63: WScript.Quit(2);
64: default:
65: WScript.Echo("[Restore Preprocessing] The script exited abnormally.");
66: WScript.Quit(4);
67: }
68: }
69:
70: function getDataPathName()
71: {
72: return WshShell.RegRead(getSetupInfoKey() + "\\etcPathName") + "\\etc\\backup\\data\\DEFAULT";
73: }
74:
75: function getBinPathName()
76: {
77: return WshShell.RegRead(getSetupInfoKey() + "\\PathName") + "\\bin";
78: }
79:
80: function getSetupInfoKey()
81: {
82: var nodeName = WshEnv.Item("SWSTGNODE");
83: if( nodeName != "" ){
84: return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion\\" + nodeName;
85: }
86: return "HKEY_LOCAL_MACHINE\\SOFTWARE\\Fujitsu\\AdvancedCopy Manager\\CurrentVersion";
87: }
88:
89: function getPutFileName(deviceName){
90: var fileName;
91: if( isSafeDISKName(deviceName) ){
92: var re = /(\S+)\/(\S+):(\S+)/;
93: fileName = deviceName.replace(re, "$1_$2_$3");
94: }else{
95: fileName = deviceName;
96: }
97: return(fileName);
98: }
99:
100: function getGXDXPX(deviceName){
101: var gXdXpX;
102: if( isSafeDISKName(deviceName) ){
103: var re = /(\S+)\/(\S+):(\S+)/;
104: gXdXpX = deviceName.replace(re, "$3");
105: }else{
106: gXdXpX = deviceName;
107: }
108: return(gXdXpX);
109: }
110:
111: function isSafeDISKName(deviceName){
112: var key = ":g";
113: var s = deviceName.indexOf(key);
114: if ( s < 0 ) {
115: return (false);
116: } else {
117: return (true);
118: }
119: } |