Compare commits

...

18 Commits

Author SHA1 Message Date
nirenjan 1902ca0d27 build: update PO files to reflect new version 2024-06-09 20:24:45 -07:00
nirenjan 6330d28c4d fix: Update Version metadata
Version metadata was not updated to reflect the new version. This fixes
the version metadata and updates the changelog file to reflect the
reason why the older version was deprecated.
2024-06-09 20:21:54 -07:00
nirenjan 5c37c4a9db doc: Update changelog for v0.3.1 2024-06-08 22:24:46 -07:00
nirenjan 863e43e4ad ci: Update stable OS versions for LKM build 2024-06-08 21:51:48 -07:00
nirenjan 49c57f4a6a Update workflows to use actions/checkout@v4
Since Node 16 has been deprecated, Github is requiring all Actions users
to migrate to Node 20, and therefore use actions/checkout@v4. This also
applies to other jobs that use Node 16 as their runtime.

See: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
2024-06-08 21:38:34 -07:00
nirenjan b0b9123a2e fix: Add CMOCKA_CFLAGS to test program CFLAGS
In macos-14, programs that rely on cmocka need to specify CMOCKA_CFLAGS
as part of their CFLAGS. This has not been an issue so far on older
versions of macOS, or on any release of Ubuntu, but it should be done to
ensure that the library headers can be found.
2024-06-08 21:25:42 -07:00
nirenjan 50a911160f fix: Disable macos-12 builds
macos-12 builds fail with the following error message:

    ld: warning: -undefined dynamic_lookup may not work with chained fixups

This causes the overall build status to be marked as fail, even though
macOS builds are not treated as failing the build. Also, macOS 12 is
going to effectively be end-of-lifed in November 2024, so it's not worth
spending the time to look into this.
2024-06-08 20:57:53 -07:00
nirenjan 7a56af032b fix: Disable mouse tests if cmocka is not present
Cmocka is optional for the builds, but the absence of cmocka causes the
Daemon build to fail when running `make check`. This commit addresses
that issue, while keeping tests that don't need cmocka.
2024-06-05 09:18:01 -07:00
nirenjan c46cec3138 ci: Disable macos-11 and add newer versions
Github has deprecated macos-11 runners and will stop them towards the
end of June 2024.
2024-06-05 09:16:22 -07:00
nirenjan 21050e40a8 Fix syntax of calloc calls in pinelog.c
`calloc` requires the count to be the first argument, and the size
parameter to be the second argument. However, this has not really caused
issues in the past, and older compilers were not so strict about it.

However, newer compilers (at least GCC 14) triggers a warning on this
and causes the build to fail.

Fixes #52
2024-06-04 15:02:27 -07:00
nirenjan 9e2e8cb8ff Add compiler details to bugreport 2023-06-02 00:02:05 -07:00
nirenjan 5f4dfe4c01 Add host details to version-info 2023-06-01 23:33:54 -07:00
nirenjan 0870518598 Disable builds on macOS 12
macOS 12 builds are currently failing with the following error:

    ld: warning: -undefined dynamic_lookup may not work with chained fixups

This is causing the overall CI to fail, therefore, I am disabling it
until such time that this can be fixed.
2023-01-21 02:49:45 -08:00
nirenjan d7b4a694fa Update Github action workflows to use actions/checkout@v3
Due to the Node 12 runtime being deprecated, jobs are required to move
to actions/checkout@v3 which uses Node 16 runtime.

See: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/
2023-01-21 02:39:59 -08:00
nirenjan 326ac992ac Fix hyperlink for ChangeLog.md
[skip ci] [skip doxy]
2023-01-21 02:34:17 -08:00
nirenjan d3973a0abf Update daemon protocol documentation
This change ensures that the documentation is in sync with the code.

[skip ci]
2023-01-04 10:07:20 -08:00
nirenjan ebca9566d7 Move common socket code into x52d_comm_internal.c 2023-01-04 08:42:47 -08:00
nirenjan 03c0376e7c Initialize variables to avoid maybe-uninitialized warnings
When building the package for PPA, gcc throws errors indicating that
some variables may be used uninitialized. This is not a real problem
that shows up during the CI build, but only when building using
dpkg-buildpackage.

