Use lookup table to implement *_strerror

reverse-scroll
nirenjan 2021-07-27 01:35:31 -07:00
parent 602071612d
commit 77606ae906
4 changed files with 85 additions and 96 deletions

View File

@ -1,7 +1,7 @@
/*
* Saitek X52 Pro MFD & LED driver
*
* Copyright (C) 2012-2017 Nirenjan Krishnan (nirenjan@nirenjan.org)
* Copyright (C) 2012-2021 Nirenjan Krishnan (nirenjan@nirenjan.org)
*
* SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
*/
@ -12,65 +12,54 @@
#include "libx52.h"
#include "gettext.h"
/** For future use in i18n */
#define N_(str) gettext_noop(str)
#define _(str) dgettext(PACKAGE, str)
/* Error buffer used for building custom error strings */
static char error_buffer[256];
/* List of error strings */
static const char *error_string[] = {
N_("Success"),
N_("Initialization failure"),
N_("Insufficient memory"),
N_("Invalid parameter"),
N_("Operation not supported"),
N_("Try again"),
N_("Input parameter out of range"),
N_("USB transaction failure"),
N_("USB input/output error"),
N_("Access denied"),
N_("No such device"),
N_("Entity not found"),
N_("Resource busy"),
N_("Operation timeout"),
N_("Overflow"),
N_("Pipe error"),
N_("System call interrupted"),
};
const char * libx52_strerror(libx52_error_code error)
{
switch (error) {
case LIBX52_SUCCESS:
return _("Success");
case LIBX52_ERROR_INIT_FAILURE:
return _("Initialization failure");
case LIBX52_ERROR_OUT_OF_MEMORY:
return _("Insufficient memory");
case LIBX52_ERROR_INVALID_PARAM:
return _("Invalid parameter");
case LIBX52_ERROR_NOT_SUPPORTED:
return _("Operation not supported");
case LIBX52_ERROR_TRY_AGAIN:
return _("Try again");
case LIBX52_ERROR_OUT_OF_RANGE:
return _("Input parameter out of range");
case LIBX52_ERROR_USB_FAILURE:
return _("USB transaction failure");
case LIBX52_ERROR_IO:
return _("USB input/output error");
case LIBX52_ERROR_PERM:
return _("Access denied");
case LIBX52_ERROR_NO_DEVICE:
return _("No such device");
case LIBX52_ERROR_NOT_FOUND:
return _("Entity not found");
case LIBX52_ERROR_BUSY:
return _("Resource busy");
case LIBX52_ERROR_TIMEOUT:
return _("Operation timeout");
case LIBX52_ERROR_OVERFLOW:
return _("Overflow");
case LIBX52_ERROR_PIPE:
return _("Pipe error");
case LIBX52_ERROR_INTERRUPTED:
return _("System call interrupted");
return _(error_string[error]);
default:
snprintf(error_buffer, sizeof(error_buffer),

View File

@ -95,31 +95,31 @@ const char * libx52io_button_to_str(libx52io_button button)
/* Error buffer used for building custom error strings */
static char error_buffer[256];
#define N_(str) gettext_noop(str)
static const char *error_string[] = {
N_("Success"),
N_("Initialization failure"),
N_("No device"),
N_("Invalid arguments"),
N_("Connection failure"),
N_("I/O error"),
N_("Read timeout"),
};
#define _(str) dgettext(PACKAGE, str)
const char * libx52io_strerror(libx52io_error_code code)
{
switch (code) {
case LIBX52IO_SUCCESS:
return _("Success");
case LIBX52IO_ERROR_INIT_FAILURE:
return _("Initialization failure");
case LIBX52IO_ERROR_NO_DEVICE:
return _("No device");
case LIBX52IO_ERROR_INVALID:
return _("Invalid arguments");
case LIBX52IO_ERROR_CONN:
return _("Connection failure");
case LIBX52IO_ERROR_IO:
return _("I/O error");
case LIBX52IO_ERROR_TIMEOUT:
return _("Read timeout");
return _(error_string[code]);
default:
snprintf(error_buffer, sizeof(error_buffer), _("Unknown error %d"), code);

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: x52pro-linux 0.2.1\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
"POT-Creation-Date: 2021-07-26 11:01-0700\n"
"POT-Creation-Date: 2021-07-27 01:34-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"
@ -17,96 +17,96 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: lib/libx52/x52_strerror.c:25 lib/libx52io/io_strings.c:104
#: lib/libx52/x52_strerror.c:23 lib/libx52io/io_strings.c:101
msgid "Success"
msgstr ""
#: lib/libx52/x52_strerror.c:28 lib/libx52io/io_strings.c:107
#: lib/libx52/x52_strerror.c:24 lib/libx52io/io_strings.c:102
msgid "Initialization failure"
msgstr ""
#: lib/libx52/x52_strerror.c:31
#: lib/libx52/x52_strerror.c:25
msgid "Insufficient memory"
msgstr ""
#: lib/libx52/x52_strerror.c:34
#: lib/libx52/x52_strerror.c:26
msgid "Invalid parameter"
msgstr ""
#: lib/libx52/x52_strerror.c:37
#: lib/libx52/x52_strerror.c:27
msgid "Operation not supported"
msgstr ""
#: lib/libx52/x52_strerror.c:40
#: lib/libx52/x52_strerror.c:28
msgid "Try again"
msgstr ""
#: lib/libx52/x52_strerror.c:43
#: lib/libx52/x52_strerror.c:29
msgid "Input parameter out of range"
msgstr ""
#: lib/libx52/x52_strerror.c:46
#: lib/libx52/x52_strerror.c:30
msgid "USB transaction failure"
msgstr ""
#: lib/libx52/x52_strerror.c:49
#: lib/libx52/x52_strerror.c:31
msgid "USB input/output error"
msgstr ""
#: lib/libx52/x52_strerror.c:52
#: lib/libx52/x52_strerror.c:32
msgid "Access denied"
msgstr ""
#: lib/libx52/x52_strerror.c:55
#: lib/libx52/x52_strerror.c:33
msgid "No such device"
msgstr ""
#: lib/libx52/x52_strerror.c:58
#: lib/libx52/x52_strerror.c:34
msgid "Entity not found"
msgstr ""
#: lib/libx52/x52_strerror.c:61
#: lib/libx52/x52_strerror.c:35
msgid "Resource busy"
msgstr ""
#: lib/libx52/x52_strerror.c:64
#: lib/libx52/x52_strerror.c:36
msgid "Operation timeout"
msgstr ""
#: lib/libx52/x52_strerror.c:67
#: lib/libx52/x52_strerror.c:37
msgid "Overflow"
msgstr ""
#: lib/libx52/x52_strerror.c:70
#: lib/libx52/x52_strerror.c:38
msgid "Pipe error"
msgstr ""
#: lib/libx52/x52_strerror.c:73
#: lib/libx52/x52_strerror.c:39
msgid "System call interrupted"
msgstr ""
#: lib/libx52/x52_strerror.c:77 lib/libx52io/io_strings.c:125
#: lib/libx52/x52_strerror.c:66 lib/libx52io/io_strings.c:125
#, c-format
msgid "Unknown error %d"
msgstr ""
#: lib/libx52io/io_strings.c:110
#: lib/libx52io/io_strings.c:103
msgid "No device"
msgstr ""
#: lib/libx52io/io_strings.c:113
#: lib/libx52io/io_strings.c:104
msgid "Invalid arguments"
msgstr ""
#: lib/libx52io/io_strings.c:116
#: lib/libx52io/io_strings.c:105
msgid "Connection failure"
msgstr ""
#: lib/libx52io/io_strings.c:119
#: lib/libx52io/io_strings.c:106
msgid "I/O error"
msgstr ""
#: lib/libx52io/io_strings.c:122
#: lib/libx52io/io_strings.c:107
msgid "Read timeout"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: x52pro-linux 0.2.1\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
"POT-Creation-Date: 2021-07-26 11:01-0700\n"
"POT-Creation-Date: 2021-07-27 01:34-0700\n"
"PO-Revision-Date: 2021-07-26 11:00-0700\n"
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
"Language-Team: Dummy Language for testing i18n\n"
@ -17,96 +17,96 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0\n"
#: lib/libx52/x52_strerror.c:25 lib/libx52io/io_strings.c:104
#: lib/libx52/x52_strerror.c:23 lib/libx52io/io_strings.c:101
msgid "Success"
msgstr "Uccesssay"
#: lib/libx52/x52_strerror.c:28 lib/libx52io/io_strings.c:107
#: lib/libx52/x52_strerror.c:24 lib/libx52io/io_strings.c:102
msgid "Initialization failure"
msgstr "Initializationay ailurefay"
#: lib/libx52/x52_strerror.c:31
#: lib/libx52/x52_strerror.c:25
msgid "Insufficient memory"
msgstr "Insufficientay emorymay"
#: lib/libx52/x52_strerror.c:34
#: lib/libx52/x52_strerror.c:26
msgid "Invalid parameter"
msgstr "Invaliday arameterpay"
#: lib/libx52/x52_strerror.c:37
#: lib/libx52/x52_strerror.c:27
msgid "Operation not supported"
msgstr "Operationay otnay upportedsay"
#: lib/libx52/x52_strerror.c:40
#: lib/libx52/x52_strerror.c:28
msgid "Try again"
msgstr "Ytray againay"
#: lib/libx52/x52_strerror.c:43
#: lib/libx52/x52_strerror.c:29
msgid "Input parameter out of range"
msgstr "Inputay arameterpay outay ofay angeray"
#: lib/libx52/x52_strerror.c:46
#: lib/libx52/x52_strerror.c:30
msgid "USB transaction failure"
msgstr "USBay ansactiontray ailurefay"
#: lib/libx52/x52_strerror.c:49
#: lib/libx52/x52_strerror.c:31
msgid "USB input/output error"
msgstr "USBay inputay/outputay erroray"
#: lib/libx52/x52_strerror.c:52
#: lib/libx52/x52_strerror.c:32
msgid "Access denied"
msgstr "Accessay eniedday"
#: lib/libx52/x52_strerror.c:55
#: lib/libx52/x52_strerror.c:33
msgid "No such device"
msgstr "Onay uchsay eviceday"
#: lib/libx52/x52_strerror.c:58
#: lib/libx52/x52_strerror.c:34
msgid "Entity not found"
msgstr "Entityay otnay oundfay"
#: lib/libx52/x52_strerror.c:61
#: lib/libx52/x52_strerror.c:35
msgid "Resource busy"
msgstr "Esourceray usybay"
#: lib/libx52/x52_strerror.c:64
#: lib/libx52/x52_strerror.c:36
msgid "Operation timeout"
msgstr "Operationay imeouttay"
#: lib/libx52/x52_strerror.c:67
#: lib/libx52/x52_strerror.c:37
msgid "Overflow"
msgstr "Overfloway"
#: lib/libx52/x52_strerror.c:70
#: lib/libx52/x52_strerror.c:38
msgid "Pipe error"
msgstr "Ipepay erroray"
#: lib/libx52/x52_strerror.c:73
#: lib/libx52/x52_strerror.c:39
msgid "System call interrupted"
msgstr "Ystemsay allcay interrupteday"
#: lib/libx52/x52_strerror.c:77 lib/libx52io/io_strings.c:125
#: lib/libx52/x52_strerror.c:66 lib/libx52io/io_strings.c:125
#, c-format
msgid "Unknown error %d"
msgstr "Unknownay erroray %d"
#: lib/libx52io/io_strings.c:110
#: lib/libx52io/io_strings.c:103
msgid "No device"
msgstr "Onay eviceday"
#: lib/libx52io/io_strings.c:113
#: lib/libx52io/io_strings.c:104
msgid "Invalid arguments"
msgstr "Invaliday argumentsay"
#: lib/libx52io/io_strings.c:116
#: lib/libx52io/io_strings.c:105
msgid "Connection failure"
msgstr "Onnectioncay ailurefay"
#: lib/libx52io/io_strings.c:119
#: lib/libx52io/io_strings.c:106
msgid "I/O error"
msgstr "I/O erroray"
#: lib/libx52io/io_strings.c:122
#: lib/libx52io/io_strings.c:107
msgid "Read timeout"
msgstr "Eadray imeouttay"