301161a7a4
This makes the URIs shorter and dynamic: whatever the default branch the repo uses will be used.
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/*
|
|
* rc-wtmp.c
|
|
* This file contains routines to deal with the wtmp file.
|
|
*/
|
|
|
|
/*
|
|
* Copyright 2017 The OpenRC Authors.
|
|
* See the Authors file at the top-level directory of this distribution and
|
|
* https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
|
|
*
|
|
* This file is part of OpenRC. It is subject to the license terms in
|
|
* the LICENSE file found in the top-level directory of this
|
|
* distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
|
|
* This file may not be copied, modified, propagated, or distributed
|
|
* except according to the terms contained in the LICENSE file.
|
|
*/
|
|
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#include <sys/utsname.h>
|
|
|
|
#include "rc-wtmp.h"
|
|
|
|
void log_wtmp(const char *user, const char *id, pid_t pid, int type,
|
|
const char *line)
|
|
{
|
|
struct timeval tv;
|
|
struct utmp utmp;
|
|
struct utsname uname_buf;
|
|
|
|
memset(&utmp, 0, sizeof(utmp));
|
|
gettimeofday(&tv, NULL);
|
|
utmp.ut_tv.tv_sec = tv.tv_sec;
|
|
utmp.ut_tv.tv_usec = tv.tv_usec;
|
|
utmp.ut_pid = pid;
|
|
utmp.ut_type = type;
|
|
strncpy(utmp.ut_name, user, sizeof(utmp.ut_name));
|
|
strncpy(utmp.ut_id , id , sizeof(utmp.ut_id ));
|
|
strncpy(utmp.ut_line, line, sizeof(utmp.ut_line));
|
|
|
|
/* Put the OS version in place of the hostname */
|
|
if (uname(&uname_buf) == 0)
|
|
strncpy(utmp.ut_host, uname_buf.release, sizeof(utmp.ut_host));
|
|
|
|
updwtmp(WTMP_FILE, &utmp);
|
|
}
|