This change adds some dummy initialization so that it avoids triggering
those warnings during debuild/dpkg-buildpackage.
2023-01-03 12:26:51 -08:00
24 changed files with 121 additions and 142 deletions

View File

@ -15,18 +15,18 @@ jobs:
if: "!(contains(github.event.head_commit.message, '[ci skip]') || contains(github.event.head_commit.message, '[skip ci]'))"
name: ${{ join(matrix.*, '/') }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ startsWith(matrix.os, 'macos-') || (matrix.os == 'ubuntu-22.04') }}
continue-on-error: ${{ startsWith(matrix.os, 'macos-') || (matrix.os == 'ubuntu-24.04') }}
env:
CC: ${{ matrix.cc }}
strategy:
matrix:
os: ['ubuntu-20.04', 'ubuntu-22.04', 'macos-11', 'macos-12']
os: ['ubuntu-20.04', 'ubuntu-22.04', 'ubuntu-22.04', 'macos-13', 'macos-14']
cc: ['gcc', 'clang']
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install dependencies (Ubuntu)
run: ./.github/scripts/install-dependencies-ubuntu.sh

View File

@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install dependencies
run: ./.github/scripts/install-dependencies-ubuntu.sh
@ -24,7 +24,7 @@ jobs:
run: find ./build -type f -print
- name: Deploy generated documentation to Github pages
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/docs/html

View File

@ -16,11 +16,11 @@ jobs:
strategy:
matrix:
os: ['ubuntu-18.04', 'ubuntu-20.04']
os: ['ubuntu-20.04', 'ubuntu-22.04']
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install kernel dependencies
run: ./.github/scripts/install-kernel-dependencies.sh

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install dependencies
run: ./.github/scripts/install-dependencies-ubuntu.sh

View File

