Take setlocale/gettext error handling pattern from tools/virsh-*
and use it in all the other standalone binaries. The changes are
* Ignore setlocale errors. virsh has done this forever, presumably for
good reason. This has been partially responsible for some bug reports:
https://bugzilla.redhat.com/show_bug.cgi?id=1312688
https://bugzilla.redhat.com/show_bug.cgi?id=1026514
https://bugzilla.redhat.com/show_bug.cgi?id=1016158
* Report the failed function name
* Report strerror
---
daemon/libvirtd.c | 20 ++++++++++++++++----
src/locking/lock_daemon.c | 20 ++++++++++++++++----
src/locking/sanlock_helper.c | 16 ++++++++++++----
src/logging/log_daemon.c | 20 ++++++++++++++++----
src/lxc/lxc_controller.c | 20 ++++++++++++++++----
src/network/leaseshelper.c | 16 ++++++++++++----
src/security/virt-aa-helper.c | 16 ++++++++++++----
src/storage/parthelper.c | 16 ++++++++++++----
src/util/iohelper.c | 16 ++++++++++++----
9 files changed, 124 insertions(+), 36 deletions(-)
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index 3d38a46..9488950 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -1172,10 +1172,22 @@ int main(int argc, char **argv) {
{0, 0, 0, 0}
};
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL ||
- virInitialize() < 0) {
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (virInitialize() < 0) {
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
exit(EXIT_FAILURE);
}
diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c
index 973e691..fffbe1d 100644
--- a/src/locking/lock_daemon.c
+++ b/src/locking/lock_daemon.c
@@ -1179,10 +1179,22 @@ int main(int argc, char **argv) {
privileged = geteuid() == 0;
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL ||
- virThreadInitialize() < 0 ||
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (virThreadInitialize() < 0 ||
virErrorInitialize() < 0) {
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
exit(EXIT_FAILURE);
diff --git a/src/locking/sanlock_helper.c b/src/locking/sanlock_helper.c
index d8d294f..6b17fce 100644
--- a/src/locking/sanlock_helper.c
+++ b/src/locking/sanlock_helper.c
@@ -70,10 +70,18 @@ main(int argc, char **argv)
.cb = authCallback,
};
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL) {
- fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
exit(EXIT_FAILURE);
}
diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
index f674cbd..8a0de22 100644
--- a/src/logging/log_daemon.c
+++ b/src/logging/log_daemon.c
@@ -936,10 +936,22 @@ int main(int argc, char **argv) {
privileged = geteuid() == 0;
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL ||
- virThreadInitialize() < 0 ||
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (virThreadInitialize() < 0 ||
virErrorInitialize() < 0) {
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
exit(EXIT_FAILURE);
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 8b5ec4c..612c0d7 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -2505,10 +2505,22 @@ int main(int argc, char *argv[])
for (i = 0; i < VIR_LXC_DOMAIN_NAMESPACE_LAST; i++)
ns_fd[i] = -1;
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL ||
- virThreadInitialize() < 0 ||
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (virThreadInitialize() < 0 ||
virErrorInitialize() < 0) {
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
exit(EXIT_FAILURE);
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index 097cd11..e753e75 100644
--- a/src/network/leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -115,10 +115,18 @@ main(int argc, char **argv)
program_name = argv[0];
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL) {
- fprintf(stderr, _("%s: initialization failed\n"), program_name);
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
exit(EXIT_FAILURE);
}
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 50d2a08..f47dc63 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -1298,10 +1298,18 @@ main(int argc, char **argv)
char *profile = NULL;
char *include_file = NULL;
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL) {
- fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
exit(EXIT_FAILURE);
}
diff --git a/src/storage/parthelper.c b/src/storage/parthelper.c
index d1df068..c0f1f5a 100644
--- a/src/storage/parthelper.c
+++ b/src/storage/parthelper.c
@@ -72,10 +72,18 @@ int main(int argc, char **argv)
const char *partsep;
bool devmap_nopartsep = false;
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL) {
- fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
exit(EXIT_FAILURE);
}
diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 8a3c377..0200bb1 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -230,10 +230,18 @@ main(int argc, char **argv)
program_name = argv[0];
- if (setlocale(LC_ALL, "") == NULL ||
- bindtextdomain(PACKAGE, LOCALEDIR) == NULL ||
- textdomain(PACKAGE) == NULL) {
- fprintf(stderr, _("%s: initialization failed\n"), program_name);
+ if (!setlocale(LC_ALL, "")) {
+ perror("setlocale");
+ /* failure to setup locale is not fatal */
+ }
+
+ if (!bindtextdomain(PACKAGE, LOCALEDIR)) {
+ perror("bindtextdomain");
+ exit(EXIT_FAILURE);
+ }
+
+ if (!textdomain(PACKAGE)) {
+ perror("textdomain");
exit(EXIT_FAILURE);
}
--
2.7.3