@@ -444,14 +444,19 @@ class DriveManager extends EventEmitter {
444
444
mkdir : async ( call ) => {
445
445
const id = call . request . getId ( )
446
446
const path = call . request . getPath ( )
447
- const mode = call . request . getMode ( )
447
+ const opts = fromStat ( call . request . getOpts ( ) )
448
448
449
449
if ( ! id ) throw new Error ( 'A mkdir request must specify a session ID.' )
450
450
if ( ! path ) throw new Error ( 'A mkdir request must specify a directory path.' )
451
451
const drive = this . driveForSession ( id )
452
452
453
+ const mkdirOpts = { }
454
+ if ( opts . uid ) mkdirOpts . uid = opts . uid
455
+ if ( opts . gid ) mkdirOpts . gid = opts . gid
456
+ if ( opts . mode ) mkdirOpts . mode = opts . mode
457
+
453
458
return new Promise ( ( resolve , reject ) => {
454
- drive . mkdir ( path , mode , err => {
459
+ drive . mkdir ( path , mkdirOpts , err => {
455
460
if ( err ) return reject ( err )
456
461
457
462
const rsp = new rpc . drive . messages . MkdirResponse ( )
@@ -569,6 +574,26 @@ class DriveManager extends EventEmitter {
569
574
}
570
575
} ,
571
576
577
+ symlink : async ( call ) => {
578
+ const id = call . request . getId ( )
579
+ const target = call . request . getTarget ( )
580
+ const linkname = call . request . getLinkname ( )
581
+
582
+ if ( ! id ) throw new Error ( 'A symlink request must specify a session ID.' )
583
+ if ( ! target ) throw new Error ( 'A symlink request must specify a target.' )
584
+ if ( ! linkname ) throw new Error ( 'A symlink request must specify a linkname.' )
585
+ const drive = this . driveForSession ( id )
586
+
587
+ return new Promise ( ( resolve , reject ) => {
588
+ drive . symlink ( target , linkname , err => {
589
+ if ( err ) return reject ( err )
590
+
591
+ const rsp = new rpc . drive . messages . SymlinkResponse ( )
592
+ return resolve ( rsp )
593
+ } )
594
+ } )
595
+ } ,
596
+
572
597
close : async ( call ) => {
573
598
const id = call . request . getId ( )
574
599
0 commit comments