ekg2  GIT master
Funkcje | Zmienne
Dokumentacja pliku userlist.c
#include "ekg2.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
Wykres zależności załączania dla userlist.c:

Funkcje

static void userlist_private_free (userlist_t *u)
 
static int group_compare (const struct ekg_group *data1, const struct ekg_group *data2)
 
static void group_item_free (struct ekg_group *data)
 
static void ekg_groups_add (struct ekg_group **lista, struct ekg_group *new_)
 
static struct ekg_groupekg_groups_removei (struct ekg_group **lista, struct ekg_group *elem)
 
static void ekg_groups_destroy (struct ekg_group **lista)
 
static int userlist_resource_compare (const ekg_resource_t *data1, const ekg_resource_t *data2)
 
static void list_userlist_resource_free (ekg_resource_t *data)
 
static void ekg_resources_add (ekg_resource_t **lista, ekg_resource_t *new_)
 
static void ekg_resources_remove (ekg_resource_t **lista, ekg_resource_t *elem)
 
static void ekg_resources_destroy (ekg_resource_t **lista)
 
static int userlist_compare (const userlist_t *data1, const userlist_t *data2)
 
static void userlist_free_item (userlist_t *data)
 
static void userlists_add (userlist_t **lista, userlist_t *new_)
 
void userlists_remove (userlist_t **lista, userlist_t *elem)
 
void userlists_destroy (userlist_t **lista)
 
void userlist_add_entry (session_t *session, const char *line)
 
int userlist_read (session_t *session)
 
void userlist_write (session_t *session)
 
void * userlist_private_get (plugin_t *plugin, userlist_t *u)
 
void userlist_clear_status (session_t *session, const char *uid)
 
void userlist_free (session_t *session)
 
ekg_resource_tuserlist_resource_add (userlist_t *u, const char *name, int prio)
 
ekg_resource_tuserlist_resource_find (userlist_t *u, const char *name)
 
void userlist_resource_remove (userlist_t *u, ekg_resource_t *r)
 
userlist_tuserlist_add (session_t *session, const char *uid, const char *nickname)
 
userlist_tuserlist_add_u (userlist_t **userlist, const char *uid, const char *nickname)
 
int userlist_remove (session_t *session, userlist_t *u)
 
int userlist_remove_u (userlist_t **userlist, userlist_t *u)
 
int userlist_replace (session_t *session, userlist_t *u)
 
userlist_tuserlist_find (session_t *session, const char *uid)
 
userlist_tuserlist_find_u (userlist_t **userlist, const char *uid)
 
int valid_nick (const char *nick)
 
int valid_uid (const char *uid)
 
int valid_plugin_uid (plugin_t *plugin, const char *uid)
 
const char * get_uid_any (session_t *session, const char *text)
 
const char * get_uid (session_t *session, const char *text)
 
const char * get_nickname (session_t *session, const char *text)
 
char * get_user_name (userlist_t *u)
 
const char * format_user (session_t *session, const char *uid)
 
int ignored_remove (session_t *session, const char *uid)
 
int ignored_add (session_t *session, const char *uid, ignore_t level)
 
int ignored_check (session_t *session, const char *uid)
 
int ignore_flags (const char *str)
 
const char * ignore_format (int level)
 
int ekg_group_add (userlist_t *u, const char *group)
 
int ekg_group_remove (userlist_t *u, const char *group)
 
int ekg_group_member (userlist_t *u, const char *group)
 
struct ekg_groupgroup_init (const char *names)
 
char * group_to_string (struct ekg_group *groups, int meta, int sep)
 

Zmienne

struct ignore_label ignore_labels [9]
 

Dokumentacja funkcji

◆ ekg_group_add()

int ekg_group_add ( userlist_t u,
const char *  group 
)

ekg_group_add()

dodaje użytkownika do podanej grupy.

Parametry
u- wpis usera,
group- nazwa grupy.
Zwraca
-1 jesli juz user jest w tej grupie, lub zle parametry. 0 gdy dodano.

◆ ekg_group_member()

int ekg_group_member ( userlist_t u,
const char *  group 
)

ekg_group_member()

sprawdza czy użytkownik jest członkiem danej grupy.

Parametry
u- uzytkownik, ktorego chcemy sprawdzic
group- grupa ktora chcemy sprawdzic
Zwraca
1 jeśli tak, 0 jeśli nie.

◆ ekg_group_remove()

int ekg_group_remove ( userlist_t u,
const char *  group 
)

ekg_group_remove()

usuwa użytkownika z podanej grupy.

Parametry
u- wpis usera,
group- nazwa grupy.
Zwraca
0 jeśli się udało, inaczej -1.

◆ ekg_groups_add()

static void ekg_groups_add ( struct ekg_group **  lista,
struct ekg_group new_ 
)
static

◆ ekg_groups_destroy()

static void ekg_groups_destroy ( struct ekg_group **  lista)
static

◆ ekg_groups_removei()

static struct ekg_group* ekg_groups_removei ( struct ekg_group **  lista,
struct ekg_group elem 
)
static

◆ ekg_resources_add()

