add broken ass source for now
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
/*
|
||||
* libusb strerror code
|
||||
* Copyright © 2013 Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libusbi.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
/** \ingroup libusb_misc
|
||||
* How to add a new \ref libusb_strerror() translation:
|
||||
* <ol>
|
||||
* <li> Download the latest \c strerror.c from:<br>
|
||||
* https://raw.github.com/libusb/libusb/master/libusb/strerror.c </li>
|
||||
* <li> Open the file in an UTF-8 capable editor </li>
|
||||
* <li> Add the 2 letter <a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1</a>
|
||||
* code for your locale at the end of \c usbi_locale_supported[]<br>
|
||||
* Eg. for Chinese, you would add "zh" so that:
|
||||
* \code... usbi_locale_supported[] = { "en", "nl", "fr" };\endcode
|
||||
* becomes:
|
||||
* \code... usbi_locale_supported[] = { "en", "nl", "fr", "zh" };\endcode </li>
|
||||
* <li> Copy the <tt>{ / * English (en) * / ... }</tt> section and add it at the end of \c usbi_localized_errors<br>
|
||||
* Eg. for Chinese, the last section of \c usbi_localized_errors could look like:
|
||||
* \code
|
||||
* }, { / * Chinese (zh) * /
|
||||
* "Success",
|
||||
* ...
|
||||
* "Other error",
|
||||
* },
|
||||
* };\endcode </li>
|
||||
* <li> Translate each of the English messages from the section you copied into your language </li>
|
||||
* <li> Save the file (in UTF-8 format) and send it to \c libusb-devel\@lists.sourceforge.net </li>
|
||||
* </ol>
|
||||
*/
|
||||
|
||||
static const char * const usbi_locale_supported[] = { "en", "nl", "fr", "ru", "de", "hu" };
|
||||
static const char * const usbi_localized_errors[ARRAYSIZE(usbi_locale_supported)][LIBUSB_ERROR_COUNT] = {
|
||||
{ /* English (en) */
|
||||
"Success",
|
||||
"Input/Output Error",
|
||||
"Invalid parameter",
|
||||
"Access denied (insufficient permissions)",
|
||||
"No such device (it may have been disconnected)",
|
||||
"Entity not found",
|
||||
"Resource busy",
|
||||
"Operation timed out",
|
||||
"Overflow",
|
||||
"Pipe error",
|
||||
"System call interrupted (perhaps due to signal)",
|
||||
"Insufficient memory",
|
||||
"Operation not supported or unimplemented on this platform",
|
||||
"Other error",
|
||||
}, { /* Dutch (nl) */
|
||||
"Gelukt",
|
||||
"Invoer-/uitvoerfout",
|
||||
"Ongeldig argument",
|
||||
"Toegang geweigerd (onvoldoende toegangsrechten)",
|
||||
"Apparaat bestaat niet (verbinding met apparaat verbroken?)",
|
||||
"Niet gevonden",
|
||||
"Apparaat of hulpbron is bezig",
|
||||
"Bewerking verlopen",
|
||||
"Waarde is te groot",
|
||||
"Gebroken pijp",
|
||||
"Onderbroken systeemaanroep",
|
||||
"Onvoldoende geheugen beschikbaar",
|
||||
"Bewerking wordt niet ondersteund",
|
||||
"Andere fout",
|
||||
}, { /* French (fr) */
|
||||
"Succès",
|
||||
"Erreur d'entrée/sortie",
|
||||
"Paramètre invalide",
|
||||
"Accès refusé (permissions insuffisantes)",
|
||||
"Périphérique introuvable (peut-être déconnecté)",
|
||||
"Elément introuvable",
|
||||
"Resource déjà occupée",
|
||||
"Operation expirée",
|
||||
"Débordement",
|
||||
"Erreur de pipe",
|
||||
"Appel système abandonné (peut-être à cause d’un signal)",
|
||||
"Mémoire insuffisante",
|
||||
"Opération non supportée or non implémentée sur cette plateforme",
|
||||
"Autre erreur",
|
||||
}, { /* Russian (ru) */
|
||||
"Успех",
|
||||
"Ошибка ввода/вывода",
|
||||
"Неверный параметр",
|
||||
"Доступ запрещён (не хватает прав)",
|
||||
"Устройство отсутствует (возможно, оно было отсоединено)",
|
||||
"Элемент не найден",
|
||||
"Ресурс занят",
|
||||
"Истекло время ожидания операции",
|
||||
"Переполнение",
|
||||
"Ошибка канала",
|
||||
"Системный вызов прерван (возможно, сигналом)",
|
||||
"Память исчерпана",
|
||||
"Операция не поддерживается данной платформой",
|
||||
"Неизвестная ошибка"
|
||||
}, { /* German (de) */
|
||||
"Erfolgreich",
|
||||
"Eingabe-/Ausgabefehler",
|
||||
"Ungültiger Parameter",
|
||||
"Keine Berechtigung (Zugriffsrechte fehlen)",
|
||||
"Kein passendes Gerät gefunden (es könnte entfernt worden sein)",
|
||||
"Entität nicht gefunden",
|
||||
"Die Ressource ist belegt",
|
||||
"Die Wartezeit für die Operation ist abgelaufen",
|
||||
"Mehr Daten empfangen als erwartet",
|
||||
"Datenübergabe unterbrochen (broken pipe)",
|
||||
"Unterbrechung während des Betriebssystemaufrufs",
|
||||
"Nicht genügend Hauptspeicher verfügbar",
|
||||
"Die Operation wird nicht unterstützt oder ist auf dieser Platform nicht implementiert",
|
||||
"Allgemeiner Fehler",
|
||||
}, { /* Hungarian (hu) */
|
||||
"Sikeres",
|
||||
"Be-/kimeneti hiba",
|
||||
"Érvénytelen paraméter",
|
||||
"Hozzáférés megtagadva",
|
||||
"Az eszköz nem található (eltávolították?)",
|
||||
"Nem található",
|
||||
"Az erőforrás foglalt",
|
||||
"Időtúllépés",
|
||||
"Túlcsordulás",
|
||||
"Törött adatcsatorna",
|
||||
"Rendszerhívás megszakítva",
|
||||
"Nincs elég memória",
|
||||
"A művelet nem támogatott ezen a rendszeren",
|
||||
"Általános hiba",
|
||||
},
|
||||
};
|
||||
|
||||
static const char * const (*usbi_error_strings)[LIBUSB_ERROR_COUNT] = &usbi_localized_errors[0];
|
||||
|
||||
/** \ingroup libusb_misc
|
||||
* Set the language, and only the language, not the encoding! used for
|
||||
* translatable libusb messages.
|
||||
*
|
||||
* This takes a locale string in the default setlocale format: lang[-region]
|
||||
* or lang[_country_region][.codeset]. Only the lang part of the string is
|
||||
* used, and only 2 letter ISO 639-1 codes are accepted for it, such as "de".
|
||||
* The optional region, country_region or codeset parts are ignored. This
|
||||
* means that functions which return translatable strings will NOT honor the
|
||||
* specified encoding.
|
||||
* All strings returned are encoded as UTF-8 strings.
|
||||
*
|
||||
* If libusb_setlocale() is not called, all messages will be in English.
|
||||
*
|
||||
* The following functions return translatable strings: libusb_strerror().
|
||||
* Note that the libusb log messages controlled through LIBUSB_OPTION_LOG_LEVEL
|
||||
* are not translated, they are always in English.
|
||||
*
|
||||
* For POSIX UTF-8 environments if you want libusb to follow the standard
|
||||
* locale settings, call libusb_setlocale(setlocale(LC_MESSAGES, NULL)),
|
||||
* after your app has done its locale setup.
|
||||
*
|
||||
* \param locale locale-string in the form of lang[_country_region][.codeset]
|
||||
* or lang[-region], where lang is a 2 letter ISO 639-1 code
|
||||
* \returns \ref LIBUSB_SUCCESS on success
|
||||
* \returns \ref LIBUSB_ERROR_INVALID_PARAM if the locale doesn't meet the requirements
|
||||
* \returns \ref LIBUSB_ERROR_NOT_FOUND if the requested language is not supported
|
||||
* \returns a LIBUSB_ERROR code on other errors
|
||||
*/
|
||||
|
||||
int API_EXPORTED libusb_setlocale(const char *locale)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
if (!locale || strlen(locale) < 2
|
||||
|| (locale[2] != '\0' && locale[2] != '-' && locale[2] != '_' && locale[2] != '.'))
|
||||
return LIBUSB_ERROR_INVALID_PARAM;
|
||||
|
||||
for (i = 0; i < ARRAYSIZE(usbi_locale_supported); i++) {
|
||||
if (usbi_locale_supported[i][0] == tolower((unsigned char)locale[0])
|
||||
&& usbi_locale_supported[i][1] == tolower((unsigned char)locale[1]))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == ARRAYSIZE(usbi_locale_supported))
|
||||
return LIBUSB_ERROR_NOT_FOUND;
|
||||
|
||||
usbi_error_strings = &usbi_localized_errors[i];
|
||||
|
||||
return LIBUSB_SUCCESS;
|
||||
}
|
||||
|
||||
/** \ingroup libusb_misc
|
||||
* Returns a constant string with a short description of the given error code,
|
||||
* this description is intended for displaying to the end user and will be in
|
||||
* the language set by libusb_setlocale().
|
||||
*
|
||||
* The returned string is encoded in UTF-8.
|
||||
*
|
||||
* The messages always start with a capital letter and end without any dot.
|
||||
* The caller must not free() the returned string.
|
||||
*
|
||||
* \param errcode the error code whose description is desired
|
||||
* \returns a short description of the error code in UTF-8 encoding
|
||||
*/
|
||||
DEFAULT_VISIBILITY const char * LIBUSB_CALL libusb_strerror(int errcode)
|
||||
{
|
||||
int errcode_index = -errcode;
|
||||
|
||||
if (errcode_index < 0 || errcode_index >= LIBUSB_ERROR_COUNT) {
|
||||
/* "Other Error", which should always be our last message, is returned */
|
||||
errcode_index = LIBUSB_ERROR_COUNT - 1;
|
||||
}
|
||||
|
||||
return (*usbi_error_strings)[errcode_index];
|
||||
}
|
||||
Reference in New Issue
Block a user