@@ -213,10 +213,7 @@ export function toPathGetAccessControlResponse(
213
213
} ;
214
214
}
215
215
216
- export function toRolePermissions (
217
- permissionsString : string ,
218
- allowStickyBit : boolean = false
219
- ) : RolePermissions {
216
+ export function toRolePermissions ( permissionsString : string ) : RolePermissions {
220
217
const error = new RangeError (
221
218
`toRolePermissions() Invalid role permissions string ${ permissionsString } `
222
219
) ;
@@ -243,12 +240,6 @@ export function toRolePermissions(
243
240
let execute = false ;
244
241
if ( permissionsString [ 2 ] === "x" ) {
245
242
execute = true ;
246
- } else if ( allowStickyBit ) {
247
- if ( permissionsString [ 2 ] === "t" ) {
248
- execute = true ;
249
- } else if ( permissionsString [ 2 ] !== "-" ) {
250
- throw error ;
251
- }
252
243
} else if ( permissionsString [ 2 ] !== "-" ) {
253
244
throw error ;
254
245
}
@@ -265,14 +256,22 @@ export function toPermissions(permissionsString?: string): PathPermissions | und
265
256
throw RangeError ( `toPermissions() Invalid permissions string ${ permissionsString } ` ) ;
266
257
}
267
258
268
- // Case insensitive
269
- permissionsString = permissionsString . toLowerCase ( ) ;
270
-
271
259
let stickyBit = false ;
272
260
if ( permissionsString [ 8 ] === "t" ) {
273
261
stickyBit = true ;
262
+ const firstPart = permissionsString . substr ( 0 , 8 ) ;
263
+ const lastPart = permissionsString . substr ( 9 ) ;
264
+ permissionsString = firstPart + "x" + lastPart ;
265
+ } else if ( permissionsString [ 8 ] === "T" ) {
266
+ stickyBit = true ;
267
+ const firstPart = permissionsString . substr ( 0 , 8 ) ;
268
+ const lastPart = permissionsString . substr ( 9 ) ;
269
+ permissionsString = firstPart + "-" + lastPart ;
274
270
}
275
271
272
+ // Case insensitive
273
+ permissionsString = permissionsString . toLowerCase ( ) ;
274
+
276
275
let extendedAcls = false ;
277
276
if ( permissionsString . length === 10 ) {
278
277
if ( permissionsString [ 9 ] === "+" ) {
@@ -284,9 +283,9 @@ export function toPermissions(permissionsString?: string): PathPermissions | und
284
283
}
285
284
}
286
285
287
- const owner = toRolePermissions ( permissionsString . substr ( 0 , 3 ) , false ) ;
288
- const group = toRolePermissions ( permissionsString . substr ( 3 , 3 ) , false ) ;
289
- const other = toRolePermissions ( permissionsString . substr ( 6 , 3 ) , true ) ;
286
+ const owner = toRolePermissions ( permissionsString . substr ( 0 , 3 ) ) ;
287
+ const group = toRolePermissions ( permissionsString . substr ( 3 , 3 ) ) ;
288
+ const other = toRolePermissions ( permissionsString . substr ( 6 , 3 ) ) ;
290
289
291
290
return {
292
291
owner,
@@ -432,7 +431,9 @@ export function toAclString(acl: PathAccessControlItem[]): string {
432
431
}
433
432
434
433
export function toRolePermissionsString ( p : RolePermissions , stickyBit : boolean = false ) : string {
435
- return `${ p . read ? "r" : "-" } ${ p . write ? "w" : "-" } ${ stickyBit ? "t" : p . execute ? "x" : "-" } ` ;
434
+ return `${ p . read ? "r" : "-" } ${ p . write ? "w" : "-" } ${
435
+ stickyBit ? ( p . execute ? "t" : "T" ) : p . execute ? "x" : "-"
436
+ } `;
436
437
}
437
438
438
439
export function toPermissionsString ( permissions : PathPermissions ) : string {
0 commit comments