static void ekg_resources_add ( ekg_resource_t **  lista,
ekg_resource_t new_ 
)
static

◆ ekg_resources_destroy()

static void ekg_resources_destroy ( ekg_resource_t **  lista)
static

◆ ekg_resources_remove()

static void ekg_resources_remove ( ekg_resource_t **  lista,
ekg_resource_t elem 
)
static

◆ format_user()

const char* format_user ( session_t session,
const char *  uid 
)

◆ get_nickname()

const char* get_nickname ( session_t session,
const char *  text 
)

◆ get_uid()

const char* get_uid ( session_t session,
const char *  text 
)

get_uid()

Return and checks if uid passed text is proper for session or it's nickname of smb on session userlist.

Nota
It also work with userlist_find() and if text is nickname of smb in session userlist.. Than it return uid of this user. So you shouldn't call userlist_find() with get_uid() as param, cause it's senseless userlist_find() don't check for "$" target, so you must do it by hand. Rest is the same. If there are such user: userlist_find(s, get_uid(s, target)) return the same as userlist_find(s, target)
If not, even userlist_find(s, get_uid(s, get_uid(s, get_uid(s, target)))) won't help
Parametry
session- session to check for, if NULL check all sessions (it doesn't look at userlists, in this mode)
text- uid to check for, if '$' than check current window.
Zobacz również
userlist_find()
get_nickname() - to look for nickname..
get_uid_any() - to do all session searching+specified session userlist search.. This function does only all session searching if session is NULL... and than it doesn't look at userlist. Do you feel difference?
Zwraca
If we found proper uid for text, than return it. Otherwise NULL

◆ get_uid_any()

const char* get_uid_any ( session_t session,
const char *  text 
)

get_uid_any()

Return and checks if uid passed text is proper for at least one session, or it's nickname of smb on session userlist

Parametry
session- session to search for item on userlist
text- uid to check for, if '$' then check current window.
Zobacz również
get_uid() - to search only specified session.
Zwraca
If we found proper uid for text, than return it. Otherwise NULL

◆ get_user_name()

char* get_user_name ( userlist_t u)

◆ group_compare()

static int group_compare ( const struct ekg_group data1,
const struct ekg_group data2 
)
static

◆ group_init()

static struct ekg_group * group_init ( const char *  names)

group_init()

inicjuje listę grup użytkownika na podstawie danego ciągu znaków, w którym kolejne nazwy grup są rozdzielone przecinkiem.

Parametry
names- nazwy grup.
Zwraca
zwraca listę `struct group' jeśli się udało, inaczej NULL.

◆ group_item_free()

static void group_item_free ( struct ekg_group data)
static

◆ group_to_string()

char* group_to_string ( struct ekg_group groups,
int  meta,
int  sep 
)

group_to_string()

zmienia listę grup na ciąg znaków rodzielony przecinkami.

Parametry
groups- lista grup.
meta- czy dołączyć ,,meta-grupy''?
sep- czy oddzielać przecinkiem i spacją?
Zwraca
zwraca zaalokowany ciąg znaków lub NULL w przypadku błędu.

◆ ignore_flags()

int ignore_flags ( const char *  str)

ignore_flags()

zamienia łańcuch znaków na odpowiedni poziom ignorowania w postaci liczby.

Parametry
str
Zobacz również
ignore_format
ignore_t
ignore_labels
Zwraca
zwraca bitmaske opisana przez str

◆ ignore_format()

const char* ignore_format ( int  level)

ignore_format()

zwraca statyczny łańcuch znaków reprezentujący dany poziom ignorowania.

Parametry
level- poziom ignorowania, bitmaska z `enum ignore_t'
Zobacz również
ignore_flags
ignore_t
ignore_labels
Zwraca
zwraca statyczny bufor opisujacy bitmaske za pomoca ignore_labels

◆ ignored_add()

int ignored_add ( session_t session,
const char *  uid,
ignore_t  level 
)

◆ ignored_check()

int ignored_check ( session_t session,
const char *  uid 
)

ignored_check()

czy dany numerek znajduje się na liście ignorowanych.

Parametry
session- sesja w ktorej mamy szukac uzytkownika
uid- uid uzytkownika

◆ ignored_remove()

int ignored_remove ( session_t session,
const char *  uid 
)

◆ list_userlist_resource_free()

static void list_userlist_resource_free ( ekg_resource_t data)
static

◆ userlist_add()

userlist_t* userlist_add ( session_t session,
const char *  uid,
const char *  nickname 
)

◆ userlist_add_entry()

void userlist_add_entry ( session_t session,
const char *  line 
)

◆ userlist_add_u()

userlist_t* userlist_add_u ( userlist_t **  userlist,
const char *  uid,
const char *  nickname 
)

◆ userlist_clear_status()

void userlist_clear_status ( session_t session,
const char *  uid 
)

userlist_clear_status()

If uin == NULL then it clears all users presence information in the session userlist otherwise it clears only specified user It's useful if user goes notavail, or we goes disconnected..
However if that happen you shouldn't use this function but emit query PROTOCOL_STATUS or PROTOCOL_DISCONNECTED

Nota
By presence information I mean:
-> status - user's status [avail, away, ffc, dnd], it'll be: EKG_STATUS_NA ("notavail")
-> descr - user's description, it'll be: NULL
-> ip - user's ip, il'll be: 0.0.0.0
-> port - user's port, it'll be: 0
-> resources - user's resource, list will be destroyed.
Parametry
session
uid

◆ userlist_compare()

static int userlist_compare ( const userlist_t data1,
const userlist_t data2 
)
static

◆ userlist_find()

userlist_t* userlist_find ( session_t session,
const char *  uid 
)

◆ userlist_find_u()

userlist_t* userlist_find_u ( userlist_t **  userlist,
const char *  uid 
)

◆ userlist_free()

void userlist_free ( session_t session)

◆ userlist_free_item()

static void userlist_free_item ( userlist_t data)
static

◆ userlist_private_free()

static void userlist_private_free ( userlist_t u)
static

◆ userlist_private_get()

void* userlist_private_get ( plugin_t plugin,
userlist_t u 
)

◆ userlist_read()

int userlist_read ( session_t session)

userlist_read()

wczytuje listę kontaktów z pliku uid_sesji-userlist w postaci eksportu tekstowego listy kontaktów windzianego klienta.

Parametry
session
Zwraca
0 on success, -1 file not found

◆ userlist_remove()

int userlist_remove ( session_t session,
userlist_t u 
)

◆ userlist_remove_u()

int userlist_remove_u ( userlist_t **  userlist,
userlist_t u 
)

◆ userlist_replace()

int userlist_replace ( session_t session,
userlist_t u 
)

◆ userlist_resource_add()

ekg_resource_t* userlist_resource_add ( userlist_t u,
const char *  name,
int  prio 
)

userlist_resource_add()

It adds new user resource to resources list, with given data.

Nota
It doesn't check if prio already exists.. So you must remember about calling userlist_resource_find() if you don't want two (or more) same resources...
Parametry
u- user
name- name of resource
prio- prio of resource
Zwraca
It returns inited ekg_resource_t pointer of given data, or NULL if u was NULL

◆ userlist_resource_compare()

static int userlist_resource_compare ( const ekg_resource_t data1,
const ekg_resource_t data2 
)
static

◆ userlist_resource_find()

ekg_resource_t* userlist_resource_find ( userlist_t u,
const char *  name 
)

userlist_resource_find()

It search for given resource name in user resource list u

Parametry
u- user
name- name of resource
Zwraca
It returns resource with given name if founded, otherwise NULL

◆ userlist_resource_remove()

void userlist_resource_remove ( userlist_t u,
ekg_resource_t r 
)

userlist_resource_remove()

Remove given resource r from user resource list u
Free allocated memory.

Parametry
u- user
r- resource

◆ userlist_write()

void userlist_write ( session_t session)

userlist_write()

It writes session userlist to file: session->uid-userlist in ekg2 config directory

Do zrobienia:
Each plugin should've own userlist_write()/ userlist_read() This format is obsolete.
Parametry
session
Zwraca
0 on succees
-1 if smth went wrong
-2 if we fail to create/open userlist file in rw mode

◆ userlists_add()

static void userlists_add ( userlist_t **  lista,
userlist_t new_ 
)
static

◆ userlists_destroy()

void userlists_destroy ( userlist_t **  lista)

◆ userlists_remove()

void userlists_remove ( userlist_t **  lista,
userlist_t elem 
)

◆ valid_nick()

int valid_nick ( const char *  nick)

◆ valid_plugin_uid()

int valid_plugin_uid ( plugin_t plugin,
const char *  uid 
)

valid_plugin_uid()

Check if uid can be handled by given plugin

Parametry
plugin- plugin to check for
uid- uid to check for
Zobacz również
valid_uid() - if we want to know if this uid can be handled by ekg2 [when it doesn't matter which plugin]
Zwraca
1 - if uid can be handled by plugin
0 - if not
-1 - if plugin == NULL

◆ valid_uid()

int valid_uid ( const char *  uid)

valid_uid()

Check if uid can be handled by any plugin

Parametry
uid- uid to check for
Zobacz również
valid_plugin_uid() - You can specify plugin
Zwraca
1 - if uid can be handled by ekg2
0 - if not

Dokumentacja zmiennych

◆ ignore_labels

struct ignore_label ignore_labels[9]
Wartość początkowa:
= {
{ IGNORE_STATUS, "status" },
{ IGNORE_STATUS_DESCR, "descr" },
{ IGNORE_NOTIFY, "notify" },
{ IGNORE_MSG, "msg" },
{ IGNORE_DCC, "dcc" },
{ IGNORE_EVENTS, "events" },
{ IGNORE_XOSD, "xosd" },
{ IGNORE_LOG, "log" },
{ 0, NULL }
}
Definition: userlist.h:142
Definition: userlist.h:139
Definition: userlist.h:141
#define NULL
Definition: oralog.c:49
Definition: userlist.h:136
Definition: userlist.h:140
Definition: userlist.h:135
Definition: userlist.h:137
Definition: userlist.h:138