libc structures¶
Idio supports the passing of opaque C pointers as
the C/pointer type.
Those C/pointers can be tagged with some type information which
can be used for access, setting (if appropriate) and printing.
struct group¶
Idio supports tagged references to C struct
group:
struct group
{
char *gr_name;
char *gr_passwd;
gid_t gr_gid;
char **gr_mem;
};
See also getgrgid and getgrnam.
- function libc/struct-group-ref group member¶
in C,
group->member- Param group:
- Type group:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
group -> member
- Rtype:
varies on member
Accessing gr_mem will return a list of strings.
- function libc/struct-group-as-string group¶
- Param group:
- Type group:
C/pointer
- Return:
string
- Rtype:
string
struct passwd¶
Idio supports tagged references to C struct
passwd:
struct passwd
{
char *pw_name;
char *pw_passwd;
uid_t pw_uid;
gid_t pw_gid;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
};
See also getpwuid and getpwnam.
- function libc/struct-passwd-ref passwd member¶
in C,
passwd->member- Param passwd:
- Type passwd:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
passwd -> member
- Rtype:
varies on member
- function libc/struct-passwd-as-string passwd¶
- Param passwd:
- Type passwd:
C/pointer
- Return:
string
- Rtype:
string
struct rlimit¶
Idio supports tagged references to C struct
rlimit:
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
using the structure member names rlim_cur and rlim_max.
See also getrlimit and setrlimit.
- function libc/struct-rlimit-ref rlimit member¶
in C,
rlimit->member- Param rlimit:
- Type rlimit:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
rlimit -> member
- Rtype:
varies on member
- function libc/struct-rlimit-set! rlimit member val¶
in C,
rlimit->member = val- Param rlimit:
- Type rlimit:
C/pointer
- Param member:
member name
- Type member:
symbol
- Param val:
a C/ type
- Type val:
varies on member
- Return:
#<unspec>
The C/ types for val are libc/rlim_t.
- function libc/struct-rlimit-as-string rlimit¶
- Param rlimit:
- Type rlimit:
C/pointer
- Return:
string
- Rtype:
string
struct-rlimit-as-stringis set to be the printer for alibc/struct-rlimit.
struct rusage¶
Idio supports tagged references to C struct
rusage:
struct rusage
{
struct timeval ru_utime;
struct timeval ru_stime;
};
using the structure member names ru_utime and ru_stime for
struct-timeval structures. The other
member names are not accessible due to portability concerns.
See also getrusage.
- function libc/struct-rusage-ref rusage member¶
in C,
rusage->member- Param rusage:
- Type rusage:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
rusage -> member
- Rtype:
varies on member
- function libc/struct-rusage-as-string rusage¶
- Param rusage:
- Type rusage:
C/pointer
- Return:
string
- Rtype:
string
struct-rusage-as-stringis set to be the printer for alibc/struct-rusage.The code implicitly uses the underlying C code for struct-timeval-as-string.
struct stat¶
Idio supports tagged references to C struct
stat:
struct stat
{
dev_t st_dev;
ino_t st_ino;
nlink_t st_nlink;
mode_t st_mode;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
off_t st_size;
blksize_t st_blksize;
blkcnt_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
};
using the structure member names st_dev, st_ino etc..
In addition the pseudo-member names st_atime, st_mtime and
st_ctime will access the tv_sec member of the corresponding
struct-timespec members to maintain the
legacy interface.
- function libc/struct-stat-as-string stat¶
- Param stat:
- Type stat:
C/pointer
- Return:
string
- Rtype:
string
struct-stat-as-stringis set to be the printer for alibc/struct-stat.The code implicitly uses the underlying C code for struct-timeval-as-string.
- function libc/struct-stat-ref stat member¶
in C,
stat->member- Param stat:
- Type stat:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
stat -> member
- Rtype:
varies on member
struct statvfs¶
Idio supports tagged references to C struct
statvfs:
struct statvfs
{
unsigned long f_bsize;
unsigned long f_frsize;
fsblkcnt_t f_blocks;
fsblkcnt_t f_bfree;
fsblkcnt_t f_bavail;
fsfilcnt_t f_files;
fsfilcnt_t f_ffree;
fsfilcnt_t f_favail;
unsigned long f_fsid;
unsigned long f_flag;
unsigned long f_namemax;
};
using the structure member names f_bsize, f_frsize etc..
See also statvfs and fstatvfs.
- function libc/struct-statvfs-as-string statvfs¶
- Param statvfs:
- Type statvfs:
C/pointer
- Return:
string
- Rtype:
string
struct-statvfs-as-stringis set to be the printer for alibc/struct-statvfs.
- function libc/struct-statvfs-ref statvfs member¶
in C,
statvfs->member- Param statvfs:
- Type statvfs:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
statvfs -> member
- Rtype:
varies on member
struct termios¶
Idio supports tagged references to C struct
termios:
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t[] c_cc;
speed_t c_ispeed;
speed_t c_ospeed;
};
using the structure member names c_iflag, c_oflag etc..
Note that SunOS does not define either of c_ispeed or c_ospeed
and OpenBSD defines speed_t as an int.
Linux’s c_line is not supported.
See also tcgetattr and tcsetattr.
- function libc/struct-termios-ref termios member¶
in C,
termios->member- Param termios:
- Type termios:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
termios -> member
- Rtype:
varies on member
- function libc/struct-termios-set! termios member val¶
in C,
termios->member = val- Param termios:
- Type termios:
C/pointer
- Param member:
member name
- Type member:
symbol
- Param val:
a C/ type
- Type val:
varies on member
- Return:
#<unspec>
The C/ types for val are libc/tcflag_t, libc/speed_t and C/pointer for c_cc.
- function libc/struct-termios-as-string termios¶
- Param termios:
- Type termios:
C/pointer
- Return:
string
- Rtype:
string
struct-termios-as-stringis set to be the printer for alibc/struct-termios.The
c_ccmember is not printed.
struct timespec¶
Idio supports tagged references to C struct
timespec:
struct timespec
{
time_t tv_sec;
long tv_nsec;
};
using the structure member names tv_sec and tv_nsec.
Note that tv_nsec is defined as a long due to portability
issues.
- function libc/struct-timespec-ref timespec member¶
in C,
timespec->member- Param timespec:
- Type timespec:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
timespec -> member
- Rtype:
varies on member
- function libc/struct-timespec-set! timespec member val¶
in C,
timespec->member = val- Param timespec:
- Type timespec:
C/pointer
- Param member:
member name
- Type member:
symbol
- Param val:
a C/ type
- Type val:
varies on member
- Return:
#<unspec>
The C/ types for val are libc/time_t, C/long.
- function libc/struct-timespec-as-string timespec¶
- Param timespec:
- Type timespec:
C/pointer
- Return:
string
- Rtype:
string
struct-timespec-as-stringis set to be the printer for alibc/struct-timespec.The code prints the structure in a pseudo-floating point format:
tv_sec.tv_nsecwith thetv_nsecpart formatted to 9 digits with leading 0 (zero) padding.
struct timeval¶
Idio supports tagged references to C struct
timeval:
struct timeval
{
time_t tv_sec;
suseconds_t tv_usec;
};
using the structure member names tv_sec and tv_usec.
Note that on some systems suseconds_t may be typedef’d to a
long.
See also gettimeofday.
- function libc/struct-timeval-ref timeval member¶
in C,
timeval->member- Param timeval:
- Type timeval:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
timeval -> member
- Rtype:
varies on member
- function libc/struct-timeval-set! timeval member val¶
in C,
timeval->member = val- Param timeval:
- Type timeval:
C/pointer
- Param member:
member name
- Type member:
symbol
- Param val:
a C/ type
- Type val:
varies on member
- Return:
#<unspec>
The C/ types for val are libc/time_t or libc/suseconds_t (or C/long on OpenBSD).
- function libc/subtract-struct-timeval tv1 tv2¶
A simple function to calculate the difference between two C struct timevals
tv1 - tv2
- Param tv1:
- Type tv1:
C/pointer
- Param tv2:
- Type tv2:
C/pointer
- Return:
- Rtype:
C/pointer
- Raises ^system-error:
- function libc/add-struct-timeval tv1 tv2¶
A simple function to calculate the sum of two C struct timevals
tv1 + tv2
- Param tv1:
- Type tv1:
C/pointer
- Param tv2:
- Type tv2:
C/pointer
- Return:
- Rtype:
C/pointer
- Raises ^system-error:
- function libc/struct-timeval-as-string timeval¶
- Param timeval:
- Type timeval:
C/pointer
- Return:
string
- Rtype:
string
struct-timeval-as-stringis set to be the printer for alibc/struct-timeval.The code prints the structure in a pseudo-floating point format:
tv_sec.tv_usecwith thetv_usecpart formatted to 6 digits with leading 0 (zero) padding.
struct tm¶
Idio supports tagged references to C struct
tm:
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long int tm_gmtoff;
char* tm_zone;
};
using the structure member names tm_sec, tm_min etc..
Note that SunOS does not define tm_gmtoff or tm_zone.
See also asctime, localtime, gmtime, mktime, strftime, strptime.
- function libc/struct-tm-ref tm member¶
in C,
tm->member- Param tm:
- Type tm:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
tm -> member
- Rtype:
varies on member
- function libc/struct-tm-set! tm member val¶
in C,
tm->member = val- Param tm:
- Type tm:
C/pointer
- Param member:
member name
- Type member:
symbol
- Param val:
a C/ type
- Type val:
varies on member
- Return:
#<unspec>
The C/ types for val are C/int, C/long and C/pointer for tm_zone.
struct tms¶
Idio supports tagged references to C struct
tms:
struct tms
{
clock_t tms_utime;
clock_t tms_stime;
clock_t tms_cutime;
clock_t tms_cstime;
};
using the structure member names tms_utime, tms_stime etc..
See also times.
- function libc/struct-tms-ref tms member¶
in C,
tms->member- Param tms:
- Type tms:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
tms -> member
- Rtype:
varies on member
- function libc/struct-tms-as-string tms¶
- Param tms:
- Type tms:
C/pointer
- Return:
string
- Rtype:
string
struct-tms-as-stringis set to be the printer for alibc/struct-tms.
struct utsname¶
Idio supports tagged references to C struct
utsname:
struct utsname
{
char[] sysname;
char[] nodename;
char[] release;
char[] version;
char[] machine;
char[] domainname;
};
using the structure member names sysname, nodename etc..
Note that domainname is only available on Linux.
See also uname and idio-uname.
- function libc/struct-utsname-ref utsname member¶
in C,
utsname->member- Param utsname:
- Type utsname:
C/pointer
- Param member:
member name
- Type member:
symbol
- Return:
utsname -> member
- Rtype:
varies on member
- function libc/struct-utsname-as-string utsname¶
- Param utsname:
- Type utsname:
C/pointer
- Return:
string
- Rtype:
string
struct-utsname-as-stringis set to be the printer for alibc/struct-utsname.
Last built at 2025-10-29T07:10:41Z+0000 from 3d9f9d3 (dev) for Idio 0.3.b.6