Skip to content

Commit 394f97f

Browse files
snoggetgross35
authored andcommitted
gnu: Add proper structs for fpos_t and fpos64_t
(backport <#4345>) (cherry picked from commit 872642a)
1 parent f5dc070 commit 394f97f

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

src/unix/linux_like/linux/gnu/mod.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,24 @@ s! {
407407
#[cfg(target_pointer_width = "64")]
408408
__size: [c_char; 32],
409409
}
410+
411+
pub struct mbstate_t {
412+
__count: c_int,
413+
__wchb: [c_char; 4],
414+
}
415+
416+
pub struct fpos64_t {
417+
__pos: off64_t,
418+
__state: crate::mbstate_t,
419+
}
420+
421+
pub struct fpos_t {
422+
#[cfg(not(gnu_file_offset_bits64))]
423+
__pos: off_t,
424+
#[cfg(gnu_file_offset_bits64)]
425+
__pos: off64_t,
426+
__state: crate::mbstate_t,
427+
}
410428
}
411429

412430
impl siginfo_t {

src/unix/linux_like/linux/mod.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,14 @@ pub type iconv_t = *mut c_void;
7474
pub type sctp_assoc_t = __s32;
7575

7676
pub type eventfd_t = u64;
77-
missing! {
78-
#[cfg_attr(feature = "extra_traits", derive(Debug))]
79-
pub enum fpos64_t {} // FIXME(linux): fill this out with a struct
77+
78+
cfg_if! {
79+
if #[cfg(not(target_env = "gnu"))] {
80+
missing! {
81+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
82+
pub enum fpos64_t {} // FIXME(linux): fill this out with a struct
83+
}
84+
}
8085
}
8186

8287
e! {

src/unix/mod.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,11 +539,18 @@ cfg_if! {
539539
}
540540
}
541541

542+
cfg_if! {
543+
if #[cfg(not(target_env = "gnu"))] {
544+
missing! {
545+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
546+
pub enum fpos_t {} // FIXME(unix): fill this out with a struct
547+
}
548+
}
549+
}
550+
542551
missing! {
543552
#[cfg_attr(feature = "extra_traits", derive(Debug))]
544553
pub enum FILE {}
545-
#[cfg_attr(feature = "extra_traits", derive(Debug))]
546-
pub enum fpos_t {} // FIXME(unix): fill this out with a struct
547554
}
548555

549556
extern "C" {

0 commit comments

Comments
 (0)