crabc 0.7.8

A Rust musl-compatible libc with a dynamic linker
/* Copyright (c) 2026 Meng Zhuo */
/* SPDX-License-Identifier: BSD-3-Clause */

#ifndef _UTMPX_H
#define _UTMPX_H

#include <sys/types.h>
#include <sys/time.h>

#ifdef __cplusplus
extern "C" {
#endif

struct utmpx {
    short ut_type;
    short __ut_pad1;
    pid_t ut_pid;
    char ut_line[32];
    char ut_id[4];
    char ut_user[32];
    char ut_host[256];
    struct {
        short __e_termination;
        short __e_exit;
    } ut_exit;
    int ut_session;
    int __ut_pad2;
    struct timeval ut_tv;
    unsigned ut_addr_v6[4];
    char __unused[20];
};

void endutxent(void);
struct utmpx *getutxent(void);
struct utmpx *getutxid(const struct utmpx *);
struct utmpx *getutxline(const struct utmpx *);
struct utmpx *pututxline(const struct utmpx *);
void setutxent(void);
void updwtmpx(const char *, const struct utmpx *);
int utmpxname(const char *);

#define EMPTY 0
#define RUN_LVL 1
#define BOOT_TIME 2
#define NEW_TIME 3
#define OLD_TIME 4
#define INIT_PROCESS 5
#define LOGIN_PROCESS 6
#define USER_PROCESS 7
#define DEAD_PROCESS 8

#ifdef __cplusplus
}
#endif


/* musl 1.2.6 per-header compatibility macros */
#define e_exit __e_exit
#define e_termination __e_termination
#endif