@@ -29,19 +29,12 @@ module.exports = function () {
29
29
extraLen : 0
30
30
} ;
31
31
32
- function setTime ( val ) {
33
- val = new Date ( val ) ;
34
- _time =
35
- ( ( ( val . getFullYear ( ) - 1980 ) & 0x7f ) << 25 ) | // b09-16 years from 1980
36
- ( ( val . getMonth ( ) + 1 ) << 21 ) | // b05-08 month
37
- ( val . getDate ( ) << 16 ) | // b00-04 hour
38
- // 2 bytes time
39
- ( val . getHours ( ) << 11 ) | // b11-15 hour
40
- ( val . getMinutes ( ) << 5 ) | // b05-10 minute
41
- ( val . getSeconds ( ) >> 1 ) ; // b00-04 seconds divided by 2
42
- }
43
-
44
- setTime ( + new Date ( ) ) ;
32
+ // casting
33
+ const uint32 = ( val ) => Math . max ( 0 , val ) >>> 0 ;
34
+ const uint16 = ( val ) => Math . max ( 0 , val ) & 0xffff ;
35
+ const uint8 = ( val ) => Math . max ( 0 , val ) & 0xff ;
36
+
37
+ _time = Utils . fromDate2DOS ( new Date ( ) ) ;
45
38
46
39
return {
47
40
get made ( ) {
@@ -102,33 +95,41 @@ module.exports = function () {
102
95
} ,
103
96
104
97
get time ( ) {
105
- return new Date ( ( ( _time >> 25 ) & 0x7f ) + 1980 , ( ( _time >> 21 ) & 0x0f ) - 1 , ( _time >> 16 ) & 0x1f , ( _time >> 11 ) & 0x1f , ( _time >> 5 ) & 0x3f , ( _time & 0x1f ) << 1 ) ;
98
+ return Utils . fromDOS2Date ( this . timeval ) ;
106
99
} ,
107
100
set time ( val ) {
108
- setTime ( val ) ;
101
+ this . timeval = Utils . fromDate2DOS ( val ) ;
102
+ } ,
103
+
104
+ get timeval ( ) {
105
+ return _time ;
109
106
} ,
107
+ set timeval ( val ) {
108
+ _time = uint32 ( val ) ;
109
+ } ,
110
+
110
111
get timeHighByte ( ) {
111
- return ( _time >>> 8 ) & 0xff ;
112
+ return uint8 ( _time >>> 8 ) ;
112
113
} ,
113
114
get crc ( ) {
114
115
return _crc ;
115
116
} ,
116
117
set crc ( val ) {
117
- _crc = Math . max ( 0 , val ) >>> 0 ;
118
+ _crc = uint32 ( val ) ;
118
119
} ,
119
120
120
121
get compressedSize ( ) {
121
122
return _compressedSize ;
122
123
} ,
123
124
set compressedSize ( val ) {
124
- _compressedSize = Math . max ( 0 , val ) >>> 0 ;
125
+ _compressedSize = uint32 ( val ) ;
125
126
} ,
126
127
127
128
get size ( ) {
128
129
return _size ;
129
130
} ,
130
131
set size ( val ) {
131
- _size = Math . max ( 0 , val ) >>> 0 ;
132
+ _size = uint32 ( val ) ;
132
133
} ,
133
134
134
135
get fileNameLength ( ) {
@@ -163,37 +164,37 @@ module.exports = function () {
163
164
return _diskStart ;
164
165
} ,
165
166
set diskNumStart ( val ) {
166
- _diskStart = Math . max ( 0 , val ) >>> 0 ;
167
+ _diskStart = uint32 ( val ) ;
167
168
} ,
168
169
169
170
get inAttr ( ) {
170
171
return _inattr ;
171
172
} ,
172
173
set inAttr ( val ) {
173
- _inattr = Math . max ( 0 , val ) >>> 0 ;
174
+ _inattr = uint32 ( val ) ;
174
175
} ,
175
176
176
177
get attr ( ) {
177
178
return _attr ;
178
179
} ,
179
180
set attr ( val ) {
180
- _attr = Math . max ( 0 , val ) >>> 0 ;
181
+ _attr = uint32 ( val ) ;
181
182
} ,
182
183
183
184
// get Unix file permissions
184
185
get fileAttr ( ) {
185
- return _attr ? ( ( ( _attr >>> 0 ) | 0 ) >> 16 ) & 0xfff : 0 ;
186
+ return uint16 ( _attr >> 16 ) & 0xfff ;
186
187
} ,
187
188
188
189
get offset ( ) {
189
190
return _offset ;
190
191
} ,
191
192
set offset ( val ) {
192
- _offset = Math . max ( 0 , val ) >>> 0 ;
193
+ _offset = uint32 ( val ) ;
193
194
} ,
194
195
195
196
get encrypted ( ) {
196
- return ( _flags & 1 ) === 1 ;
197
+ return ( _flags & Constants . FLG_ENC ) === Constants . FLG_ENC ;
197
198
} ,
198
199
199
200
get centralHeaderSize ( ) {
@@ -338,8 +339,6 @@ module.exports = function () {
338
339
data . writeUInt32LE ( _attr , Constants . CENATX ) ;
339
340
// LOC header offset
340
341
data . writeUInt32LE ( _offset , Constants . CENOFF ) ;
341
- // fill all with
342
- data . fill ( 0x00 , Constants . CENHDR ) ;
343
342
return data ;
344
343
} ,
345
344
0 commit comments