Skip to content

Commit 2921acc

Browse files
committed
Auto merge of #1128 - asomers:chflags, r=alexcrichton
Add chflags(2) and friends
2 parents 4e5ef22 + 3bc400d commit 2921acc

File tree

7 files changed

+77
-0
lines changed

7 files changed

+77
-0
lines changed

src/unix/bsd/apple/mod.rs

+16
Original file line numberDiff line numberDiff line change
@@ -2302,6 +2302,20 @@ pub const SHMLBA: ::c_int = 4096;
23022302
pub const SHM_R: ::c_int = IPC_R;
23032303
pub const SHM_W: ::c_int = IPC_W;
23042304

2305+
// Flags for chflags(2)
2306+
pub const UF_SETTABLE: ::c_uint = 0x0000ffff;
2307+
pub const UF_NODUMP: ::c_uint = 0x00000001;
2308+
pub const UF_IMMUTABLE: ::c_uint = 0x00000002;
2309+
pub const UF_APPEND: ::c_uint = 0x00000004;
2310+
pub const UF_OPAQUE: ::c_uint = 0x00000008;
2311+
pub const UF_COMPRESSED: ::c_uint = 0x00000020;
2312+
pub const UF_TRACKED: ::c_uint = 0x00000040;
2313+
pub const SF_SETTABLE: ::c_uint = 0xffff0000;
2314+
pub const SF_ARCHIVED: ::c_uint = 0x00010000;
2315+
pub const SF_IMMUTABLE: ::c_uint = 0x00020000;
2316+
pub const SF_APPEND: ::c_uint = 0x00040000;
2317+
pub const UF_HIDDEN: ::c_uint = 0x00008000;
2318+
23052319
f! {
23062320
pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
23072321
status >> 8
@@ -2335,6 +2349,8 @@ extern {
23352349
pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int,
23362350
timeout: *const ::timespec) -> ::c_int;
23372351
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
2352+
pub fn chflags(path: *const ::c_char, flags: ::c_uint) -> ::c_int;
2353+
pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int;
23382354
pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
23392355
pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
23402356
pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,

src/unix/bsd/freebsdlike/dragonfly/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,14 @@ pub const RTP_PRIO_NORMAL: ::c_ushort = 1;
767767
pub const RTP_PRIO_IDLE: ::c_ushort = 2;
768768
pub const RTP_PRIO_THREAD: ::c_ushort = 3;
769769

770+
// Flags for chflags(2)
771+
pub const UF_NOHISTORY: ::c_ulong = 0x00000040;
772+
pub const UF_CACHE: ::c_ulong = 0x00000080;
773+
pub const UF_XLINK: ::c_ulong = 0x00000100;
774+
pub const SF_NOHISTORY: ::c_ulong = 0x00400000;
775+
pub const SF_CACHE: ::c_ulong = 0x00800000;
776+
pub const SF_XLINK: ::c_ulong = 0x01000000;
777+
770778
extern {
771779
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int)
772780
-> ::c_int;

src/unix/bsd/freebsdlike/freebsd/mod.rs

+10
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,16 @@ pub const POSIX_SPAWN_SETSCHEDULER: ::c_int = 0x08;
928928
pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x10;
929929
pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20;
930930

931+
// Flags for chflags(2)
932+
pub const UF_SYSTEM: ::c_ulong = 0x00000080;
933+
pub const UF_SPARSE: ::c_ulong = 0x00000100;
934+
pub const UF_OFFLINE: ::c_ulong = 0x00000200;
935+
pub const UF_REPARSE: ::c_ulong = 0x00000400;
936+
pub const UF_ARCHIVE: ::c_ulong = 0x00000800;
937+
pub const UF_READONLY: ::c_ulong = 0x00001000;
938+
pub const UF_HIDDEN: ::c_ulong = 0x00008000;
939+
pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
940+
931941
extern {
932942
pub fn __error() -> *mut ::c_int;
933943

src/unix/bsd/freebsdlike/mod.rs

+18
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,19 @@ pub const RTP_PRIO_MAX: ::c_ushort = 31;
10031003
pub const RTP_LOOKUP: ::c_int = 0;
10041004
pub const RTP_SET: ::c_int = 1;
10051005

1006+
// Flags for chflags(2)
1007+
pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
1008+
pub const UF_NODUMP: ::c_ulong = 0x00000001;
1009+
pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
1010+
pub const UF_APPEND: ::c_ulong = 0x00000004;
1011+
pub const UF_OPAQUE: ::c_ulong = 0x00000008;
1012+
pub const UF_NOUNLINK: ::c_ulong = 0x00000010;
1013+
pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
1014+
pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
1015+
pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
1016+
pub const SF_APPEND: ::c_ulong = 0x00040000;
1017+
pub const SF_NOUNLINK: ::c_ulong = 0x00100000;
1018+
10061019
f! {
10071020
pub fn WIFCONTINUED(status: ::c_int) -> bool {
10081021
status == 0x13
@@ -1032,9 +1045,13 @@ extern {
10321045
pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int,
10331046
timeout: *const ::timespec) -> ::c_int;
10341047
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
1048+
pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
1049+
pub fn chflagsat(fd: ::c_int, path: *const ::c_char, flags: ::c_ulong,
1050+
atflag: ::c_int) -> ::c_int;
10351051
pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;
10361052
pub fn duplocale(base: ::locale_t) -> ::locale_t;
10371053
pub fn endutxent();
1054+
pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int;
10381055
pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
10391056
pub fn getdomainname(name: *mut ::c_char, len: ::c_int) -> ::c_int;
10401057
pub fn getgrent_r(grp: *mut ::group,
@@ -1069,6 +1086,7 @@ extern {
10691086
eventlist: *mut ::kevent,
10701087
nevents: ::c_int,
10711088
timeout: *const ::timespec) -> ::c_int;
1089+
pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
10721090
pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,
10731091
nitems: ::c_int, sevp: *mut sigevent) -> ::c_int;
10741092
pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;

src/unix/bsd/netbsdlike/mod.rs

+16
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,17 @@ pub const TIOCM_DSR: ::c_int = 0o0400;
580580
pub const TIOCM_CD: ::c_int = TIOCM_CAR;
581581
pub const TIOCM_RI: ::c_int = TIOCM_RNG;
582582

583+
// Flags for chflags(2)
584+
pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
585+
pub const UF_NODUMP: ::c_ulong = 0x00000001;
586+
pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
587+
pub const UF_APPEND: ::c_ulong = 0x00000004;
588+
pub const UF_OPAQUE: ::c_ulong = 0x00000008;
589+
pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
590+
pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
591+
pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
592+
pub const SF_APPEND: ::c_ulong = 0x00040000;
593+
583594
f! {
584595
pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
585596
status >> 8
@@ -594,6 +605,11 @@ f! {
594605
}
595606
}
596607

608+
extern {
609+
pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
610+
pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int;
611+
}
612+
597613
#[link(name = "util")]
598614
extern {
599615
pub fn mincore(addr: *mut ::c_void, len: ::size_t,

src/unix/bsd/netbsdlike/netbsd/mod.rs

+7
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,11 @@ pub const PT_GET_EVENT_MASK: ::c_int = 17;
992992
pub const PT_GET_PROCESS_STATE: ::c_int = 18;
993993
pub const PT_FIRSTMACH: ::c_int = 32;
994994

995+
// Flags for chflags(2)
996+
pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
997+
pub const SF_LOG: ::c_ulong = 0x00400000;
998+
pub const SF_SNAPINVAL: ::c_ulong = 0x00800000;
999+
9951000
// dirfd() is a macro on netbsd to access
9961001
// the first field of the struct where dirp points to:
9971002
// http://cvsweb.netbsd.org/bsdweb.cgi/src/include/dirent.h?rev=1.36
@@ -1027,6 +1032,8 @@ extern {
10271032
pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,
10281033
nitems: ::c_int, sevp: *mut sigevent) -> ::c_int;
10291034

1035+
pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
1036+
10301037
pub fn extattr_delete_fd(fd: ::c_int,
10311038
attrnamespace: ::c_int,
10321039
attrname: *const ::c_char) -> ::c_int;

src/unix/bsd/netbsdlike/openbsdlike/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,8 @@ f! {
707707
}
708708

709709
extern {
710+
pub fn chflagsat(fd: ::c_int, path: *const ::c_char, flags: ::c_ulong,
711+
atflag: ::c_int) -> ::c_int;
710712
pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;
711713
pub fn getnameinfo(sa: *const ::sockaddr,
712714
salen: ::socklen_t,

0 commit comments

Comments
 (0)