diff options
Diffstat (limited to 'protocols/Gadu-Gadu/src/dynstuff.cpp')
-rw-r--r-- | protocols/Gadu-Gadu/src/dynstuff.cpp | 384 |
1 files changed, 196 insertions, 188 deletions
diff --git a/protocols/Gadu-Gadu/src/dynstuff.cpp b/protocols/Gadu-Gadu/src/dynstuff.cpp index 520a53bb51..1cc09d33a3 100644 --- a/protocols/Gadu-Gadu/src/dynstuff.cpp +++ b/protocols/Gadu-Gadu/src/dynstuff.cpp @@ -1,22 +1,22 @@ /* $Id: dynstuff.c 11259 2010-02-17 04:47:22Z borkra $ */
/*
- * (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl>
- * Dawid Jarosz <dawjar@poczta.onet.pl>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License Version 2 as
- * published by the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
+* (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl>
+* Dawid Jarosz <dawjar@poczta.onet.pl>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License Version 2 as
+* published by the Free Software Foundation.
+*
+* This program 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 General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
#include "gg.h"
@@ -26,19 +26,19 @@ #include <string.h>
/*
- * list_add_sorted()
- *
- * dodaje do listy dany element. przy okazji moїe teї skopiowaж zawarto¶ж.
- * je¶li poda siк jako ostatni parametr funkcjк porуwnuj±c± zawarto¶ж
- * elementуw, moїe posortowaж od razu.
- *
- * - list - wskaјnik do listy,
- * - data - wskaјnik do elementu,
- * - alloc_size - rozmiar elementu, je¶li chcemy go skopiowaж.
- *
- * zwraca wskaјnik zaalokowanego elementu lub NULL w przpadku bікdu.
- */
-void *list_add_sorted(list_t *list, void *data, int alloc_size, int (*comparision)(void *, void *))
+* list_add_sorted()
+*
+* dodaje do listy dany element. przy okazji moїe teї skopiowaж zawarto¶ж.
+* je¶li poda siк jako ostatni parametr funkcjк porуwnuj±c± zawarto¶ж
+* elementуw, moїe posortowaж od razu.
+*
+* - list - wskaјnik do listy,
+* - data - wskaјnik do elementu,
+* - alloc_size - rozmiar elementu, je¶li chcemy go skopiowaж.
+*
+* zwraca wskaјnik zaalokowanego elementu lub NULL w przpadku bікdu.
+*/
+void *list_add_sorted(list_t *list, void *data, int alloc_size, int(*comparision)(void *, void *))
{
if (!list) {
errno = EFAULT;
@@ -58,12 +58,14 @@ void *list_add_sorted(list_t *list, void *data, int alloc_size, int (*comparisio list_t tmp;
if (!(tmp = *list)) {
*list = newlist;
- } else {
+ }
+ else {
if (!comparision) {
while (tmp->next)
tmp = tmp->next;
tmp->next = newlist;
- } else {
+ }
+ else {
list_t prev = nullptr;
while (comparision(newlist->data, tmp->data) > 0) {
@@ -77,7 +79,8 @@ void *list_add_sorted(list_t *list, void *data, int alloc_size, int (*comparisio tmp = *list;
*list = newlist;
newlist->next = tmp;
- } else {
+ }
+ else {
prev->next = newlist;
newlist->next = tmp;
}
@@ -88,24 +91,24 @@ void *list_add_sorted(list_t *list, void *data, int alloc_size, int (*comparisio }
/*
- * list_add()
- *
- * wrapper do list_add_sorted(), ktуry zachowuje poprzedni± skіadniк.
- */
+* list_add()
+*
+* wrapper do list_add_sorted(), ktуry zachowuje poprzedni± skіadniк.
+*/
void *list_add(list_t *list, void *data, int alloc_size)
{
return list_add_sorted(list, data, alloc_size, nullptr);
}
/*
- * list_remove()
- *
- * usuwa z listy wpis z podanym elementem.
- *
- * - list - wskaјnik do listy,
- * - data - element,
- * - free_data - zwolniж pamiкж po elemencie.
- */
+* list_remove()
+*
+* usuwa z listy wpis z podanym elementem.
+*
+* - list - wskaјnik do listy,
+* - data - element,
+* - free_data - zwolniж pamiкж po elemencie.
+*/
int list_remove(list_t *list, void *data, int free_data)
{
list_t tmp, last = nullptr;
@@ -118,7 +121,8 @@ int list_remove(list_t *list, void *data, int free_data) tmp = *list;
if (tmp->data == data) {
*list = tmp->next;
- } else {
+ }
+ else {
for (; tmp && tmp->data != data; tmp = tmp->next)
last = tmp;
if (!tmp) {
@@ -136,12 +140,12 @@ int list_remove(list_t *list, void *data, int free_data) }
/*
- * list_count()
- *
- * zwraca ilo¶ж elementуw w danej li¶cie.
- *
- * - list - lista.
- */
+* list_count()
+*
+* zwraca ilo¶ж elementуw w danej li¶cie.
+*
+* - list - lista.
+*/
int list_count(list_t list)
{
int count = 0;
@@ -153,13 +157,13 @@ int list_count(list_t list) }
/*
- * list_destroy()
- *
- * niszczy wszystkie elementy listy.
- *
- * - list - lista,
- * - free_data - czy zwalniaж bufor danych?
- */
+* list_destroy()
+*
+* niszczy wszystkie elementy listy.
+*
+* - list - lista,
+* - free_data - czy zwalniaж bufor danych?
+*/
int list_destroy(list_t list, int free_data)
{
list_t tmp;
@@ -179,13 +183,13 @@ int list_destroy(list_t list, int free_data) }
/*
- * string_realloc()
- *
- * upewnia siк, їe w stringu bкdzie wystarczaj±co duїo miejsca.
- *
- * - s - ci±g znakуw,
- * - count - wymagana ilo¶ж znakуw (bez koсcowego '\0').
- */
+* string_realloc()
+*
+* upewnia siк, їe w stringu bкdzie wystarczaj±co duїo miejsca.
+*
+* - s - ci±g znakуw,
+* - count - wymagana ilo¶ж znakуw (bez koсcowego '\0').
+*/
static void string_realloc(string_t s, int count)
{
char *tmp;
@@ -202,14 +206,14 @@ static void string_realloc(string_t s, int count) }
/*
- * string_append_c()
- *
- * dodaje do danego ci±gu jeden znak, alokuj±c przy tym odpowiedni± ilo¶ж
- * pamiкci.
- *
- * - s - ci±g znakуw.
- * - c - znaczek do dopisania.
- */
+* string_append_c()
+*
+* dodaje do danego ci±gu jeden znak, alokuj±c przy tym odpowiedni± ilo¶ж
+* pamiкci.
+*
+* - s - ci±g znakуw.
+* - c - znaczek do dopisania.
+*/
int string_append_c(string_t s, char c)
{
if (!s) {
@@ -226,14 +230,14 @@ int string_append_c(string_t s, char c) }
/*
- * string_append_n()
- *
- * dodaje tekst do bufora alokuj±c odpowiedni± ilo¶ж pamiкci.
- *
- * - s - ci±g znakуw,
- * - str - tekst do dopisania,
- * - count - ile znakуw tego tekstu dopisaж? (-1 znaczy, їe caіy).
- */
+* string_append_n()
+*
+* dodaje tekst do bufora alokuj±c odpowiedni± ilo¶ж pamiкci.
+*
+* - s - ci±g znakуw,
+* - str - tekst do dopisania,
+* - count - ile znakуw tego tekstu dopisaж? (-1 znaczy, їe caіy).
+*/
int string_append_n(string_t s, const char *str, int count)
{
if (!s || !str) {
@@ -260,15 +264,15 @@ int string_append(string_t s, const char *str) }
/*
- * string_insert_n()
- *
- * wstawia tekst w podane miejsce bufora.
- *
- * - s - ci±g znakуw,
- * - index - miejsce, gdzie mamy wpisaж (liczone od 0),
- * - str - tekst do dopisania,
- * - count - ilo¶ж znakуw do dopisania (-1 znaczy, їe wszystkie).
- */
+* string_insert_n()
+*
+* wstawia tekst w podane miejsce bufora.
+*
+* - s - ci±g znakуw,
+* - index - miejsce, gdzie mamy wpisaж (liczone od 0),
+* - str - tekst do dopisania,
+* - count - ilo¶ж znakуw do dopisania (-1 znaczy, їe wszystkie).
+*/
void string_insert_n(string_t s, int index, const char *str, int count)
{
if (!s || !str)
@@ -294,14 +298,14 @@ void string_insert(string_t s, int index, const char *str) }
/*
- * string_init()
- *
- * inicjuje strukturк string. alokuje pamiкж i przypisuje pierwsz± warto¶ж.
- *
- * - value - je¶li NULL, ci±g jest pusty, inaczej kopiuje tam.
- *
- * zwraca zaalokowan± strukturк `string'.
- */
+* string_init()
+*
+* inicjuje strukturк string. alokuje pamiкж i przypisuje pierwsz± warto¶ж.
+*
+* - value - je¶li NULL, ci±g jest pusty, inaczej kopiuje tam.
+*
+* zwraca zaalokowan± strukturк `string'.
+*/
string_t string_init(const char *value)
{
string_t tmp = (string_t)malloc(sizeof(struct string));
@@ -317,12 +321,12 @@ string_t string_init(const char *value) }
/*
- * string_clear()
- *
- * czy¶ci zawarto¶ж struktury `string'.
- *
- * - s - ci±g znakуw.
- */
+* string_clear()
+*
+* czy¶ci zawarto¶ж struktury `string'.
+*
+* - s - ci±g znakуw.
+*/
void string_clear(string_t s)
{
if (!s)
@@ -338,16 +342,16 @@ void string_clear(string_t s) }
/*
- * string_free()
- *
- * zwalnia pamiкж po strukturze string i moїe teї zwolniж pamiкж po samym
- * ci±gu znakуw.
- *
- * - s - struktura, ktуr± wycinamy,
- * - free_string - zwolniж pamiкж po ci±gu znakуw?
- *
- * je¶li free_string=0 zwraca wskaјnik do ci±gu, inaczej NULL.
- */
+* string_free()
+*
+* zwalnia pamiкж po strukturze string i moїe teї zwolniж pamiкж po samym
+* ci±gu znakуw.
+*
+* - s - struktura, ktуr± wycinamy,
+* - free_string - zwolniж pamiкж po ci±gu znakуw?
+*
+* je¶li free_string=0 zwraca wskaјnik do ci±gu, inaczej NULL.
+*/
char *string_free(string_t s, int free_string)
{
char *tmp = nullptr;
@@ -366,17 +370,17 @@ char *string_free(string_t s, int free_string) }
/*
- * _itoa()
- *
- * prosta funkcja, ktуra zwraca tekstow± reprezentacjк liczby. w obrкbie
- * danego wywoіania jakiej¶ funkcji lub wyraїenia moїe byж wywoіania 10
- * razy, poniewaї tyle mamy statycznych buforуw. lepsze to niї ci±gіe
- * tworzenie tymczasowych buforуw na stosie i sprintf()owanie.
- *
- * - i - liczba do zamiany.
- *
- * zwraca adres do bufora, ktуrego _NIE_NALEЇY_ zwalniaж.
- */
+* _itoa()
+*
+* prosta funkcja, ktуra zwraca tekstow± reprezentacjк liczby. w obrкbie
+* danego wywoіania jakiej¶ funkcji lub wyraїenia moїe byж wywoіania 10
+* razy, poniewaї tyle mamy statycznych buforуw. lepsze to niї ci±gіe
+* tworzenie tymczasowych buforуw na stosie i sprintf()owanie.
+*
+* - i - liczba do zamiany.
+*
+* zwraca adres do bufora, ktуrego _NIE_NALEЇY_ zwalniaж.
+*/
const char *ditoa(long int i)
{
@@ -392,22 +396,22 @@ const char *ditoa(long int i) }
/*
- * array_make()
- *
- * tworzy tablicк tekstуw z jednego, rozdzielonego podanymi znakami.
- *
- * - string - tekst wej¶ciowy,
- * - sep - lista elementуw oddzielaj±cych,
- * - max - maksymalna ilo¶ж elementуw tablicy. je¶li rуwne 0, nie ma
- * ograniczeс rozmiaru tablicy.
- * - trim - czy wiкksz± ilo¶ж elementуw oddzielaj±cych traktowaж jako
- * jeden (na przykіad spacje, tabulacja itp.)
- * - quotes - czy pola mog± byж zapisywane w cudzysіowiach lub
- * apostrofach z escapowanymi znakami.
- *
- * zaalokowan± tablicк z zaalokowanymi ci±gami znakуw, ktуr± naleїy
- * zwolniж funkcj± array_free()
- */
+* array_make()
+*
+* tworzy tablicк tekstуw z jednego, rozdzielonego podanymi znakami.
+*
+* - string - tekst wej¶ciowy,
+* - sep - lista elementуw oddzielaj±cych,
+* - max - maksymalna ilo¶ж elementуw tablicy. je¶li rуwne 0, nie ma
+* ograniczeс rozmiaru tablicy.
+* - trim - czy wiкksz± ilo¶ж elementуw oddzielaj±cych traktowaж jako
+* jeden (na przykіad spacje, tabulacja itp.)
+* - quotes - czy pola mog± byж zapisywane w cudzysіowiach lub
+* apostrofach z escapowanymi znakami.
+*
+* zaalokowan± tablicк z zaalokowanymi ci±gami znakуw, ktуr± naleїy
+* zwolniж funkcj± array_free()
+*/
char **array_make(const char *string, const char *sep, int max, int trim, int quotes)
{
const char *p, *q;
@@ -439,7 +443,8 @@ char **array_make(const char *string, const char *sep, int max, int trim, int qu q++;
if (!*q)
break;
- } else if (*q == sep)
+ }
+ else if (*q == sep)
break;
}
@@ -454,21 +459,23 @@ char **array_make(const char *string, const char *sep, int max, int trim, int qu break;
switch (*q) {
- case 'n':
- *r = '\n';
- break;
- case 'r':
- *r = '\r';
- break;
- case 't':
- *r = '\t';
- break;
- default:
- *r = *q;
+ case 'n':
+ *r = '\n';
+ break;
+ case 'r':
+ *r = '\r';
+ break;
+ case 't':
+ *r = '\t';
+ break;
+ default:
+ *r = *q;
}
- } else if (*q == sep) {
+ }
+ else if (*q == sep) {
break;
- } else
+ }
+ else
*r = *q;
}
@@ -477,7 +484,8 @@ char **array_make(const char *string, const char *sep, int max, int trim, int qu p = (*q) ? q + 1 : q;
- } else {
+ }
+ else {
for (q = p, len = 0; *q && (last || !strchr(sep, *q)); q++, len++);
token = (char*)calloc(1, len + 1);
strncpy(token, p, len);
@@ -503,10 +511,10 @@ failure: }
/*
- * array_count()
- *
- * zwraca ilo¶ж elementуw tablicy.
- */
+* array_count()
+*
+* zwraca ilo¶ж elementуw tablicy.
+*/
int array_count(char **array)
{
int result = 0;
@@ -523,10 +531,10 @@ int array_count(char **array) }
/*
- * array_add()
- *
- * dodaje element do tablicy.
- */
+* array_add()
+*
+* dodaje element do tablicy.
+*/
void array_add(char ***array, char *string)
{
int count = array_count(*array);
@@ -537,16 +545,16 @@ void array_add(char ***array, char *string) }
/*
- * array_join()
- *
- * і±czy elementy tablicy w jeden string oddzielaj±c elementy odpowiednim
- * separatorem.
- *
- * - array - wskaјnik do tablicy,
- * - sep - seperator.
- *
- * zwrуcony ci±g znakуw naleїy zwolniж.
- */
+* array_join()
+*
+* і±czy elementy tablicy w jeden string oddzielaj±c elementy odpowiednim
+* separatorem.
+*
+* - array - wskaјnik do tablicy,
+* - sep - seperator.
+*
+* zwrуcony ci±g znakуw naleїy zwolniж.
+*/
char *array_join(char **array, const char *sep)
{
if (!array)
@@ -564,16 +572,16 @@ char *array_join(char **array, const char *sep) }
/*
- * array_contains()
- *
- * stwierdza, czy tablica zawiera podany element.
- *
- * - array - tablica,
- * - string - szukany ci±g znakуw,
- * - casesensitive - czy mamy zwracaж uwagк na wielko¶ж znakуw?
- *
- * 0/1
- */
+* array_contains()
+*
+* stwierdza, czy tablica zawiera podany element.
+*
+* - array - tablica,
+* - string - szukany ci±g znakуw,
+* - casesensitive - czy mamy zwracaж uwagк na wielko¶ж znakуw?
+*
+* 0/1
+*/
int array_contains(char **array, const char *string, int casesensitive)
{
int i;
@@ -592,10 +600,10 @@ int array_contains(char **array, const char *string, int casesensitive) }
/*
- * array_free()
- *
- * zwalnia pamieж zajmowan± przez tablicк.
- */
+* array_free()
+*
+* zwalnia pamieж zajmowan± przez tablicк.
+*/
void array_free(char **array)
{
char **tmp;
|