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