mirror of https://github.com/nirenjan/libx52.git
Move command processing into separate thread
This will help in moving a lot of the functionality out of the main thread, and limit the main thread to just signal handling.cpp
parent
dfa78ff2a9
commit
b822d3aed8
|
@ -11,17 +11,20 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <pthread.h>
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#define PINELOG_MODULE X52D_MOD_COMMAND
|
#define PINELOG_MODULE X52D_MOD_COMMAND
|
||||||
#include "pinelog.h"
|
#include "pinelog.h"
|
||||||
#include "x52d_const.h"
|
#include "x52d_const.h"
|
||||||
#include "x52d_command.h"
|
#include "x52d_command.h"
|
||||||
#include "x52d_config.h"
|
#include "x52d_config.h"
|
||||||
|
#include "x52dcomm-internal.h"
|
||||||
|
|
||||||
#define MAX_CONN (X52D_MAX_CLIENTS + 1)
|
#define MAX_CONN (X52D_MAX_CLIENTS + 1)
|
||||||
|
|
||||||
|
@ -30,14 +33,9 @@
|
||||||
static int client_fd[X52D_MAX_CLIENTS];
|
static int client_fd[X52D_MAX_CLIENTS];
|
||||||
static int active_clients;
|
static int active_clients;
|
||||||
|
|
||||||
void x52d_command_init(void)
|
static pthread_t command_thr;
|
||||||
{
|
static int command_sock_fd;
|
||||||
for (int i = 0; i < X52D_MAX_CLIENTS; i++) {
|
static const char *command_sock;
|
||||||
client_fd[i] = INVALID_CLIENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
active_clients = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void register_client(int sock_fd)
|
static void register_client(int sock_fd)
|
||||||
{
|
{
|
||||||
|
@ -507,3 +505,108 @@ int x52d_command_loop(int sock_fd)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void * x52d_command_thread(void *param)
|
||||||
|
{
|
||||||
|
for (;;) {
|
||||||
|
if (x52d_command_loop(command_sock_fd) < 0) {
|
||||||
|
PINELOG_FATAL(_("Error %d during command loop: %s"),
|
||||||
|
errno, strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int x52d_command_init(const char *sock_path)
|
||||||
|
{
|
||||||
|
int sock_fd;
|
||||||
|
int len;
|
||||||
|
struct sockaddr_un local;
|
||||||
|
int flags;
|
||||||
|
|
||||||
|
for (int i = 0; i < X52D_MAX_CLIENTS; i++) {
|
||||||
|
client_fd[i] = INVALID_CLIENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
active_clients = 0;
|
||||||
|
|
||||||
|
command_sock = sock_path;
|
||||||
|
command_sock_fd = -1;
|
||||||
|
|
||||||
|
len = x52d_setup_command_sock(command_sock, &local);
|
||||||
|
if (len < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
|
if (sock_fd < 0) {
|
||||||
|
/* Failure creating the socket. Abort early */
|
||||||
|
PINELOG_ERROR(_("Error creating command socket: %s"), strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mark the socket as non-blocking */
|
||||||
|
flags = fcntl(sock_fd, F_GETFL);
|
||||||
|
if (flags < 0) {
|
||||||
|
PINELOG_ERROR(_("Error getting command socket flags: %s"), strerror(errno));
|
||||||
|
goto sock_failure;
|
||||||
|
}
|
||||||
|
if (fcntl(sock_fd, F_SETFL, flags | O_NONBLOCK) < 0) {
|
||||||
|
PINELOG_ERROR(_("Error setting command socket flags: %s"), strerror(errno));
|
||||||
|
goto sock_failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Cleanup any existing socket */
|
||||||
|
unlink(local.sun_path);
|
||||||
|
if (bind(sock_fd, (struct sockaddr *)&local, (socklen_t)len) < 0) {
|
||||||
|
/* Failure binding socket */
|
||||||
|
PINELOG_ERROR(_("Error binding to command socket: %s"), strerror(errno));
|
||||||
|
goto listen_failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (listen(sock_fd, X52D_MAX_CLIENTS) < 0) {
|
||||||
|
PINELOG_ERROR(_("Error listening on command socket: %s"), strerror(errno));
|
||||||
|
goto listen_failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
command_sock_fd = sock_fd;
|
||||||
|
if (command_sock_fd < 0) {
|
||||||
|
command_sock_fd = -1;
|
||||||
|
goto listen_failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
PINELOG_INFO(_("Starting command processing thread"));
|
||||||
|
pthread_create(&command_thr, NULL, x52d_command_thread, NULL);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
listen_failure:
|
||||||
|
unlink(local.sun_path);
|
||||||
|
sock_failure:
|
||||||
|
if (command_sock_fd >= 0) {
|
||||||
|
close(command_sock_fd);
|
||||||
|
command_sock_fd = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void x52d_command_exit(void)
|
||||||
|
{
|
||||||
|
PINELOG_INFO(_("Shutting down command processing thread"));
|
||||||
|
pthread_cancel(command_thr);
|
||||||
|
|
||||||
|
// Close the socket and remove the socket file
|
||||||
|
if (command_sock_fd >= 0) {
|
||||||
|
command_sock = x52d_command_sock_path(command_sock);
|
||||||
|
PINELOG_TRACE("Closing command socket %s", command_sock);
|
||||||
|
|
||||||
|
close(command_sock_fd);
|
||||||
|
command_sock_fd = -1;
|
||||||
|
|
||||||
|
unlink(command_sock);
|
||||||
|
command_sock = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
#ifndef X52D_COMMAND_H
|
#ifndef X52D_COMMAND_H
|
||||||
#define X52D_COMMAND_H
|
#define X52D_COMMAND_H
|
||||||
|
|
||||||
void x52d_command_init(void);
|
int x52d_command_init(const char *sock_path);
|
||||||
|
void x52d_command_exit(void);
|
||||||
int x52d_command_loop(int sock_fd);
|
int x52d_command_loop(int sock_fd);
|
||||||
|
|
||||||
#endif // !defined X52D_COMMAND_H
|
#endif // !defined X52D_COMMAND_H
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "x52d_clock.h"
|
#include "x52d_clock.h"
|
||||||
|
@ -197,59 +196,6 @@ static void start_daemon(bool foreground, const char *pid_file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bind and listen to the command socket */
|
|
||||||
static int listen_command(const char *command_sock)
|
|
||||||
{
|
|
||||||
int sock_fd;
|
|
||||||
int len;
|
|
||||||
struct sockaddr_un local;
|
|
||||||
int flags;
|
|
||||||
|
|
||||||
len = x52d_setup_command_sock(command_sock, &local);
|
|
||||||
if (len < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
|
||||||
if (sock_fd < 0) {
|
|
||||||
/* Failure creating the socket. Abort early */
|
|
||||||
PINELOG_ERROR(_("Error creating command socket: %s"), strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mark the socket as non-blocking */
|
|
||||||
flags = fcntl(sock_fd, F_GETFL);
|
|
||||||
if (flags < 0) {
|
|
||||||
PINELOG_ERROR(_("Error getting command socket flags: %s"), strerror(errno));
|
|
||||||
goto sock_failure;
|
|
||||||
}
|
|
||||||
if (fcntl(sock_fd, F_SETFL, flags | O_NONBLOCK) < 0) {
|
|
||||||
PINELOG_ERROR(_("Error setting command socket flags: %s"), strerror(errno));
|
|
||||||
goto sock_failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cleanup any existing socket */
|
|
||||||
unlink(local.sun_path);
|
|
||||||
if (bind(sock_fd, (struct sockaddr *)&local, (socklen_t)len) < 0) {
|
|
||||||
/* Failure binding socket */
|
|
||||||
PINELOG_ERROR(_("Error binding to command socket: %s"), strerror(errno));
|
|
||||||
goto listen_failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (listen(sock_fd, X52D_MAX_CLIENTS) < 0) {
|
|
||||||
PINELOG_ERROR(_("Error listening on command socket: %s"), strerror(errno));
|
|
||||||
goto listen_failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sock_fd;
|
|
||||||
|
|
||||||
listen_failure:
|
|
||||||
unlink(local.sun_path);
|
|
||||||
sock_failure:
|
|
||||||
close(sock_fd);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int verbosity = 0;
|
int verbosity = 0;
|
||||||
|
@ -260,7 +206,6 @@ int main(int argc, char **argv)
|
||||||
const char *pid_file = NULL;
|
const char *pid_file = NULL;
|
||||||
const char *command_sock = NULL;
|
const char *command_sock = NULL;
|
||||||
int opt;
|
int opt;
|
||||||
int command_sock_fd;
|
|
||||||
int rc;
|
int rc;
|
||||||
sigset_t sigblockset;
|
sigset_t sigblockset;
|
||||||
|
|
||||||
|
@ -366,7 +311,9 @@ int main(int argc, char **argv)
|
||||||
// Start device threads
|
// Start device threads
|
||||||
x52d_dev_init();
|
x52d_dev_init();
|
||||||
x52d_clock_init();
|
x52d_clock_init();
|
||||||
x52d_command_init();
|
if (x52d_command_init(command_sock) < 0) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
#if defined(HAVE_EVDEV)
|
#if defined(HAVE_EVDEV)
|
||||||
x52d_io_init();
|
x52d_io_init();
|
||||||
x52d_mouse_evdev_init();
|
x52d_mouse_evdev_init();
|
||||||
|
@ -379,17 +326,12 @@ int main(int argc, char **argv)
|
||||||
errno, strerror(errno));
|
errno, strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
command_sock_fd = listen_command(command_sock);
|
|
||||||
if (command_sock_fd < 0) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply configuration
|
// Apply configuration
|
||||||
x52d_config_apply();
|
x52d_config_apply();
|
||||||
|
|
||||||
flag_quit = 0;
|
flag_quit = 0;
|
||||||
while(!flag_quit) {
|
while(!flag_quit) {
|
||||||
x52d_command_loop(command_sock_fd);
|
pause();
|
||||||
|
|
||||||
/* Check if we need to reload configuration */
|
/* Check if we need to reload configuration */
|
||||||
if (flag_reload) {
|
if (flag_reload) {
|
||||||
|
@ -412,19 +354,12 @@ cleanup:
|
||||||
// Stop device threads
|
// Stop device threads
|
||||||
x52d_clock_exit();
|
x52d_clock_exit();
|
||||||
x52d_dev_exit();
|
x52d_dev_exit();
|
||||||
|
x52d_command_exit();
|
||||||
#if defined(HAVE_EVDEV)
|
#if defined(HAVE_EVDEV)
|
||||||
x52d_mouse_evdev_exit();
|
x52d_mouse_evdev_exit();
|
||||||
x52d_io_exit();
|
x52d_io_exit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Close the socket and remove the socket file
|
|
||||||
if (command_sock_fd >= 0) {
|
|
||||||
command_sock = x52d_command_sock_path(command_sock);
|
|
||||||
PINELOG_TRACE("Closing command socket %s", command_sock);
|
|
||||||
close(command_sock_fd);
|
|
||||||
unlink(command_sock);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove the PID file
|
// Remove the PID file
|
||||||
PINELOG_TRACE("Removing PID file %s", pid_file);
|
PINELOG_TRACE("Removing PID file %s", pid_file);
|
||||||
unlink(pid_file);
|
unlink(pid_file);
|
||||||
|
|
117
po/libx52.pot
117
po/libx52.pot
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: libx52 0.2.3\n"
|
"Project-Id-Version: libx52 0.2.3\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||||
"POT-Creation-Date: 2022-07-27 11:30-0700\n"
|
"POT-Creation-Date: 2022-07-27 12:45-0700\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -493,17 +493,17 @@ msgstr ""
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:64
|
#: daemon/x52d_main.c:63
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d setting log file: %s\n"
|
msgid "Error %d setting log file: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:80
|
#: daemon/x52d_main.c:79
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d installing handler for signal %d: %s"
|
msgid "Error %d installing handler for signal %d: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:91
|
#: daemon/x52d_main.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: %s [-f] [-v] [-q]\n"
|
"Usage: %s [-f] [-v] [-q]\n"
|
||||||
|
@ -512,108 +512,83 @@ msgid ""
|
||||||
"\t[-s command-socket-path]\n"
|
"\t[-s command-socket-path]\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:123
|
#: daemon/x52d_main.c:122
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Daemon is already running as PID %u"
|
msgid "Daemon is already running as PID %u"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:216
|
#: daemon/x52d_main.c:262
|
||||||
#, c-format
|
|
||||||
msgid "Error creating command socket: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:223
|
|
||||||
#, c-format
|
|
||||||
msgid "Error getting command socket flags: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:227
|
|
||||||
#, c-format
|
|
||||||
msgid "Error setting command socket flags: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:235
|
|
||||||
#, c-format
|
|
||||||
msgid "Error binding to command socket: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:240
|
|
||||||
#, c-format
|
|
||||||
msgid "Error listening on command socket: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:317
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unable to parse configuration override '%s'\n"
|
msgid "Unable to parse configuration override '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345
|
#: daemon/x52d_main.c:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Foreground = %s"
|
msgid "Foreground = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:290 daemon/x52d_main.c:291
|
||||||
msgid "true"
|
msgid "true"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:290 daemon/x52d_main.c:291
|
||||||
msgid "false"
|
msgid "false"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quiet = %s"
|
msgid "Quiet = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:347
|
#: daemon/x52d_main.c:292
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Verbosity = %d"
|
msgid "Verbosity = %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:348
|
#: daemon/x52d_main.c:293
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file = %s"
|
msgid "Log file = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:349
|
#: daemon/x52d_main.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Config file = %s"
|
msgid "Config file = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:350
|
#: daemon/x52d_main.c:295
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "PID file = %s"
|
msgid "PID file = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:351
|
#: daemon/x52d_main.c:296
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Command socket = %s"
|
msgid "Command socket = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:362
|
#: daemon/x52d_main.c:307
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d blocking signals on child threads: %s"
|
msgid "Error %d blocking signals on child threads: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:378
|
#: daemon/x52d_main.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d unblocking signals on child threads: %s"
|
msgid "Error %d unblocking signals on child threads: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:396
|
#: daemon/x52d_main.c:338
|
||||||
msgid "Reloading X52 configuration"
|
msgid "Reloading X52 configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:403
|
#: daemon/x52d_main.c:345
|
||||||
msgid "Saving X52 configuration to disk"
|
msgid "Saving X52 configuration to disk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:409
|
#: daemon/x52d_main.c:351
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Received termination signal %s"
|
msgid "Received termination signal %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:432
|
#: daemon/x52d_main.c:367
|
||||||
msgid "Shutting down X52 daemon"
|
msgid "Shutting down X52 daemon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -671,35 +646,73 @@ msgstr ""
|
||||||
msgid "Shutting down X52 clock manager thread"
|
msgid "Shutting down X52 clock manager thread"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:53
|
#: daemon/x52d_command.c:51
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error accepting client connection on command socket: %s"
|
msgid "Error accepting client connection on command socket: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:90
|
#: daemon/x52d_command.c:88
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error when polling command socket: FD %d, error %d, len %lu"
|
msgid "Error when polling command socket: FD %d, error %d, len %lu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:117
|
#: daemon/x52d_command.c:115
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error when polling for command: %s"
|
msgid "Error when polling for command: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:121
|
#: daemon/x52d_command.c:119
|
||||||
msgid "Timed out when polling for command"
|
msgid "Timed out when polling for command"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:490
|
#: daemon/x52d_command.c:488
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error reading from client %d: %s"
|
msgid "Error reading from client %d: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_command.c:501
|
#: daemon/x52d_command.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Short write to client %d; expected %d bytes, wrote %d bytes"
|
msgid "Short write to client %d; expected %d bytes, wrote %d bytes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:513
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d during command loop: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:545
|
||||||
|
#, c-format
|
||||||
|
msgid "Error creating command socket: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:552
|
||||||
|
#, c-format
|
||||||
|
msgid "Error getting command socket flags: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:556
|
||||||
|
#, c-format
|
||||||
|
msgid "Error setting command socket flags: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:564
|
||||||
|
#, c-format
|
||||||
|
msgid "Error binding to command socket: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:569
|
||||||
|
#, c-format
|
||||||
|
msgid "Error listening on command socket: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:579
|
||||||
|
msgid "Starting command processing thread"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:597
|
||||||
|
msgid "Shutting down command processing thread"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_config.c:29
|
#: daemon/x52d_config.c:29
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d setting configuration defaults: %s"
|
msgid "Error %d setting configuration defaults: %s"
|
||||||
|
|
119
po/xx_PL.po
119
po/xx_PL.po
|
@ -7,8 +7,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: libx52 0.2.3\n"
|
"Project-Id-Version: libx52 0.2.3\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||||
"POT-Creation-Date: 2022-07-27 11:30-0700\n"
|
"POT-Creation-Date: 2022-07-27 12:45-0700\n"
|
||||||
"PO-Revision-Date: 2022-07-27 11:32-0700\n"
|
"PO-Revision-Date: 2022-07-27 12:45-0700\n"
|
||||||
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
||||||
"Language-Team: Dummy Language for testing i18n\n"
|
"Language-Team: Dummy Language for testing i18n\n"
|
||||||
"Language: xx_PL\n"
|
"Language: xx_PL\n"
|
||||||
|
@ -536,17 +536,17 @@ msgstr "Estingtay aracterchay 0x%02x..."
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OKay"
|
msgstr "OKay"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:64
|
#: daemon/x52d_main.c:63
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d setting log file: %s\n"
|
msgid "Error %d setting log file: %s\n"
|
||||||
msgstr "Erroray %d ettingsay oglay ilefay: %s\n"
|
msgstr "Erroray %d ettingsay oglay ilefay: %s\n"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:80
|
#: daemon/x52d_main.c:79
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d installing handler for signal %d: %s"
|
msgid "Error %d installing handler for signal %d: %s"
|
||||||
msgstr "Erroray %d installingay andlerhay orfay ignalsay %d: %s"
|
msgstr "Erroray %d installingay andlerhay orfay ignalsay %d: %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:91
|
#: daemon/x52d_main.c:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: %s [-f] [-v] [-q]\n"
|
"Usage: %s [-f] [-v] [-q]\n"
|
||||||
|
@ -559,108 +559,83 @@ msgstr ""
|
||||||
"\t[-c onfigcay-ilefay] [-p idpay-ilefay]\n"
|
"\t[-c onfigcay-ilefay] [-p idpay-ilefay]\n"
|
||||||
"\t[-s ommandcay-ocketsay-athpay]\n"
|
"\t[-s ommandcay-ocketsay-athpay]\n"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:123
|
#: daemon/x52d_main.c:122
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Daemon is already running as PID %u"
|
msgid "Daemon is already running as PID %u"
|
||||||
msgstr "Aemonday isay alreadyay unningray asay IDPay %u"
|
msgstr "Aemonday isay alreadyay unningray asay IDPay %u"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:216
|
#: daemon/x52d_main.c:262
|
||||||
#, c-format
|
|
||||||
msgid "Error creating command socket: %s"
|
|
||||||
msgstr "Erroray eatingcray ommandcay ocketsay: %s"
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:223
|
|
||||||
#, c-format
|
|
||||||
msgid "Error getting command socket flags: %s"
|
|
||||||
msgstr "Erroray ettinggay ommandcay ocketsay agsflay: %s"
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:227
|
|
||||||
#, c-format
|
|
||||||
msgid "Error setting command socket flags: %s"
|
|
||||||
msgstr "Erroray ettingsay ommandcay ocketsay agsflay: %s"
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:235
|
|
||||||
#, c-format
|
|
||||||
msgid "Error binding to command socket: %s"
|
|
||||||
msgstr "Erroray indingbay otay ommandcay ocketsay: %s"
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:240
|
|
||||||
#, c-format
|
|
||||||
msgid "Error listening on command socket: %s"
|
|
||||||
msgstr "Erroray isteninglay onay ommandcay ocketsay: %s"
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:317
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unable to parse configuration override '%s'\n"
|
msgid "Unable to parse configuration override '%s'\n"
|
||||||
msgstr "Unableay otay arsepay onfigurationcay overrideay '%s'\n"
|
msgstr "Unableay otay arsepay onfigurationcay overrideay '%s'\n"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345
|
#: daemon/x52d_main.c:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Foreground = %s"
|
msgid "Foreground = %s"
|
||||||
msgstr "Oregroundfay = %s"
|
msgstr "Oregroundfay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:290 daemon/x52d_main.c:291
|
||||||
msgid "true"
|
msgid "true"
|
||||||
msgstr "uetray"
|
msgstr "uetray"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:290 daemon/x52d_main.c:291
|
||||||
msgid "false"
|
msgid "false"
|
||||||
msgstr "alsefay"
|
msgstr "alsefay"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quiet = %s"
|
msgid "Quiet = %s"
|
||||||
msgstr "Uietqay = %s"
|
msgstr "Uietqay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:347
|
#: daemon/x52d_main.c:292
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Verbosity = %d"
|
msgid "Verbosity = %d"
|
||||||
msgstr "Erbosityvay = %d"
|
msgstr "Erbosityvay = %d"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:348
|
#: daemon/x52d_main.c:293
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file = %s"
|
msgid "Log file = %s"
|
||||||
msgstr "Oglay ilefay = %s"
|
msgstr "Oglay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:349
|
#: daemon/x52d_main.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Config file = %s"
|
msgid "Config file = %s"
|
||||||
msgstr "Onfigcay ilefay = %s"
|
msgstr "Onfigcay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:350
|
#: daemon/x52d_main.c:295
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "PID file = %s"
|
msgid "PID file = %s"
|
||||||
msgstr "IDPay ilefay = %s"
|
msgstr "IDPay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:351
|
#: daemon/x52d_main.c:296
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Command socket = %s"
|
msgid "Command socket = %s"
|
||||||
msgstr "Ommandcay ocketsay = %s"
|
msgstr "Ommandcay ocketsay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:362
|
#: daemon/x52d_main.c:307
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d blocking signals on child threads: %s"
|
msgid "Error %d blocking signals on child threads: %s"
|
||||||
msgstr "Erroray %d ockingblay ignalssay onay ildchay eadsthray: %s"
|
msgstr "Erroray %d ockingblay ignalssay onay ildchay eadsthray: %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:378
|
#: daemon/x52d_main.c:325
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d unblocking signals on child threads: %s"
|
msgid "Error %d unblocking signals on child threads: %s"
|
||||||
msgstr "Erroray %d unblockingay ignalssay onay ildchay eadsthray: %s"
|
msgstr "Erroray %d unblockingay ignalssay onay ildchay eadsthray: %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:396
|
#: daemon/x52d_main.c:338
|
||||||
msgid "Reloading X52 configuration"
|
msgid "Reloading X52 configuration"
|
||||||
msgstr "Eloadingray X52 onfigurationcay"
|
msgstr "Eloadingray X52 onfigurationcay"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:403
|
#: daemon/x52d_main.c:345
|
||||||
msgid "Saving X52 configuration to disk"
|
msgid "Saving X52 configuration to disk"
|
||||||
msgstr "Avingsay X52 onfigurationcay otay iskday"
|
msgstr "Avingsay X52 onfigurationcay otay iskday"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:409
|
#: daemon/x52d_main.c:351
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Received termination signal %s"
|
msgid "Received termination signal %s"
|
||||||
msgstr "Eceivedray erminationtay ignalsay %s"
|
msgstr "Eceivedray erminationtay ignalsay %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:432
|
#: daemon/x52d_main.c:367
|
||||||
msgid "Shutting down X52 daemon"
|
msgid "Shutting down X52 daemon"
|
||||||
msgstr "Uttingshay ownday X52 aemonday"
|
msgstr "Uttingshay ownday X52 aemonday"
|
||||||
|
|
||||||
|
@ -721,37 +696,75 @@ msgstr "Erroray %d initializingay ockclay eadthray: %s"
|
||||||
msgid "Shutting down X52 clock manager thread"
|
msgid "Shutting down X52 clock manager thread"
|
||||||
msgstr "Uttingshay ownday X52 ockclay anagermay eadthray"
|
msgstr "Uttingshay ownday X52 ockclay anagermay eadthray"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:53
|
#: daemon/x52d_command.c:51
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error accepting client connection on command socket: %s"
|
msgid "Error accepting client connection on command socket: %s"
|
||||||
msgstr "Erroray acceptingay ientclay onnectioncay onay ommandcay ocketsay: %s"
|
msgstr "Erroray acceptingay ientclay onnectioncay onay ommandcay ocketsay: %s"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:90
|
#: daemon/x52d_command.c:88
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error when polling command socket: FD %d, error %d, len %lu"
|
msgid "Error when polling command socket: FD %d, error %d, len %lu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Erroray enwhay ollingpay ommandcay ocketsay: FDay %d, erroray %d, enlay %lu"
|
"Erroray enwhay ollingpay ommandcay ocketsay: FDay %d, erroray %d, enlay %lu"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:117
|
#: daemon/x52d_command.c:115
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error when polling for command: %s"
|
msgid "Error when polling for command: %s"
|
||||||
msgstr "Erroray enwhay ollingpay orfay ommandcay: %s"
|
msgstr "Erroray enwhay ollingpay orfay ommandcay: %s"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:121
|
#: daemon/x52d_command.c:119
|
||||||
msgid "Timed out when polling for command"
|
msgid "Timed out when polling for command"
|
||||||
msgstr "Imedtay outay enwhay ollingpay orfay ommandcay"
|
msgstr "Imedtay outay enwhay ollingpay orfay ommandcay"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:490
|
#: daemon/x52d_command.c:488
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error reading from client %d: %s"
|
msgid "Error reading from client %d: %s"
|
||||||
msgstr "Erroray eadingray omfray ientclay %d: %s"
|
msgstr "Erroray eadingray omfray ientclay %d: %s"
|
||||||
|
|
||||||
#: daemon/x52d_command.c:501
|
#: daemon/x52d_command.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Short write to client %d; expected %d bytes, wrote %d bytes"
|
msgid "Short write to client %d; expected %d bytes, wrote %d bytes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ortshay itewray otay ientclay %d; expecteday %d ytesbay, otewray %d ytesbay"
|
"Ortshay itewray otay ientclay %d; expecteday %d ytesbay, otewray %d ytesbay"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:513
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d during command loop: %s"
|
||||||
|
msgstr "Erroray %d uringday ommandcay ooplay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:545
|
||||||
|
#, c-format
|
||||||
|
msgid "Error creating command socket: %s"
|
||||||
|
msgstr "Erroray eatingcray ommandcay ocketsay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:552
|
||||||
|
#, c-format
|
||||||
|
msgid "Error getting command socket flags: %s"
|
||||||
|
msgstr "Erroray ettinggay ommandcay ocketsay agsflay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:556
|
||||||
|
#, c-format
|
||||||
|
msgid "Error setting command socket flags: %s"
|
||||||
|
msgstr "Erroray ettingsay ommandcay ocketsay agsflay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:564
|
||||||
|
#, c-format
|
||||||
|
msgid "Error binding to command socket: %s"
|
||||||
|
msgstr "Erroray indingbay otay ommandcay ocketsay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:569
|
||||||
|
#, c-format
|
||||||
|
msgid "Error listening on command socket: %s"
|
||||||
|
msgstr "Erroray isteninglay onay ommandcay ocketsay: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:579
|
||||||
|
msgid "Starting command processing thread"
|
||||||
|
msgstr "Artingstay ommandcay ocessingpray eadthray"
|
||||||
|
|
||||||
|
#: daemon/x52d_command.c:597
|
||||||
|
msgid "Shutting down command processing thread"
|
||||||
|
msgstr "Uttingshay ownday ommandcay ocessingpray eadthray"
|
||||||
|
|
||||||
#: daemon/x52d_config.c:29
|
#: daemon/x52d_config.c:29
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error %d setting configuration defaults: %s"
|
msgid "Error %d setting configuration defaults: %s"
|
||||||
|
|
Loading…
Reference in New Issue