@ -6,6 +6,28 @@ The format is based upon [Keep a Changelog].
## [Unreleased]
## [0.3.2] - 2024-06-09
### Added
- Updated bug report utility to add details about build host details and
compiler information.
### Fixed
- Updated syntax check for calloc calls. See
[#52](https://github.com/nirenjan/libx52/issues/52)
- Fixed a tooling bug where running make check on a system without cmocka
library installed would fail during daemon testing.
- Cleaned up daemon protocol documentation
### Changed
- Moved socket code around to make it easier to reuse the communication logic
out in both client(s) and server.
## 0.3.1 - 2024-06-08
**Important:** Tag 0.3.1 has a bad Version file and should not be used. This has
been superseded by 0.3.2 with corrected metadata. The changes from the previous
release are the same.
## [0.3.0] - 2022-12-25
### Added
- Bug report utility to make it easier to gather system and build information
@ -158,8 +180,9 @@ The format is based upon [Keep a Changelog].
[Keep a Changelog]: http://keepachangelog.com/en/1.0.0/
[Semantic Versioning]: http://semver.org/spec/v2.0.0.html
[TAP]: https://testanything.org
[Unreleased]: https://github.com/nirenjan/libx52/compare/v0.3.0...HEAD
[0.2.3]: https://github.com/nirenjan/libx52/compare/v0.2.3...v0.3.0
[Unreleased]: https://github.com/nirenjan/libx52/compare/v0.3.2...HEAD
[0.3.2]: https://github.com/nirenjan/libx52/compare/v0.3.0...v0.3.2
[0.3.0]: https://github.com/nirenjan/libx52/compare/v0.2.3...v0.3.0
[0.2.3]: https://github.com/nirenjan/libx52/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/nirenjan/libx52/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/nirenjan/libx52/compare/v0.2.0...v0.2.1

View File

@ -38,7 +38,7 @@ BUILT_SOURCES += version-info.h
CLEANFILES += version-info.h
version-info.h: ${top_srcdir}/version-info
${top_srcdir}/version-info ${top_srcdir} >$@
CC=${CC} ${top_srcdir}/version-info ${top_srcdir} >$@
########################################################################
# Include automake stubs

View File

@ -1 +1 @@
0.3.0
0.3.2

View File

@ -75,7 +75,9 @@ int main(int argc, char **argv)
puts("================");
printf("Package version: %s\n", VERSION);
printf("Build version: %s\n", BUILD_VERSION);
printf("Built on: %s\n", BUILD_DATE);
printf("Built on: %s\n", BUILD_HOST);
printf("Compiler: %s\n", BUILD_COMPILER);
printf("Build date: %s\n", BUILD_DATE);
printf("version-info %s\n", BUILD_VERSION_INFO_IDENT);
puts("");

View File

@ -17,7 +17,7 @@ TESTS += test-cli
check_PROGRAMS += test-cli
test_cli_SOURCES = cli/x52_cli.c cli/test_x52_cli.c
test_cli_CFLAGS = -DX52_CLI_TESTING -I $(top_srcdir)/libx52
test_cli_CFLAGS = @CMOCKA_CFLAGS@ -DX52_CLI_TESTING -I $(top_srcdir)/libx52
test_cli_LDFLAGS = @CMOCKA_LIBS@ $(WARN_LDFLAGS)
# Add a dependency on test_x52_cli_tests.c

View File

@ -112,6 +112,9 @@ EXTRA_DIST += \
daemon/tests/logging/module.tc \
daemon/tests/cli.tc
TESTS += daemon/test_daemon_comm.py
if HAVE_CMOCKA
check_PROGRAMS += x52d-mouse-test
x52d_mouse_test_SOURCES = \
@ -123,15 +126,14 @@ x52d_mouse_test_CFLAGS = \
-I $(top_srcdir)/libx52 \
-I $(top_srcdir)/libx52io \
-I $(top_srcdir)/lib/pinelog \
$(WARN_CFLAGS)
$(WARN_CFLAGS) @CMOCKA_CFLAGS@
x52d_mouse_test_LDFLAGS = @CMOCKA_LIBS@ $(WARN_LDFLAGS)
x52d_mouse_test_LDADD = \
lib/pinelog/libpinelog.la \
@LTLIBINTL@
TESTS += \
daemon/test_daemon_comm.py \
x52d-mouse-test
TESTS += x52d-mouse-test
endif
if HAVE_SYSTEMD
if !IS_MAKE_DISTCHECK

View File

@ -193,10 +193,9 @@ A side effect of this is that the client could request a set for any arbitrary
section and key pair, and if that pair was not recognized, it would be ignored,
but the daemon would still send an `OK` response.
Finally, this will only set the value within the configuration memory
structures, and will not invoke any callback to update the rest of the threads
or device state. The client will need to call the `apply` subcommand to actually
invoke the necessary callbacks.
This will set the value within the configuration memory structures, and will
immediately invoke the relevant callback to update the rest of the threads or
device state.
\b Arguments
@ -221,22 +220,6 @@ invoke the necessary callbacks.
ERR\0Error 22 setting 'led.fire'='none': Invalid argument\0
```
# Apply configuration
The `config apply` command will invoke all the callbacks and ensure that the
configuration is applied to the running state.
\b Arguments
- `config`
- `apply`
\b Returns
- `OK`
- `config`
- `apply`
*/
/**
@ -259,12 +242,14 @@ user to fine tune the logging while the daemon is running.
of modules is below:
- \c Config
- \c Cllient
- \c Clock
- \c Command
- \c Device
- \c IO
- \c LED
- \c Mouse
- \c Notify
# Logging levels

View File

@ -89,6 +89,22 @@ sock_failure:
return -1;
}
int x52d_listen_socket(struct sockaddr_un *local, int len, int sock_fd)
{
/* Cleanup any existing socket */
unlink(local->sun_path);
if (bind(sock_fd, (struct sockaddr *)local, (socklen_t)len) < 0) {
/* Failure binding socket */
return -1;
}
if (listen(sock_fd, X52D_MAX_CLIENTS) < 0) {
return -1;
}
return 0;
}
void x52d_split_args(int *argc, char **argv, char *buffer, int buflen)
{
int i = 0;

View File

@ -412,7 +412,6 @@ int x52d_command_init(const char *sock_path)
int sock_fd;
int len;
struct sockaddr_un local;
int flags;
x52d_client_init(client_fd);
@ -431,33 +430,17 @@ int x52d_command_init(const char *sock_path)
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;
/* Mark the socket as non-blocking */
if (x52d_set_socket_nonblocking(sock_fd) < 0) {
PINELOG_ERROR(_("Error marking command socket as nonblocking: %s"),
strerror(errno));
goto sock_failure;
}
if (x52d_listen_socket(&local, len, sock_fd) < 0) {
PINELOG_ERROR(_("Error listening on command socket: %s"), strerror(errno));
goto listen_failure;
}

View File

@ -52,15 +52,7 @@ static int listen_notify(const char *notify_sock_path)
return -1;
}
/* 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 notification socket: %s"), strerror(errno));
goto listen_failure;
}
if (listen(sock_fd, X52D_MAX_CLIENTS) < 0) {
if (x52d_listen_socket(&local, len, sock_fd) < 0) {
PINELOG_ERROR(_("Error listening on notification socket: %s"), strerror(errno));
goto listen_failure;
}

View File

@ -20,6 +20,7 @@ int x52d_setup_command_sock(const char *sock_path, struct sockaddr_un *remote);
const char *x52d_notify_sock_path(const char *sock_path);
int x52d_setup_notify_sock(const char *sock_path, struct sockaddr_un *remote);
int x52d_set_socket_nonblocking(int sock_fd);
int x52d_listen_socket(struct sockaddr_un *local, int len, int sock_fd);
void x52d_split_args(int *argc, char **argv, char *buffer, int buflen);
#endif // !defined X52DCOMM_INTERNAL_H

View File

@ -120,13 +120,13 @@ int pinelog_init(int count) {
free(module_level);
free(module_name);
module_level = calloc(sizeof(*module_level), count);
module_level = calloc(count, sizeof(*module_level));
if (module_level == NULL) {
rc = errno;
goto cleanup;
}
module_name = calloc(sizeof(*module_name), count);
module_name = calloc(count, sizeof(*module_name));
if (module_name == NULL) {
rc = errno;
goto cleanup;

View File

@ -31,7 +31,9 @@ static libusb_device_handle *libusbx52_init(void)
int rc;
ssize_t count;
int i;
libusb_device **list;
libusb_device dummy = { 0 };
libusb_device *dummy_list[] = { &dummy };
libusb_device **list = dummy_list;
libusb_device_handle *hdl = NULL;
struct libusb_device_descriptor desc;

View File

@ -43,7 +43,7 @@ check_PROGRAMS += libx52test libx52-string-test
nodist_libx52test_SOURCES = libx52/test_libx52.c
libx52test_SOURCES = $(libx52_la_SOURCES)
libx52test_CFLAGS = @LIBUSB_CFLAGS@ -DLOCALEDIR='"$(localedir)"' -I $(top_srcdir) -I $(top_srcdir)/libx52
libx52test_CFLAGS = @CMOCKA_CFLAGS@ @LIBUSB_CFLAGS@ -DLOCALEDIR='"$(localedir)"' -I $(top_srcdir) -I $(top_srcdir)/libx52
libx52test_CFLAGS += -Dlibusb_control_transfer=__wrap_libusb_control_transfer
libx52test_LDFLAGS = @CMOCKA_LIBS@ @LIBUSB_LIBS@
libx52test_LDADD = libx52.la
@ -60,7 +60,7 @@ libx52_string_test_SOURCES = \
libx52/test_strings.c \
libx52/x52_stringify.c \
libx52/x52_strerror.c
libx52_string_test_CFLAGS = -I $(top_srcdir) -I $(top_srcdir)/libx52
libx52_string_test_CFLAGS = @CMOCKA_CFLAGS@ -I $(top_srcdir) -I $(top_srcdir)/libx52
libx52_string_test_LDFLAGS = @CMOCKA_LIBS@
libx52_string_test_LDADD = libx52.la
endif

View File

@ -37,12 +37,12 @@ TESTS += test-axis test-parser
check_PROGRAMS += test-axis test-parser
test_axis_SOURCES = libx52io/test_axis.c $(libx52io_la_SOURCES)
test_axis_CFLAGS = $(libx52io_la_CFLAGS)
test_axis_CFLAGS = @CMOCKA_CFLAGS@ $(libx52io_la_CFLAGS)
test_axis_LDFLAGS = @CMOCKA_LIBS@ @HIDAPI_LIBS@ $(WARN_LDFLAGS)
test_axis_LDADD = @LTLIBINTL@
test_parser_SOURCES = libx52io/test_parser.c $(libx52io_la_SOURCES)
test_parser_CFLAGS = $(libx52io_la_CFLAGS)
test_parser_CFLAGS = @CMOCKA_CFLAGS@ $(libx52io_la_CFLAGS)
test_parser_LDFLAGS = @CMOCKA_LIBS@ @HIDAPI_LIBS@ $(WARN_LDFLAGS)
test_parser_LDADD = @LTLIBINTL@

View File

@ -89,7 +89,8 @@ static int group_teardown(void **state)
{ \
libx52io_context *ctx = *state; \
int rc; \
int32_t min, max; \
int32_t min = 0; \
int32_t max = 0; \
ctx->pid = X52_PROD_X52 ## prodid; \
_x52io_set_axis_range(ctx); \
rc = libx52io_get_axis_range(ctx, LIBX52IO_AXIS_ ## axis, &min, &max); \

View File

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: libx52 0.3.0\n"
"Project-Id-Version: libx52 0.3.2\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
"POT-Creation-Date: 2022-12-25 22:03-0800\n"
"POT-Creation-Date: 2024-06-09 20:24-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -691,36 +691,26 @@ msgstr ""
msgid "Error %d during command loop: %s"
msgstr ""
#: daemon/x52d_command.c:430
#: daemon/x52d_command.c:429
#, c-format
msgid "Error creating command socket: %s"
msgstr ""
#: daemon/x52d_command.c:437
#, c-format
msgid "Error getting command socket flags: %s"
msgid "Error marking command socket as nonblocking: %s"
msgstr ""
#: daemon/x52d_command.c:441
#, c-format
msgid "Error setting command socket flags: %s"
msgstr ""
#: daemon/x52d_command.c:449
#, c-format
msgid "Error binding to command socket: %s"
msgstr ""
#: daemon/x52d_command.c:454
#: daemon/x52d_command.c:443
#, c-format
msgid "Error listening on command socket: %s"
msgstr ""
#: daemon/x52d_command.c:464
#: daemon/x52d_command.c:447
msgid "Starting command processing thread"
msgstr ""
#: daemon/x52d_command.c:482
#: daemon/x52d_command.c:465
msgid "Shutting down command processing thread"
msgstr ""
@ -917,41 +907,36 @@ msgstr ""
msgid "Error marking notification socket as nonblocking: %s"
msgstr ""
#: daemon/x52d_notify.c:59
#, c-format
msgid "Error binding to notification socket: %s"
msgstr ""
#: daemon/x52d_notify.c:64
#: daemon/x52d_notify.c:56
#, c-format
msgid "Error listening on notification socket: %s"
msgstr ""
#: daemon/x52d_notify.c:73
#: daemon/x52d_notify.c:65
msgid "Error setting up notification socket"
msgstr ""
#: daemon/x52d_notify.c:90 daemon/x52d_notify.c:106
#: daemon/x52d_notify.c:82 daemon/x52d_notify.c:98
#, c-format
msgid "Error %d reading from pipe: %s"
msgstr ""
#: daemon/x52d_notify.c:148
#: daemon/x52d_notify.c:140
#, c-format
msgid "Error %d writing notification pipe: %s"
msgstr ""
#: daemon/x52d_notify.c:193
#: daemon/x52d_notify.c:185
#, c-format
msgid "Error %d creating notification pipe: %s"
msgstr ""
#: daemon/x52d_notify.c:202
#: daemon/x52d_notify.c:194
#, c-format
msgid "Error %d initializing notify thread: %s"
msgstr ""
#: daemon/x52d_notify.c:208
#: daemon/x52d_notify.c:200
#, c-format
msgid "Error %d initializing notify listener: %s"
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libx52 0.2.3\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
"POT-Creation-Date: 2022-12-25 22:03-0800\n"
"PO-Revision-Date: 2022-09-22 21:23-0700\n"
"POT-Creation-Date: 2024-06-09 20:24-0700\n"
"PO-Revision-Date: 2023-01-04 08:40-0800\n"
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
"Language-Team: Dummy Language for testing i18n\n"
"Language: xx_PL\n"
@ -744,36 +744,26 @@ msgstr ""
msgid "Error %d during command loop: %s"
msgstr "Erroray %d uringday ommandcay ooplay: %s"
#: daemon/x52d_command.c:430
#: daemon/x52d_command.c:429
#, c-format
msgid "Error creating command socket: %s"
msgstr "Erroray eatingcray ommandcay ocketsay: %s"
#: daemon/x52d_command.c:437
#, c-format
msgid "Error getting command socket flags: %s"
msgstr "Erroray ettinggay ommandcay ocketsay agsflay: %s"
msgid "Error marking command socket as nonblocking: %s"
msgstr "Erroray arkingmay ommandcay ocketsay asay onblockingnay: %s"
#: daemon/x52d_command.c:441
#, c-format
msgid "Error setting command socket flags: %s"
msgstr "Erroray ettingsay ommandcay ocketsay agsflay: %s"
#: daemon/x52d_command.c:449
#, c-format
msgid "Error binding to command socket: %s"
msgstr "Erroray indingbay otay ommandcay ocketsay: %s"
#: daemon/x52d_command.c:454
#: daemon/x52d_command.c:443
#, c-format
msgid "Error listening on command socket: %s"
msgstr "Erroray isteninglay onay ommandcay ocketsay: %s"
#: daemon/x52d_command.c:464
#: daemon/x52d_command.c:447
msgid "Starting command processing thread"
msgstr "Artingstay ommandcay ocessingpray eadthray"
#: daemon/x52d_command.c:482
#: daemon/x52d_command.c:465
msgid "Shutting down command processing thread"
msgstr "Uttingshay ownday ommandcay ocessingpray eadthray"
@ -970,41 +960,36 @@ msgstr "Erroray eatingcray otificationnay ocketsay: %s"
msgid "Error marking notification socket as nonblocking: %s"
msgstr "Erroray arkingmay otificationnay ocketsay asay onblockingnay: %s"
#: daemon/x52d_notify.c:59
#, c-format
msgid "Error binding to notification socket: %s"
msgstr "Erroray indingbay otay otificationnay ocketsay: %s"
#: daemon/x52d_notify.c:64
#: daemon/x52d_notify.c:56
#, c-format
msgid "Error listening on notification socket: %s"
msgstr "Erroray isteninglay onay otificationnay ocketsay: %s"
#: daemon/x52d_notify.c:73
#: daemon/x52d_notify.c:65
msgid "Error setting up notification socket"
msgstr "Erroray ettingsay upay otificationnay ocketsay: %s"
#: daemon/x52d_notify.c:90 daemon/x52d_notify.c:106
#: daemon/x52d_notify.c:82 daemon/x52d_notify.c:98
#, c-format
msgid "Error %d reading from pipe: %s"
msgstr "Erroray eadingray omfray ipepay %d: %s"
#: daemon/x52d_notify.c:148
#: daemon/x52d_notify.c:140
#, c-format
msgid "Error %d writing notification pipe: %s"
msgstr "Erroray %d itingwray otificationnay ipepay: %s"
#: daemon/x52d_notify.c:193
#: daemon/x52d_notify.c:185
#, c-format
msgid "Error %d creating notification pipe: %s"
msgstr "Erroray %d eatingcray otificationnay ipepay: %s"
#: daemon/x52d_notify.c:202
#: daemon/x52d_notify.c:194
#, c-format
msgid "Error %d initializing notify thread: %s"
msgstr "Erroray %d initializingay otifynay eadthray: %s"
#: daemon/x52d_notify.c:208
#: daemon/x52d_notify.c:200
#, c-format
msgid "Error %d initializing notify listener: %s"
msgstr "Erroray %d initializingay otifynay istenerlay: %s"

View File

@ -34,5 +34,7 @@ fi
cat <<EOM
#define BUILD_VERSION "${DESCRIBE}"
#define BUILD_DATE "$(date +%Y-%m-%dT%H:%M:%S%z)"
#define BUILD_HOST "$(uname -a)"
#define BUILD_COMPILER "$(${CC} --version | head -n1)"
EOM
echo '#define BUILD_VERSION_INFO_IDENT "$Id$"'