winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

make-signatures.js (1632B)


      1 // make-signatures.js - Create file format signature constants.
      2 
      3 var Node = {
      4   fs: require('fs')
      5 };
      6 
      7 var signatures = {
      8   ICONR:           [0x49, 0x63, 0x6f, 0x6e, 0x0d],
      9   RAR:             [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07],
     10   TAR:             [0x75, 0x73, 0x74, 0x61, 0x72],
     11   XAR:             [0x78, 0x61, 0x72, 0x21],
     12   ZIP_CDH:         [0x50, 0x4b, 0x01, 0x02],
     13   ZIP_DDR:         [0x50, 0x4b, 0x07, 0x08],
     14   ZIP_EOCDL_64:    [0x50, 0x4b, 0x06, 0x07],
     15   ZIP_EOCDR_64:    [0x50, 0x4b, 0x06, 0x06],
     16   ZIP_EOCDR:       [0x50, 0x4b, 0x05, 0x06],
     17   ZIP_LFH:         [0x50, 0x4b, 0x03, 0x04],
     18   ZIP_PK:          [0x50, 0x4b],
     19   ZIP_SPAN:        [0x50, 0x4b, 0x07, 0x08],
     20   ZIP_TEMP:        [0x50, 0x4b, 0x30, 0x30]
     21 };
     22 
     23 var lines = [];
     24 
     25 function line(string) {
     26   lines.push(string);
     27 }
     28 
     29 function arrayName(name, octets) {
     30   return 'const uint8_t PURE_S_' + name + '[' + octets.length + ']';
     31 }
     32 
     33 function hex(octets) {
     34   return octets.map(
     35     function(octet) {
     36       return '0x' + octet.toString(16).padStart(2, '0');
     37     }
     38   ).join(', ');
     39 }
     40 
     41 var max = 0;
     42 for (var name in signatures) {
     43   var octets = signatures[name];
     44   var length = arrayName(name, octets).length;
     45   if (length > max) max = length;
     46 }
     47 for (var name in signatures) {
     48   var octets = signatures[name];
     49   var padded = arrayName(name, octets).padEnd(max, ' ');
     50   line(padded + ' = {' + hex(octets) + '};');
     51 }
     52 line('');
     53 for (var name in signatures) {
     54   var octets = signatures[name];
     55   var padded = ('const uint64_t PURE_L_' + name).padEnd(max, ' ');
     56   line(padded + ' = ' + octets.length + ';');
     57 }
     58 
     59 Node.fs.writeFileSync('pure_signatures.h', lines.join('\n'), 'utf-8');