-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
269 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2. | ||
.TH \FBCONSOLELOCKER\FR "8" "August 2023" "consolelocker version 1.0.0" "System Administration Utilities" | ||
.SH NAME | ||
\fBconsolelocker\fR \- virtual console lock daemon | ||
.SH SYNOPSIS | ||
.B consolelocker | ||
[\fI\,OPTIONS\/\fR] | ||
.SH DESCRIPTION | ||
This is a program to lock sessions on the Linux console | ||
and virtual consoles. After startup it open FIFO to read | ||
events from console user. | ||
This program is simple wrapper for vlock(1). | ||
.SH OPTIONS | ||
.TP | ||
\fB\-g\fR, \fB\-\-group\fR=\fI\,NAME\/\fR | ||
make socket group writable | ||
.TP | ||
\fB\-p\fR, \fB\-\-pidfile\fR=\fI\,FILE\/\fR | ||
pidfile location; | ||
.TP | ||
\fB\-l\fR, \fB\-\-loglevel\fR=\fI\,LVL\/\fR | ||
set logging level; | ||
.TP | ||
\fB\-f\fR, \fB\-\-foreground\fR | ||
stay in the foreground; | ||
.TP | ||
\fB\-V\fR, \fB\-\-version\fR | ||
print program version and exit. | ||
.TP | ||
\fB\-h\fR, \fB\-\-help\fR | ||
output a brief help message. | ||
.SH FILES | ||
.TP | ||
.I /var/run/consolelocker | ||
.TP | ||
\fI/var/run/consolelocker.pid | ||
.SH AUTHOR | ||
Written by Alexey Gladkov <[email protected]> | ||
.SH COPYRIGHT | ||
Copyright \(co 2006\-2018 Alexey Gladkov <[email protected]> | ||
.PP | ||
.br | ||
This is free software; see the source for copying conditions. | ||
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
.SH "SEE ALSO" | ||
.BR vlock (1), | ||
.BR pam_console (8). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/sh | ||
exec 2>&1 | ||
exec consolelocker -g wheel -f |
23 changes: 23 additions & 0 deletions
23
srcpkgs/consolelocker/patches/0001-Bump-VERSION-to-1.1.0-in-Makefile.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
From 2d434a5d6c189e6a9f8e96b5cb04d1650052c76d Mon Sep 17 00:00:00 2001 | ||
From: Nikita Ermakov <[email protected]> | ||
Date: Sun, 10 Dec 2023 23:11:23 -0600 | ||
Subject: [PATCH 1/2] Bump VERSION to 1.1.0 in Makefile | ||
|
||
--- | ||
Makefile | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/Makefile b/Makefile | ||
index b0006d7..810a7ae 100644 | ||
--- a/Makefile | ||
+++ b/Makefile | ||
@@ -1,5 +1,5 @@ | ||
PROJECT = consolelocker | ||
-VERSION = 1.0.0 | ||
+VERSION = 1.1.0 | ||
|
||
MAN8PAGES = consolelocker.8 | ||
|
||
-- | ||
2.42.0 | ||
|
169 changes: 169 additions & 0 deletions
169
srcpkgs/consolelocker/patches/0002-Port-to-musl-libc.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
From 2647af44bb181006bc6335d2369bf7837bec099f Mon Sep 17 00:00:00 2001 | ||
From: Nikita Ermakov <[email protected]> | ||
Date: Sun, 10 Dec 2023 20:52:24 -0600 | ||
Subject: [PATCH 2/2] Port to musl libc | ||
|
||
--- | ||
consolelocker.c | 26 ++++++++++++++++++++++++-- | ||
pidfile.c | 1 + | ||
sockets.h | 9 +++++++++ | ||
vlocka.c | 15 +++++++++++++-- | ||
xmalloc.c | 7 ++++++- | ||
5 files changed, 53 insertions(+), 5 deletions(-) | ||
|
||
diff --git a/consolelocker.c b/consolelocker.c | ||
index 53282cc..0c4bc64 100644 | ||
--- a/consolelocker.c | ||
+++ b/consolelocker.c | ||
@@ -42,8 +42,17 @@ | ||
#include <grp.h> | ||
#include <fcntl.h> | ||
#include <errno.h> | ||
-#include <error.h> | ||
- | ||
+#ifdef __GLIBC__ | ||
+# include <error.h> | ||
+#else // Consider musl | ||
+# define program_invocation_short_name __progname | ||
+extern char *__progname; | ||
+// logging.h defined err() function thus let's not use err.h from musl and | ||
+// define our error() function which will use verr() from musl. | ||
+# include <stdarg.h> | ||
+_Noreturn void verr(int status, const char *fmt, va_list ap); | ||
+_Noreturn static void error(int status, int errnum __attribute__((unused)), const char *fmt, ...); | ||
+#endif | ||
#include "logging.h" | ||
#include "pidfile.h" | ||
#include "epoll.h" | ||
@@ -75,6 +84,15 @@ static struct option long_options[] = { | ||
{ 0, 0, 0, 0 } | ||
}; | ||
|
||
+#ifndef __GLIBC__ | ||
+_Noreturn static void error(int status, int errnum __attribute__((unused)), const char *fmt, ...) { | ||
+ va_list ap; | ||
+ va_start(ap, fmt); | ||
+ verr(status, fmt, ap); | ||
+ va_end(ap); | ||
+} | ||
+#endif | ||
+ | ||
static void __attribute__((noreturn)) | ||
print_help(int ret) | ||
{ | ||
@@ -106,11 +124,13 @@ print_version(void) | ||
exit(EXIT_SUCCESS); | ||
} | ||
|
||
+#ifdef __GLIBC__ | ||
static void | ||
my_error_print_progname(void) | ||
{ | ||
fprintf(stderr, "%s: ", program_invocation_short_name); | ||
} | ||
+#endif | ||
|
||
static int | ||
handle_signal(uint32_t signo) | ||
@@ -225,7 +245,9 @@ int main(int argc, char **argv) | ||
int fd_signal = -1; | ||
int fd_conn = -1; | ||
|
||
+#ifdef __GLIBC__ | ||
error_print_progname = my_error_print_progname; | ||
+#endif | ||
|
||
while ((i = getopt_long(argc, argv, "fhVg:p:l:", long_options, NULL)) != -1) { | ||
switch (i) { | ||
diff --git a/pidfile.c b/pidfile.c | ||
index bf135e7..bc10606 100644 | ||
--- a/pidfile.c | ||
+++ b/pidfile.c | ||
@@ -31,6 +31,7 @@ | ||
#include <string.h> | ||
#include <errno.h> | ||
#include <signal.h> | ||
+#include <fcntl.h> | ||
|
||
#include "pidfile.h" | ||
|
||
diff --git a/sockets.h b/sockets.h | ||
index d39b7a1..b6ad873 100644 | ||
--- a/sockets.h | ||
+++ b/sockets.h | ||
@@ -17,6 +17,15 @@ | ||
#ifndef _SOCKETS_H_ | ||
#define _SOCKETS_H_ | ||
|
||
+#ifndef __GLIBC__ | ||
+# define TEMP_FAILURE_RETRY(expression) \ | ||
+ (__extension__ \ | ||
+ ({ long int __result; \ | ||
+ do __result = (long int) (expression); \ | ||
+ while (__result == -1L && errno == EINTR); \ | ||
+ __result; })) | ||
+#endif | ||
+ | ||
int unix_listen(const char *, const char *); | ||
int unix_connect(const char *, const char *); | ||
|
||
diff --git a/vlocka.c b/vlocka.c | ||
index ffadec7..5750a0d 100644 | ||
--- a/vlocka.c | ||
+++ b/vlocka.c | ||
@@ -28,13 +28,22 @@ | ||
#include <signal.h> | ||
#include <pwd.h> | ||
#include <errno.h> | ||
-#include <error.h> | ||
- | ||
+#ifdef __GLIBC__ | ||
+# include <error.h> | ||
+#else // Consider musl | ||
+# define program_invocation_short_name __progname | ||
+extern char *__progname; | ||
+# include <err.h> | ||
+# define error(status, errnum, ...) err(status, __VA_ARGS__) | ||
+#endif | ||
+ | ||
+#ifdef __GLIBC__ | ||
static void | ||
my_error_print_progname(void) | ||
{ | ||
fprintf(stderr, "%s: ", program_invocation_short_name); | ||
} | ||
+#endif | ||
|
||
static inline void | ||
clear(void) | ||
@@ -66,7 +75,9 @@ main(int argc, char ** argv) | ||
int noclear = 0; | ||
struct passwd *pw = NULL; | ||
|
||
+#ifdef __GLIBC__ | ||
error_print_progname = my_error_print_progname; | ||
+#endif | ||
|
||
if (argc < 2) | ||
error(EXIT_FAILURE, 0, "Usage: %s <uid>", program_invocation_short_name); | ||
diff --git a/xmalloc.c b/xmalloc.c | ||
index 4c57d18..e4874f3 100644 | ||
--- a/xmalloc.c | ||
+++ b/xmalloc.c | ||
@@ -21,7 +21,12 @@ | ||
#include <stdarg.h> | ||
#include <stdio.h> | ||
#include <errno.h> | ||
-#include <error.h> | ||
+#ifdef __GLIBC__ | ||
+# include <error.h> | ||
+#else | ||
+# include <err.h> | ||
+# define error(status, errnum, ...) err(status, __VA_ARGS__) | ||
+#endif | ||
#include <limits.h> | ||
|
||
#include "xmalloc.h" | ||
-- | ||
2.42.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# Template file for 'consolelocker' | ||
pkgname=consolelocker | ||
version=1.1.0 | ||
revision=1 | ||
build_style=gnu-makefile | ||
# Disable manpage generation for now as the program uses help2man(1) to | ||
# generate a man page. help2man(1) executes binary to get the help message. | ||
# This causes issues with cross compiled binaries. It could be solved by using | ||
# binfmt but let's bundle the manpage. | ||
make_build_args="MAN8PAGES=" | ||
depends=kbd | ||
short_desc="Lock sessions on the Linux console and virtual consoles" | ||
maintainer="Nikita Ermakov <[email protected]>" | ||
license="GPL-2.0-or-later" | ||
homepage="https://github.com/legionus/consolelocker" | ||
distfiles="https://github.com/legionus/consolelocker/archive/refs/tags/${version}-alt1.tar.gz" | ||
checksum="a26ce14bcecbe909743766cbc040afc673534300b2c21dc86c936fad9026f94d" | ||
|
||
do_install() { | ||
vbin consolelock | ||
vbin consolelocker | ||
# Helper program and script | ||
vmkdir usr/libexec/consolelocker 755 | ||
vinstall vlocka 700 usr/libexec/consolelocker/ | ||
vman "${FILESDIR}/consolelocker.8" | ||
vsv consolelockerd | ||
} |