authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-01 11:54:57+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-01 11:54:57+02:00
loge39c93a2f346e4bfb2653ccf231d736dfb9bce6e
tree10988126f0a7b161f3f2ec2cf97c4f697df99523
parent7a2b4cb9a1f9eaaecc65329e17227776e82fa50c

Replace legacy 16-bit syscalls with 32-bit versions when appropriate


1 files changed, 70 insertions(+), 14 deletions(-)

std/os/linux.zig+70-14
...@@ -486,35 +486,67 @@ pub fn nanosleep(req: *const timespec, rem: ?*timespec) usize {...@@ -486,35 +486,67 @@ pub fn nanosleep(req: *const timespec, rem: ?*timespec) usize {
486}486}
487487
488pub fn setuid(uid: u32) usize {488pub fn setuid(uid: u32) usize {
489 return syscall1(SYS_setuid, uid);489 if (@hasDecl(@This(), "SYS_setuid32")) {
490 return syscall1(SYS_setuid32, uid);
491 } else {
492 return syscall1(SYS_setuid, uid);
493 }
490}494}
491495
492pub fn setgid(gid: u32) usize {496pub fn setgid(gid: u32) usize {
493 return syscall1(SYS_setgid, gid);497 if (@hasDecl(@This(), "SYS_setgid32")) {
498 return syscall1(SYS_setgid32, gid);
499 } else {
500 return syscall1(SYS_setgid, gid);
501 }
494}502}
495503
496pub fn setreuid(ruid: u32, euid: u32) usize {504pub fn setreuid(ruid: u32, euid: u32) usize {
497 return syscall2(SYS_setreuid, ruid, euid);505 if (@hasDecl(@This(), "SYS_setreuid32")) {
506 return syscall2(SYS_setreuid32, ruid, euid));
507 } else {
508 return syscall2(SYS_setreuid, ruid, euid));
509 }
498}510}
499511
500pub fn setregid(rgid: u32, egid: u32) usize {512pub fn setregid(rgid: u32, egid: u32) usize {
501 return syscall2(SYS_setregid, rgid, egid);513 if (@hasDecl(@This(), "SYS_setregid32")) {
514 return syscall2(SYS_setregid32, rgid, egid);
515 } else {
516 return syscall2(SYS_setregid, rgid, egid);
517 }
502}518}
503519
504pub fn getuid() u32 {520pub fn getuid() u32 {
505 return u32(syscall0(SYS_getuid));521 if (@hasDecl(@This(), "SYS_getuid32")) {
522 return u32(syscall0(SYS_getuid32));
523 } else {
524 return u32(syscall0(SYS_getuid));
525 }
506}526}
507527
508pub fn getgid() u32 {528pub fn getgid() u32 {
509 return u32(syscall0(SYS_getgid));529 if (@hasDecl(@This(), "SYS_getgid32")) {
530 return u32(syscall0(SYS_getgid32));
531 } else {
532 return u32(syscall0(SYS_getgid));
533 }
510}534}
511535
512pub fn geteuid() u32 {536pub fn geteuid() u32 {
513 return u32(syscall0(SYS_geteuid));537 if (@hasDecl(@This(), "SYS_geteuid32")) {
538 return u32(syscall0(SYS_geteuid32));
539 } else {
540 return u32(syscall0(SYS_geteuid));
541 }
514}542}
515543
516pub fn getegid() u32 {544pub fn getegid() u32 {
517 return u32(syscall0(SYS_getegid));545 if (@hasDecl(@This(), "SYS_getegid32")) {
546 return u32(syscall0(SYS_getegid32));
547 } else {
548 return u32(syscall0(SYS_getegid));
549 }
518}550}
519551
520pub fn seteuid(euid: u32) usize {552pub fn seteuid(euid: u32) usize {
...@@ -526,27 +558,51 @@ pub fn setegid(egid: u32) usize {...@@ -526,27 +558,51 @@ pub fn setegid(egid: u32) usize {
526}558}
527559
528pub fn getresuid(ruid: *u32, euid: *u32, suid: *u32) usize {560pub fn getresuid(ruid: *u32, euid: *u32, suid: *u32) usize {
529 return syscall3(SYS_getresuid, @ptrToInt(ruid), @ptrToInt(euid), @ptrToInt(suid));561 if (@hasDecl(@This(), "SYS_getresuid32")) {
562 return syscall3(SYS_getresuid32, @ptrToInt(ruid), @ptrToInt(euid), @ptrToInt(suid));
563 } else {
564 return syscall3(SYS_getresuid, @ptrToInt(ruid), @ptrToInt(euid), @ptrToInt(suid));
565 }
530}566}
531567
532pub fn getresgid(rgid: *u32, egid: *u32, sgid: *u32) usize {568pub fn getresgid(rgid: *u32, egid: *u32, sgid: *u32) usize {
533 return syscall3(SYS_getresgid, @ptrToInt(rgid), @ptrToInt(egid), @ptrToInt(sgid));569 if (@hasDecl(@This(), "SYS_getresgid32")) {
570 return syscall3(SYS_getresgid32, @ptrToInt(rgid), @ptrToInt(egid), @ptrToInt(sgid));
571 } else {
572 return syscall3(SYS_getresgid, @ptrToInt(rgid), @ptrToInt(egid), @ptrToInt(sgid));
573 }
534}574}
535575
536pub fn setresuid(ruid: u32, euid: u32, suid: u32) usize {576pub fn setresuid(ruid: u32, euid: u32, suid: u32) usize {
537 return syscall3(SYS_setresuid, ruid, euid, suid);577 if (@hasDecl(@This(), "SYS_setresuid32")) {
578 return syscall3(SYS_setresuid32, ruid, euid, suid);
579 } else {
580 return syscall3(SYS_setresuid, ruid, euid, suid);
581 }
538}582}
539583
540pub fn setresgid(rgid: u32, egid: u32, sgid: u32) usize {584pub fn setresgid(rgid: u32, egid: u32, sgid: u32) usize {
541 return syscall3(SYS_setresgid, rgid, egid, sgid);585 if (@hasDecl(@This(), "SYS_setresgid32")) {
586 return syscall3(SYS_setresgid32, rgid, egid, sgid);
587 } else {
588 return syscall3(SYS_setresgid, rgid, egid, sgid);
589 }
542}590}
543591
544pub fn getgroups(size: usize, list: *u32) usize {592pub fn getgroups(size: usize, list: *u32) usize {
545 return syscall2(SYS_getgroups, size, @ptrToInt(list));593 if (@hasDecl(@This(), "SYS_getgroups32")) {
594 return syscall2(SYS_getgroups32, size, @ptrToInt(list));
595 } else {
596 return syscall2(SYS_getgroups, size, @ptrToInt(list));
597 }
546}598}
547599
548pub fn setgroups(size: usize, list: *const u32) usize {600pub fn setgroups(size: usize, list: *const u32) usize {
549 return syscall2(SYS_setgroups, size, @ptrToInt(list));601 if (@hasDecl(@This(), "SYS_setgroups32")) {
602 return syscall2(SYS_setgroups32, size, @ptrToInt(list));
603 } else {
604 return syscall2(SYS_setgroups, size, @ptrToInt(list));
605 }
550}606}
551607
552pub fn getpid() i32 {608pub fn getpid() i32 {