forked from ibmruntimes/mvsutils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfixv6.js
64 lines (59 loc) · 1.55 KB
/
fixv6.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* example to convert a version 6 untag ebcdic file to unicode
*
*/
const mvsutils = require('./build/Release/mvsutils.node');
module.exports = mvsutils;
var fs = require("fs")
var nospawn = false
var inputfile
var outputfile
if (process.argv.length > 2 && process.argv[2] == 'child') {
nospawn = true
}
function opened(err, fd) {
if (err) {
console.warn("file open error")
process.exit(-1)
}
let res = mvsutils.GuessFileCcsid(fd)
if (res.ccsid != 1047) {
console.log(res)
console.warn("file", inputfile, "does not seem to contain valid EBCDIC data, please inpect output file", outputfile)
}
try {
fs.unlinkSync(outputfile)
} catch (err) {}
fs.createReadStream(inputfile).pipe(fs.createWriteStream(outputfile))
console.log("output file created", outputfile)
}
if (process.env.__UNTAGGED_READ_MODE !== "V6") {
if (nospawn) {
console.warn("in child but __UNTAGGED_READ_MODE is not V6")
process.exit(-1)
}
process.env.__UNTAGGED_READ_MODE = "V6"
const spawn = require('child_process').spawn;
let me = process.execPath
const args = [process.argv[1], 'child', process.argv[2]]
const opts = {
stdio: 'inherit'
}
let child = spawn(me, args, opts);
} else {
if (nospawn) {
file = process.argv[3]
} else {
file = process.argv[2]
}
var result = mvsutils.GetFileCcsid(file)
if (result.ccsid === 0) {
fs.open(file, "r", opened)
inputfile = file
outputfile = file + "._tmpout"
} else {
console.warn("file", file, "is not untagged")
console.warn(result)
process.exit(-1)
}
}