File: binaryfile.qbs

package info (click to toggle)
qbs 3.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 30,968 kB
  • sloc: cpp: 120,478; ansic: 72,055; javascript: 14,887; python: 5,882; asm: 1,742; sh: 1,059; java: 693; objc: 409; lex: 194; xml: 141; perl: 137; yacc: 86; makefile: 55; cs: 41
file content (47 lines) | stat: -rw-r--r-- 1,921 bytes parent folder | download | duplicates (6)
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
import qbs.BinaryFile

Product {
    type: ["dummy"]
    Rule {
        multiplex: true
        outputFileTags: "dummy"
        prepare: {
            var commands = [];
            var cmd = new JavaScriptCommand();
            cmd.silent = true;
            cmd.sourceCode = function() {
                var source = new BinaryFile("source.dat", BinaryFile.WriteOnly);
                source.write([ 0x01, 0x02 ]); // First data.
                // Do not close the file to test the auto close functionality.
            };
            commands.push(cmd);
            cmd = new JavaScriptCommand();
            cmd.silent = true;
            cmd.sourceCode = function() {
                source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
                source.seek(source.size());
                source.write([ 0x03, 0x04 ]); // Second data.
                source.close();
                source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
                var destination = new BinaryFile("destination.dat", BinaryFile.WriteOnly);
                destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
                while (true) {
                    var data = source.read(1);
                    if (!data || data.length == 0)
                        break;
                    destination.write(data);
                }
                source.resize(0); // truncate
                destination.write([ 0x05, 0x06 ]); // Third data.
                destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
                source.close();
                destination.close();
                source = new BinaryFile("destination.dat", BinaryFile.ReadOnly);
                destination = new BinaryFile("destination2.dat", BinaryFile.WriteOnly);
                destination.write(source.read(8));
            };
            commands.push(cmd);
            return commands;
        }
    }
}