1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 06:16:40 +02:00

core: return only -1, 0 or 1 in string comparison functions

This commit is contained in:
Sébastien Helleu
2014-07-05 11:38:44 +02:00
parent 823db4475c
commit 95011c82e0
6 changed files with 178 additions and 150 deletions
+33 -30
View File
@@ -546,6 +546,8 @@ This function is not available in scripting API.
==== weechat_strcasecmp
_Updated in 1.0._
Locale and case independent string comparison.
Prototype:
@@ -562,10 +564,9 @@ Arguments:
Return value:
* difference between two strings:
** negative if string1 < string2
** zero if string1 == string2
** positive if string1 > string2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -579,7 +580,7 @@ This function is not available in scripting API.
==== weechat_strcasecmp_range
_WeeChat ≥ 0.3.7._
_WeeChat ≥ 0.3.7, updated in 1.0._
Locale and case independent string comparison, using a range for case
comparison.
@@ -605,10 +606,9 @@ Values 29 and 30 are used by some protocols like IRC.
Return value:
* difference between two strings:
** negative if string1 < string2
** zero if string1 == string2
** positive if string1 > string2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -622,6 +622,8 @@ This function is not available in scripting API.
==== weechat_strncasecmp
_Updated in 1.0._
Locale and case independent string comparison, for 'max' chars.
Prototype:
@@ -639,10 +641,9 @@ Arguments:
Return value:
* difference between two strings:
** negative if string1 < string2
** zero if string1 == string2
** positive if string1 > string2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -656,7 +657,7 @@ This function is not available in scripting API.
==== weechat_strncasecmp_range
_WeeChat ≥ 0.3.7._
_WeeChat ≥ 0.3.7, updated in 1.0._
Locale and case independent string comparison, for 'max' chars, using a range
for case comparison.
@@ -683,10 +684,9 @@ Values 29 and 30 are used by some protocols like IRC.
Return value:
* difference between two strings:
** negative if string1 < string2
** zero if string1 == string2
** positive if string1 > string2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -700,6 +700,8 @@ This function is not available in scripting API.
==== weechat_strcmp_ignore_chars
_Updated in 1.0._
Locale (and optionally case independent) string comparison, ignoring some
chars.
@@ -721,10 +723,9 @@ Arguments:
Return value:
* difference between two strings:
** negative if string1 < string2
** zero if string1 == string2
** positive if string1 > string2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -2201,6 +2202,8 @@ This function is not available in scripting API.
==== weechat_utf8_charcmp
_Updated in 1.0._
Compare two UTF-8 chars.
Prototype:
@@ -2217,10 +2220,9 @@ Arguments:
Return value:
* difference between first char of each string:
** negative if char1 < char2
** zero if char1 == char2
** positive if char1 > char2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
@@ -2234,6 +2236,8 @@ This function is not available in scripting API.
==== weechat_utf8_charcasecmp
_Updated in 1.0._
Compare two UTF-8 chars, ignoring case.
Prototype:
@@ -2250,10 +2254,9 @@ Arguments:
Return value:
* difference between first char of each string:
** negative if char1 < char2
** zero if char1 == char2
** positive if char1 > char2
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C example:
+33 -30
View File
@@ -553,6 +553,8 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_strcasecmp
_Mis à jour dans la 1.0._
Comparer deux chaînes indépendemment de la locale et de la casse.
Prototype :
@@ -569,10 +571,9 @@ Paramètres :
Valeur de retour :
* différence entre les deux chaînes :
** négative si string1 < string2
** zéro si string1 == string2
** positive si string1 > string2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -586,7 +587,7 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_strcasecmp_range
_WeeChat ≥ 0.3.7._
_WeeChat ≥ 0.3.7, mis à jour dans la 1.0._
Comparer deux chaînes indépendemment de la locale et de la casse, avec un
intervalle pour comparer la casse.
@@ -612,10 +613,9 @@ Les valeurs 29 et 30 sont utilisés par quelques protocoles comme IRC.
Valeur de retour :
* différence entre les deux chaînes :
** négative si string1 < string2
** zéro si string1 == string2
** positive si string1 > string2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -629,6 +629,8 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_strncasecmp
_Mis à jour dans la 1.0._
Comparer deux chaînes indépendemment de la locale et de la casse, pour 'max'
caractères.
@@ -647,10 +649,9 @@ Paramètres :
Valeur de retour :
* différence entre les deux chaînes :
** négative si string1 < string2
** zéro si string1 == string2
** positive si string1 > string2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -664,7 +665,7 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_strncasecmp_range
_WeeChat ≥ 0.3.7._
_WeeChat ≥ 0.3.7, mis à jour dans la 1.0._
Comparer deux chaînes indépendemment de la locale et de la casse, pour 'max'
caractères, avec un intervalle pour comparer la casse.
@@ -691,10 +692,9 @@ Les valeurs 29 et 30 sont utilisés par quelques protocoles comme IRC.
Valeur de retour :
* différence entre les deux chaînes :
** négative si string1 < string2
** zéro si string1 == string2
** positive si string1 > string2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -708,6 +708,8 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_strcmp_ignore_chars
_Mis à jour dans la 1.0._
Comparer deux chaînes indépendemment de la locale (et en option de la casse), en
ignorant des caractères.
@@ -729,10 +731,9 @@ Paramètres :
Valeur de retour :
* différence entre les deux chaînes :
** négative si string1 < string2
** zéro si string1 == string2
** positive si string1 > string2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -2241,6 +2242,8 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_utf8_charcmp
_Mis à jour dans la 1.0._
Comparer deux caractères UTF-8.
Prototype :
@@ -2257,10 +2260,9 @@ Paramètres :
Valeur de retour :
* différence entre le premier caractère de chaque chaîne :
** négative si char1 < char2
** zéro si char1 == char2
** positive si char1 > char2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
@@ -2274,6 +2276,8 @@ Cette fonction n'est pas disponible dans l'API script.
==== weechat_utf8_charcasecmp
_Mis à jour dans la 1.0._
Comparer deux caractères UTF-8 en ignorant la casse.
Prototype :
@@ -2290,10 +2294,9 @@ Paramètres :
Valeur de retour :
* différence entre le premier caractère de chaque chaîne :
** négative si char1 < char2
** zéro si char1 == char2
** positive si char1 > char2
* -1 si string1 < string2
* 0 si string1 == string2
* 1 si string1 > string2
Exemple en C :
+42 -28
View File
@@ -562,6 +562,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_strcasecmp
// TRANSLATION MISSING
_Updated in 1.0._
Confronta stringa non sensibile alle maiuscole e alla localizzazione.
Prototipo:
@@ -578,10 +581,9 @@ Argomenti:
Valore restituito:
* differenze tra le due stringhe:
** negativa se stringa1 < stringa2
** zero se stringa1 == stringa1
** positiva se stringa1 > stringa2
* -1 se stringa1 < stringa2
* 0 se stringa1 == stringa1
* 1 se stringa1 > stringa2
Esempio in C:
@@ -595,6 +597,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_strcasecmp_range
// TRANSLATION MISSING
_WeeChat ≥ 0.3.7, updated in 1.0._
Confronta stringa non sensibile alle maiuscole e alla localizzazione, usando una
serie per il confronto.
@@ -619,10 +624,9 @@ I valori 29 e 30 vengono usati da alcuni protocolli come IRC.
Valore restituito:
* differenze tra le due stringhe:
** negativa se stringa1 < stringa2
** zero se stringa1 == stringa1
** positiva se stringa1 > stringa2
* -1 se stringa1 < stringa2
* 0 se stringa1 == stringa1
* 1 se stringa1 > stringa2
Esempio in C:
@@ -636,6 +640,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_strncasecmp
// TRANSLATION MISSING
_Updated in 1.0._
Confronta stringa indipendente non sensibile alle maiuscole e alla
localizzazione, per un numero 'max' di caratteri.
@@ -654,10 +661,9 @@ Argomenti:
Valore restituito:
* differenze tra le due stringhe:
** negativa se string1 < string2
** zero se string1 == string1
** positiva se string1 > string2
* -1 se stringa1 < stringa2
* 0 se stringa1 == stringa1
* 1 se stringa1 > stringa2
Esempio in C:
@@ -671,6 +677,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_strncasecmp_range
// TRANSLATION MISSING
_WeeChat ≥ 0.3.7, updated in 1.0._
Confronta una stringa non sensibile alle maiuscole e alla localizzazione, per un
numero 'max' di caratteri, usando una serie per il confronto.
@@ -696,10 +705,9 @@ I valori 29 e 30 vengono usati da alcuni protocolli come IRC.
Valore restituito:
* differenze tra le due stringhe:
** negativa se string1 < string2
** zero se string1 == string1
** positiva se string1 > string2
* -1 se stringa1 < stringa2
* 0 se stringa1 == stringa1
* 1 se stringa1 > stringa2
Esempio in C:
@@ -713,6 +721,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_strcmp_ignore_chars
// TRANSLATION MISSING
_Updated in 1.0._
Confronta una stringa localizzata (e opzionalmente non sensibile alle
maiuscole), ignorando alcuni caratteri.
@@ -734,10 +745,9 @@ Argomenti:
Valore restituito:
* differenza tra le due stringhe:
** negativa se string1 < string2
** zero se string1 == string2
** positiva se string1 > string2
* -1 se stringa1 < stringa2
* 0 se stringa1 == stringa1
* 1 se stringa1 > stringa2
Esempio in C:
@@ -2255,6 +2265,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_utf8_charcmp
// TRANSLATION MISSING
_Updated in 1.0._
Confronta due caratteri UTF-8.
Prototipo:
@@ -2271,10 +2284,9 @@ Argomenti:
Valore restituito:
* differenza tra i primi caratteri di ogni stringa:
** negativa se char1 < char2
** zero se char1 == char2
** positivao se char1 > char2
* -1 se string1 < string2
* 0 se string1 == string2
* 1 se string1 > string2
Esempio in C:
@@ -2288,6 +2300,9 @@ Questa funzione non è disponibile nelle API per lo scripting.
==== weechat_utf8_charcasecmp
// TRANSLATION MISSING
_Updated in 1.0._
Confronta due caratteri UTF-8, ignorando la sensibilità alle maiuscole.
Prototipo:
@@ -2304,10 +2319,9 @@ Argomenti:
Valore restituito:
* differenza tra i primi caratteri di ogni stringa:
** negativa se char1 < char2
** zero se char1 == char2
** positivao se char1 > char2
* -1 se string1 < string2
* 0 se string1 == string2
* 1 se string1 > string2
Esempio in C:
+42 -30
View File
@@ -546,6 +546,8 @@ weechat_string_toupper (str); /* str is now: "ABCDé" */
==== weechat_strcasecmp
_バージョン 1.0 で更新。_
ロケールと大文字小文字を無視して文字列を比較。
プロトタイプ:
@@ -562,10 +564,10 @@ int weechat_strcasecmp (const char *string1, const char *string2);
戻り値:
* 2 つの文字列の差:
** string1 < string2 の場合は負
** string1 == string2 の場合はゼロ
** string1 > string2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -579,7 +581,8 @@ int diff = weechat_strcasecmp ("aaa", "CCC"); /* == -2 */
==== weechat_strcasecmp_range
_WeeChat バージョン 0.3.7 以上で利用可。_
// TRANSLATION MISSING
_WeeChat ≥ 0.3.7, updated in 1.0._
大文字小文字を無視する文字範囲の幅を使い、ロケールと大文字小文字を無視して文字列を比較。
@@ -604,10 +607,10 @@ int weechat_strcasecmp_range (const char *string1, const char *string2, int rang
戻り値:
* 2 つの文字列の差:
** string1 < string2 の場合は負
** string1 == string2 の場合はゼロ
** string1 > string2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -621,6 +624,8 @@ int diff = weechat_strcasecmp_range ("nick{away}", "NICK[away]", 29); /* == 0 */
==== weechat_strncasecmp
_バージョン 1.0 で更新。_
ロケールと大文字小文字を無視して 'max' 文字だけ文字列を比較。
プロトタイプ:
@@ -638,10 +643,10 @@ int weechat_strncasecmp (const char *string1, const char *string2, int max);
戻り値:
* 2 つの文字列の差:
** string1 < string2 の場合は負
** string1 == string2 の場合はゼロ
** string1 > string2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -655,7 +660,8 @@ int diff = weechat_strncasecmp ("aabb", "aacc", 2); /* == 0 */
==== weechat_strncasecmp_range
_WeeChat バージョン 0.3.7 以上で利用可。_
// TRANSLATION MISSING
_WeeChat ≥ 0.3.7, updated in 1.0._
大文字小文字を無視する文字範囲の幅を使い、ロケールと大文字小文字を無視して
'max' 文字だけ文字列を比較。
@@ -682,10 +688,10 @@ int weechat_strncasecmp_range (const char *string1, const char *string2, int max
戻り値:
* 2 つの文字列の差:
** string1 < string2 の場合は負
** string1 == string2 の場合はゼロ
** string1 > string2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -699,6 +705,8 @@ int diff = weechat_strncasecmp_range ("nick{away}", "NICK[away]", 6, 29); /* ==
==== weechat_strcmp_ignore_chars
_バージョン 1.0 で更新。_
一部の文字列を無視して、ロケールに依存して
(オプションで大文字小文字の区別をしない) 文字列を比較。
@@ -720,10 +728,10 @@ int weechat_strcmp_ignore_chars (const char *string1, const char *string2,
戻り値:
* 2 つの文字列の差:
** string1 < string2 の場合は負
** string1 == string2 の場合はゼロ
** string1 > string2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -2197,6 +2205,8 @@ int length_on_screen = weechat_utf8_strlen_screen ("é"); /* == 1 */
==== weechat_utf8_charcmp
_バージョン 1.0 で更新。_
2 つの UTF-8 文字を比較。
プロトタイプ:
@@ -2213,10 +2223,10 @@ int weechat_utf8_charcmp (const char *string1, const char *string2);
戻り値:
* 各文字列の 1 文字目同士の差:
** char1 < char2 の場合は負
** char1 == char2 の場合はゼロ
** char1 > char2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
@@ -2230,6 +2240,8 @@ int diff = weechat_utf8_charcmp ("aaa", "ccc"); /* == -2 */
==== weechat_utf8_charcasecmp
_バージョン 1.0 で更新。_
大文字小文字の違いを無視して、2 つの UTF-8 文字を比較。
プロトタイプ:
@@ -2246,10 +2258,10 @@ int weechat_utf8_charcasecmp (const char *string1, const char *string2);
戻り値:
* 各文字列の 1 文字目同士の差:
** char1 < char2 の場合は負
** char1 == char2 の場合はゼロ
** char1 > char2 の場合は正
// TRANSLATION MISSING
* -1 if string1 < string2
* 0 if string1 == string2
* 1 if string1 > string2
C 言語での使用例:
+21 -25
View File
@@ -124,9 +124,9 @@ string_toupper (char *string)
* Compares two strings (locale and case independent).
*
* Returns:
* < 0: string1 < string2
* 0: string1 == string2
* > 0: string1 > string2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int
@@ -141,7 +141,7 @@ string_strcasecmp (const char *string1, const char *string2)
{
diff = utf8_charcasecmp (string1, string2);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
string1 = utf8_next_char (string1);
string2 = utf8_next_char (string2);
@@ -163,9 +163,9 @@ string_strcasecmp (const char *string1, const char *string2)
* (ranges 29 and 30 are used by some protocols like IRC)
*
* Returns:
* < 0: string1 < string2
* 0: string1 == string2
* > 0: string1 > string2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int
@@ -180,7 +180,7 @@ string_strcasecmp_range (const char *string1, const char *string2, int range)
{
diff = utf8_charcasecmp_range (string1, string2, range);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
string1 = utf8_next_char (string1);
string2 = utf8_next_char (string2);
@@ -193,9 +193,9 @@ string_strcasecmp_range (const char *string1, const char *string2, int range)
* Compares two strings with max length (locale and case independent).
*
* Returns:
* < 0: string1 < string2
* -1: string1 < string2
* 0: string1 == string2
* > 0: string1 > string2
* 1: string1 > string2
*/
int
@@ -211,7 +211,7 @@ string_strncasecmp (const char *string1, const char *string2, int max)
{
diff = utf8_charcasecmp (string1, string2);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
string1 = utf8_next_char (string1);
string2 = utf8_next_char (string2);
@@ -238,9 +238,9 @@ string_strncasecmp (const char *string1, const char *string2, int max)
* (ranges 29 and 30 are used by some protocols like IRC)
*
* Returns:
* < 0: string1 < string2
* 0: string1 == string2
* > 0: string1 > string2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int
@@ -257,7 +257,7 @@ string_strncasecmp_range (const char *string1, const char *string2, int max,
{
diff = utf8_charcasecmp_range (string1, string2, range);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
string1 = utf8_next_char (string1);
string2 = utf8_next_char (string2);
@@ -274,9 +274,9 @@ string_strncasecmp_range (const char *string1, const char *string2, int max,
* Compares two strings, ignoring some chars.
*
* Returns:
* < 0: string1 < string2
* 0: string1 == string2
* > 0: string1 > string2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int
@@ -285,12 +285,8 @@ string_strcmp_ignore_chars (const char *string1, const char *string2,
{
int diff;
if (!string1 && !string2)
return 0;
if (!string1 && string2)
return -1;
if (string1 && !string2)
return 1;
if (!string1 || !string2)
return (string1) ? 1 : ((string2) ? -1 : 0);
while (string1 && string1[0] && string2 && string2[0])
{
@@ -316,7 +312,7 @@ string_strcmp_ignore_chars (const char *string1, const char *string2,
diff = (case_sensitive) ?
(int)string1[0] - (int)string2[0] : utf8_charcasecmp (string1, string2);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
string1 = utf8_next_char (string1);
string2 = utf8_next_char (string2);
+7 -7
View File
@@ -524,9 +524,9 @@ utf8_strlen_screen (const char *string)
* Compares two UTF-8 chars (case sensitive).
*
* Returns:
* < 0: char1 < char2
* 0: char1 == char2
* > 0: char1 > char2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int
@@ -545,7 +545,7 @@ utf8_charcmp (const char *string1, const char *string2)
{
diff = (int)((unsigned char) string1[i]) - (int)((unsigned char) string2[i]);
if (diff != 0)
return diff;
return (diff < 0) ? -1 : 1;
i++;
}
/* string1 == string2 ? */
@@ -562,9 +562,9 @@ utf8_charcmp (const char *string1, const char *string2)
* Compares two UTF-8 chars (case is ignored).
*
* Returns:
* < 0: char1 < char2
* 0: char1 == char2
* > 0: char1 > char2
* -1: string1 < string2
* 0: string1 == string2
* 1: string1 > string2
*/
int