log.h
Go to the documentation of this file.00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _PURPLE_LOG_H_
00028 #define _PURPLE_LOG_H_
00029
00030 #include <stdio.h>
00031
00032
00033
00034
00035
00036
00037 typedef struct _PurpleLog PurpleLog;
00038 typedef struct _PurpleLogLogger PurpleLogLogger;
00039 typedef struct _PurpleLogCommonLoggerData PurpleLogCommonLoggerData;
00040 typedef struct _PurpleLogSet PurpleLogSet;
00041
00042 typedef enum {
00043 PURPLE_LOG_IM,
00044 PURPLE_LOG_CHAT,
00045 PURPLE_LOG_SYSTEM
00046 } PurpleLogType;
00047
00048 typedef enum {
00049 PURPLE_LOG_READ_NO_NEWLINE = 1
00050 } PurpleLogReadFlags;
00051
00052 #include "account.h"
00053 #include "conversation.h"
00054
00055 typedef void (*PurpleLogSetCallback) (GHashTable *sets, PurpleLogSet *set);
00056
00063 struct _PurpleLogLogger {
00064 char *name;
00065 char *id;
00069 void (*create)(PurpleLog *log);
00070
00072 gsize (*write)(PurpleLog *log,
00073 PurpleMessageFlags type,
00074 const char *from,
00075 time_t time,
00076 const char *message);
00077
00079 void (*finalize)(PurpleLog *log);
00080
00082 GList *(*list)(PurpleLogType type, const char *name, PurpleAccount *account);
00083
00086 char *(*read)(PurpleLog *log, PurpleLogReadFlags *flags);
00087
00090 int (*size)(PurpleLog *log);
00091
00094 int (*total_size)(PurpleLogType type, const char *name, PurpleAccount *account);
00095
00097 GList *(*list_syslog)(PurpleAccount *account);
00098
00107 void (*get_log_sets)(PurpleLogSetCallback cb, GHashTable *sets);
00108
00109
00110 gboolean (*remove)(PurpleLog *log);
00111
00112
00113 gboolean (*is_deletable)(PurpleLog *log);
00114
00115 void (*_purple_reserved1)(void);
00116 void (*_purple_reserved2)(void);
00117 void (*_purple_reserved3)(void);
00118 void (*_purple_reserved4)(void);
00119 };
00120
00124 struct _PurpleLog {
00125 PurpleLogType type;
00126 char *name;
00127 PurpleAccount *account;
00129 PurpleConversation *conv;
00130 time_t time;
00133 PurpleLogLogger *logger;
00135 void *logger_data;
00136 struct tm *tm;
00143
00144
00145 };
00146
00151 struct _PurpleLogCommonLoggerData {
00152 char *path;
00153 FILE *file;
00154 void *extra_data;
00155 };
00156
00163 struct _PurpleLogSet {
00164 PurpleLogType type;
00165 char *name;
00166 PurpleAccount *account;
00173 gboolean buddy;
00175 char *normalized_name;
00180
00181
00182 };
00183
00184 #ifdef __cplusplus
00185 extern "C" {
00186 #endif
00187
00188
00190
00206 PurpleLog *purple_log_new(PurpleLogType type, const char *name, PurpleAccount *account,
00207 PurpleConversation *conv, time_t time, const struct tm *tm);
00208
00214 void purple_log_free(PurpleLog *log);
00215
00226 void purple_log_write(PurpleLog *log,
00227 PurpleMessageFlags type,
00228 const char *from,
00229 time_t time,
00230 const char *message);
00231
00240 char *purple_log_read(PurpleLog *log, PurpleLogReadFlags *flags);
00241
00250 GList *purple_log_get_logs(PurpleLogType type, const char *name, PurpleAccount *account);
00251
00268 GHashTable *purple_log_get_log_sets(void);
00269
00276 GList *purple_log_get_system_logs(PurpleAccount *account);
00277
00284 int purple_log_get_size(PurpleLog *log);
00285
00294 int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
00295
00306 gboolean purple_log_is_deletable(PurpleLog *log);
00307
00314 gboolean purple_log_delete(PurpleLog *log);
00315
00326 char *purple_log_get_log_dir(PurpleLogType type, const char *name, PurpleAccount *account);
00327
00335 gint purple_log_compare(gconstpointer y, gconstpointer z);
00336
00344 gint purple_log_set_compare(gconstpointer y, gconstpointer z);
00345
00351 void purple_log_set_free(PurpleLogSet *set);
00352
00355
00357
00376 void purple_log_common_writer(PurpleLog *log, const char *ext);
00377
00395 GList *purple_log_common_lister(PurpleLogType type, const char *name,
00396 PurpleAccount *account, const char *ext,
00397 PurpleLogLogger *logger);
00398
00418 int purple_log_common_total_sizer(PurpleLogType type, const char *name,
00419 PurpleAccount *account, const char *ext);
00420
00434 int purple_log_common_sizer(PurpleLog *log);
00435
00449 gboolean purple_log_common_deleter(PurpleLog *log);
00450
00464 gboolean purple_log_common_is_deletable(PurpleLog *log);
00465
00468
00470
00493 PurpleLogLogger *purple_log_logger_new(const char *id, const char *name, int functions, ...);
00494
00500 void purple_log_logger_free(PurpleLogLogger *logger);
00501
00507 void purple_log_logger_add (PurpleLogLogger *logger);
00508
00515 void purple_log_logger_remove (PurpleLogLogger *logger);
00516
00523 void purple_log_logger_set (PurpleLogLogger *logger);
00524
00531 PurpleLogLogger *purple_log_logger_get (void);
00532
00539 GList *purple_log_logger_get_options(void);
00540
00541
00543
00549 void purple_log_init(void);
00550
00556 void *purple_log_get_handle(void);
00557
00561 void purple_log_uninit(void);
00562
00566 #ifdef __cplusplus
00567 }
00568 #endif
00569
00570 #endif