ekg2  GIT master
stuff.h
Idź do dokumentacji tego pliku.
1 /* $Id$ */
2 
3 /*
4  * (C) Copyright 2001-2003 Wojtek Kaniewski <wojtekka@irc.pl>
5  * Robert J. Woźny <speedy@ziew.org>
6  * Paweł Maziarz <drg@go2.pl>
7  * Dawid Jarosz <dawjar@poczta.onet.pl>
8  * Piotr Domagalski <szalik@szalik.net>
9  * Adam Mikuta <adammikuta@poczta.onet.pl>
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License Version 2 as
13  * published by the Free Software Foundation.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23  */
24 
25 #ifndef __EKG_STUFF_H
26 #define __EKG_STUFF_H
27 
28 #include <glib.h>
29 
30 #include <sys/types.h>
31 #include <sys/time.h>
32 
33 #include "win32.h"
34 
35 #ifndef NO_POSIX_SYSTEM
36 #include <sys/socket.h>
37 #include <netinet/in.h>
38 #endif
39 
40 #include <ctype.h>
41 #include <stdarg.h>
42 #include <stdio.h>
43 #include <stdbool.h>
44 #include <time.h>
45 
46 #include "dynstuff.h"
47 #include "plugins.h"
48 #include "sessions.h"
49 #include "userlist.h"
50 #include "vars.h"
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
56 #define DEBUG_MAX_LINES 50 /* ile linii z debug zrzucać do pliku */
57 
58 /* obsługa procesów potomnych */
59 
60 #ifndef EKG2_WIN32_NOFUNCTION
61 typedef struct alias {
62  struct alias *next;
63 
64  char *name; /* nazwa aliasu */
65  list_t commands; /* commands->data to (char*) */
66 } alias_t;
67 #endif
68 
69 enum mesg_t {
70  MESG_CHECK = -1,
74 };
75 
76 struct conference {
77  struct conference *next;
78 
79  char *name;
82 };
83 
84 typedef struct newconference {
86 
87  char *session;
88  char *name;
90  void *priv_data;
92 
93 struct buffer {
94  struct buffer *next;
95 
96  time_t ts;
97  char *target;
98  char *line;
99 };
100 
101 struct buffer_info {
102  struct buffer *data;
103  int count;
105  struct buffer *last; /* fast access to last element, esp. for log_raw */
106 };
107 
108 struct color_map {
109  int color;
110  unsigned char r, g, b;
111 };
112 
113 #ifndef EKG2_WIN32_NOFUNCTION
114 extern alias_t *aliases;
115 extern list_t autofinds; /* char* data */
116 extern struct conference *conferences;
118 extern struct buffer_info buffer_debug;
119 extern struct buffer_info buffer_speech;
120 
121 extern char *config_profile;
122 extern int config_changed;
123 extern int ekg2_reason_changed;
124 
125 extern pid_t speech_pid;
126 
127 extern int no_mouse;
128 
129 extern int old_stderr;
130 extern int mesg_startup;
131 
132 extern char *config_away_reason;
133 extern int config_auto_save;
134 extern int config_auto_user_add;
135 extern char *config_back_reason;
136 extern int config_beep;
137 extern int config_beep_msg;
138 extern int config_beep_chat;
139 extern int config_beep_notify;
140 extern int config_completion_notify;
141 extern char *config_completion_char;
142 extern int config_debug;
144 extern int config_display_ack;
145 extern int config_display_blinking;
146 extern int config_display_color;
147 extern char *config_display_color_map;
148 extern int config_display_crap;
149 extern int config_display_day_changed;
150 extern int config_display_notify;
151 extern int config_display_sent;
152 extern int config_display_welcome;
153 extern int config_emoticons;
154 extern int config_events_delay;
155 extern int config_expert_mode;
156 extern int config_history_savedups;
157 extern int config_keep_reason;
158 extern int config_last;
159 extern int config_last_size;
160 extern int config_make_window;
161 extern int config_mesg;
162 extern int config_query_commands;
163 extern int config_slash_messages;
164 extern char *config_quit_reason;
165 extern int config_save_password;
166 extern int config_save_quit;
167 extern char *config_session_default;
168 extern int config_sessions_save;
169 extern int config_send_white_lines;
170 extern int config_sort_windows;
171 extern char *config_sound_app;
172 extern char *config_sound_chat_file;
173 extern char *config_sound_msg_file;
174 extern char *config_sound_sysmsg_file;
175 extern char *config_sound_notify_file;
176 extern char *config_sound_mail_file;
177 extern char *config_speech_app;
178 extern char *config_subject_prefix;
179 extern char *config_subject_reply_prefix;
180 extern char *config_tab_command;
181 extern char *config_theme;
182 extern int config_time_deviation;
183 extern char *config_timestamp;
184 extern int config_timestamp_show;
185 extern int config_window_session_allow;
186 extern char *config_windows_layout;
187 extern int config_windows_save;
188 extern char *config_dcc_dir;
189 extern int config_version;
190 extern char *config_exit_exec;
191 extern int config_session_locks;
192 extern char *config_nickname;
193 
194 extern char *formated_config_timestamp;
195 
196 extern char *home_dir;
197 extern char *config_dir;
198 extern const char *console_charset;
199 extern gboolean console_charset_is_utf8;
200 extern int in_autoexec;
201 extern int ekg_watches_removed;
202 extern time_t ekg_started;
203 
204 extern int quit_message_send;
205 extern int batch_mode;
206 extern char *batch_line;
207 extern struct color_map color_map_default[16+10];
208 
209 void windows_save();
210 
211 int alias_add(const char *string, int quiet, int append);
212 int alias_remove(const char *name, int quiet);
213 void aliases_destroy();
214 
215 char *base64_encode(const char *buf, size_t len);
216 char *base64_decode(const char *buf);
217 
218 int buffer_add(struct buffer_info *type, const char *target, const char *line);
219 int buffer_add_str(struct buffer_info *type, const char *target, const char *str);
220 char *buffer_tail(struct buffer_info *type);
221 void buffer_free(struct buffer_info *type);
222 
223 void changed_auto_save(const char *var);
224 void changed_display_blinking(const char *var);
225 void changed_make_window(const char *var);
226 void changed_mesg(const char *var);
227 void changed_theme(const char *var);
228 void changed_config_timestamp(const char *var);
229 
230 const char *compile_time();
231 
232 struct conference *conference_add(session_t *session, const char *string, const char *nicklist, int quiet);
233 int conference_remove(const char *name, int quiet);
234 struct conference *conference_create(session_t *session, const char *nicks);
235 struct conference *conference_find(const char *name);
236 struct conference *conference_find_by_uids(session_t *s, const char *from, const char **recipients, int count, int quiet);
237 int conference_set_ignore(const char *name, int flag, int quiet);
238 int conference_rename(const char *oldname, const char *newname, int quiet);
239 int conference_participant(struct conference *c, const char *uid);
240 void conferences_destroy();
241 
242 /* BEGIN OF newconference API HERE */
243 userlist_t *newconference_member_add(newconference_t *conf, const char *uid, const char *nick);
244 userlist_t *newconference_member_find(newconference_t *conf, const char *uid);
246 newconference_t *newconference_create(session_t *s, const char *name, int create_wnd);
248 void newconference_destroy(newconference_t *conf, int kill_wnd);
250 /* END of newconference API */
251 
252 int ekg_hash(const char *name);
253 
254 GDataInputStream *help_open(const gchar *name, const gchar *plugin);
255 gchar *read_line(GDataInputStream *f);
256 
257 int mesg_set(int what);
258 char *strip_spaces(char *line);
259 int strncasecmp_pl(const char * cs,const char * ct,size_t count);
260 int mkdir_recursive(const char *pathname, int isdir);
261 
262 #ifdef __GNUC__
263 char *saprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
264 #else
265 char *saprintf(const char *format, ...);
266 #endif
267 
268 int play_sound(const char *sound_path);
269 
270 const char *prepare_path(const char *filename, int do_mkdir);
271 const char *prepare_pathf(const char *filename, ...);
272 const char *prepare_path_user(const char *path);
273 char *read_file(FILE *f, int alloc);
274 char *read_file_utf(FILE *f, int alloc);
275 
276 const char *timestamp(const char *format);
277 const char *timestamp_time(const char *format, time_t t);
278 char *xstrmid(const char *str, int start, int length);
279 void xstrtr(char *text, char from, char to);
280 char color_map(unsigned char r, unsigned char g, unsigned char b);
281 char *strcasestr(const char *haystack, const char *needle);
282 int msg_all(session_t *s, const char *function, const char *what);
283 int say_it(const char *str);
284 char *split_line(char **ptr);
285 
286 int isalpha_pl(unsigned char c);
287 /* makra, dzięki którym pozbywamy się warning'ów */
288 #define xisxdigit(c) isxdigit((int) (unsigned char) c)
289 #define xisdigit(c) isdigit((int) (unsigned char) c)
290 #define xisalpha(c) isalpha_pl((int) (unsigned char) c)
291 #define xisalnum(c) isalnum((int) (unsigned char) c)
292 #define xisspace(c) isspace((int) (unsigned char) c)
293 #define xtolower(c) tolower((int) (unsigned char) c)
294 #define xtoupper(c) toupper((int) (unsigned char) c)
295 
296 void ignore_result_helper(int __attribute__((unused)) dummy, ...);
297 
298 #ifdef __GNUC__
299 # define IGNORE_RESULT(X) ignore_result_helper(0, (X))
300 #else
301 # define IGNORE_RESULT(X) (X)
302 #endif
303 
304 const char *ekg_status_label(const int status, const char *descr, const char *prefix);
305 void ekg_update_status(session_t *session);
306 #define ekg_update_status_n(a) ekg_update_status(session_find(a))
307 const char *ekg_status_string(const int status, const int cmd);
308 int ekg_status_int(const char *text);
309 
310 char *ekg_draw_descr(const int status);
311 guint32 *ekg_sent_message_format(const char *text);
312 
313 void ekg_yield_cpu();
314 
315 /* recode.c XXX, przeniesc do recode.h */
316 void *ekg_convert_string_init(const char *from, const char *to, void **rev);
317 void ekg_convert_string_destroy(void *ptr);
318 char *ekg_convert_string_p(const char *ps, void *ptr);
319 char *ekg_convert_string(const char *ps, const char *from, const char *to);
321 string_t ekg_convert_string_t(string_t s, const char *from, const char *to);
322 int ekg_converters_display(int quiet);
323 
324 char *password_input(const char *prompt, const char *rprompt, const bool norepeat);
325 int is_utf8_string(const char *txt);
326 
327 void variable_display(variable_t *v, int quiet);
328 int session_variable_display(session_t *s, const char *name, int quiet);
329 void session_variable_info(session_t *s, const char *name, int quiet);
330 
331 /* funkcje poza stuff.c */
332 void ekg_exit();
333 void ekg_debug_handler(int level, const char *format, va_list ap);
334 
335 int ekg_close(int fd);
336 int ekg_write(int fd, const char *buf, int len);
337 int ekg_writef(int fd, const char *format, ...);
338 
339 #endif
340 
341 #ifdef __cplusplus
342 }
343 #endif
344 
345 #endif /* __EKG_STUFF_H */
346 
347 /*
348  * Local Variables:
349  * mode: c
350  * c-file-style: "k&r"
351  * c-basic-offset: 8
352  * indent-tabs-mode: t
353  * End:
354  */
char * formated_config_timestamp
Definition: stuff.c:143
int strncasecmp_pl(const char *cs, const char *ct, size_t count)
Definition: stuff.c:2346
void ekg_debug_handler(int level, const char *format, va_list ap)
Definition: ekg.c:343
int newconference_member_remove(newconference_t *conf, userlist_t *u)
Definition: stuff.c:670
struct _gim_host __attribute__
Definition: commands.c:66
int conference_set_ignore(const char *name, int flag, int quiet)
Definition: stuff.c:1024
char * saprintf(const char *format,...)
Definition: stuff.c:2369
int config_sort_windows
Definition: stuff.c:119
struct conference * next
Definition: stuff.h:77
GString * string_t
Definition: dynstuff.h:147
int config_beep_msg
Definition: stuff.c:80
int config_version
Definition: stuff.c:133
const char * prepare_path_user(const char *path)
Definition: stuff.c:1422
Definition: sessions.h:127
int count
Definition: stuff.h:103
struct conference * conference_find(const char *name)
Definition: stuff.c:913
int config_make_window
Definition: stuff.c:111
int alias_add(const char *string, int quiet, int append)
Definition: stuff.c:225
char * config_sound_mail_file
Definition: stuff.c:92
int mesg_set(int what)
Definition: stuff.c:1169
int config_events_delay
Definition: stuff.c:85
void ekg_yield_cpu()
Definition: stuff.c:2409
char * config_back_reason
Definition: stuff.c:105
char * config_sound_msg_file
Definition: stuff.c:88
char * config_theme
Definition: stuff.c:100
int quit_message_send
Definition: stuff.c:108
struct conference * conference_find_by_uids(session_t *s, const char *from, const char **recipients, int count, int quiet)
Definition: stuff.c:962
struct conference * conferences
Definition: stuff.c:65
int msg_all(session_t *s, const char *function, const char *what)
Definition: stuff.c:1860
char * name
Definition: stuff.h:79
guint32 * ekg_sent_message_format(const char *text)
Definition: stuff.c:2248
int config_last_size
Definition: log.c:31
int config_time_deviation
Definition: stuff.c:122
char * config_speech_app
Definition: stuff.c:121
Definition: ekg_hash_benchmark.c:47
pid_t speech_pid
Definition: ekg.c:86
char * line
Definition: stuff.h:98
newconference_t * newconference_find(session_t *s, const char *name)
Definition: stuff.c:675
char * config_quit_reason
Definition: stuff.c:103
int config_send_white_lines
Definition: stuff.c:118
char * config_nickname
Definition: stuff.c:136
int old_stderr
Definition: stuff.c:71
time_t ts
Definition: stuff.h:96
struct alias * next
Definition: stuff.h:62
gchar * read_line(GDataInputStream *f)
Definition: stuff.c:1657
void newconference_destroy(newconference_t *conf, int kill_wnd)
Definition: stuff.c:704
int conference_participant(struct conference *c, const char *uid)
Definition: stuff.c:935
struct userlist * participants
Definition: stuff.h:89
char * config_windows_layout
Definition: stuff.c:130
int config_sessions_save
Definition: stuff.c:127
void buffer_free(struct buffer_info *type)
Definition: stuff.c:504
char * ekg_convert_string_p(const char *ps, void *ptr)
Definition: recode.c:112
string_t ekg_convert_string_t_p(string_t s, void *ptr)
Definition: recode.c:155
int isalpha_pl(unsigned char c)
Definition: stuff.c:1819
int config_beep_notify
Definition: stuff.c:82
const char * prepare_pathf(const char *filename,...)
Definition: stuff.c:1334
struct buffer_info buffer_speech
Definition: stuff.c:69
void changed_auto_save(const char *var)
Definition: stuff.c:566
char * config_display_color_map
Definition: stuff.c:125
const char * compile_time()
Definition: stuff.c:634
char * xstrmid(const char *str, int start, int length)
Definition: stuff.c:1722
char * config_subject_prefix
Definition: stuff.c:72
struct conference * conference_create(session_t *session, const char *nicks)
Definition: stuff.c:892
const char * ekg_status_string(const int status, const int cmd)
Definition: stuff.c:2191
char * read_file(FILE *f, int alloc)
Definition: stuff.c:1630
alias_t * aliases
Definition: stuff.c:59
char * base64_encode(const char *buf, size_t len)
Definition: stuff.c:1983
Definition: plugins.h:76
Definition: rivchat.h:42
int config_history_savedups
Definition: stuff.c:87
gboolean console_charset_is_utf8
Definition: vars.c:32
void ignore_result_helper(int __attribute__((unused)) dummy,...)
Definition: stuff.c:1832
int config_beep_chat
Definition: stuff.c:81
void changed_display_blinking(const char *var)
Definition: stuff.c:577
struct color_map color_map_default[16+10]
Definition: stuff.c:1752
void conferences_destroy()
Definition: stuff.c:720
char * buffer_tail(struct buffer_info *type)
Definition: stuff.c:473
GDataInputStream * help_open(const gchar *name, const gchar *plugin)
Definition: stuff.c:1087
int config_display_color
Definition: stuff.c:78
void changed_theme(const char *var)
Definition: stuff.c:597
char * read_file_utf(FILE *f, int alloc)
Definition: stuff.c:1562
int config_slash_messages
Definition: stuff.c:107
list_t commands
Definition: stuff.h:65
newconference_t * newconference_create(session_t *s, const char *name, int create_wnd)
Definition: stuff.c:684
char * batch_line
Definition: stuff.c:110
void newconferences_destroy()
Definition: stuff.c:645
int ekg_hash(const char *name)
Definition: ekg_hash_benchmark.c:99
int buffer_add(struct buffer_info *type, const char *target, const char *line)
Definition: stuff.c:420
int config_display_day_changed
Definition: events.c:40
string_t ekg_convert_string_t(string_t s, const char *from, const char *to)
Definition: recode.c:160
char * name
Definition: stuff.h:88
char * target
Definition: stuff.h:97
int config_save_password
Definition: stuff.c:113
struct buffer * last
Definition: stuff.h:105
int config_completion_notify
Definition: stuff.c:96
mesg_t
Definition: stuff.h:69
int config_mesg
Definition: stuff.c:123
char * config_subject_reply_prefix
Definition: stuff.c:73
Definition: stuff.h:71
int config_query_commands
Definition: stuff.c:106
int play_sound(const char *sound_path)
Definition: stuff.c:1233
char * split_line(char **ptr)
Definition: stuff.c:2023
int mesg_startup
Definition: ekg.c:82
char * config_sound_sysmsg_file
Definition: stuff.c:91
int no_mouse
Definition: ekg.c:90
char * config_session_default
Definition: stuff.c:126
int say_it(const char *str)
Definition: stuff.c:1906
Definition: stuff.h:84
char * config_dcc_dir
Definition: stuff.c:83
ignore_t ignore
Definition: stuff.h:80
int config_display_crap
Definition: windows.c:43
const char * timestamp_time(const char *format, time_t t)
Definition: stuff.c:1699
void * priv_data
Definition: stuff.h:90
#define line
Definition: bindings.c:50
const char * console_charset
Definition: vars.c:33
int config_keep_reason
Definition: stuff.c:120
void xstrtr(char *text, char from, char to)
Definition: stuff.c:2389
struct buffer_info buffer_debug
Definition: stuff.c:68
int config_default_status_window
Definition: stuff.c:101
unsigned char r
Definition: stuff.h:110
int session_variable_display(session_t *s, const char *name, int quiet)
Definition: stuff.c:2688
void aliases_destroy()
Definition: stuff.c:212
Definition: stuff.h:108
int config_windows_save
Definition: stuff.c:129
char * config_sound_chat_file
Definition: stuff.c:89
int color
Definition: stuff.h:109
void ekg_convert_string_destroy(void *ptr)
Definition: recode.c:90
int ekg_watches_removed
const char * ekg_status_label(const int status, const char *descr, const char *prefix)
Definition: stuff.c:2052
char * config_tab_command
Definition: stuff.c:112
Definition: userlist.h:54
int config_display_blinking
Definition: stuff.c:84
void changed_make_window(const char *var)
Definition: stuff.c:514
void changed_mesg(const char *var)
Definition: stuff.c:531
char * name
Definition: stuff.h:64
struct newconference newconference_t
newconference_t * newconferences
Definition: stuff.c:66
list_t recipients
Definition: stuff.h:81
int max_lines
Definition: stuff.h:104
int batch_mode
Definition: stuff.c:109
Definition: stuff.h:70
char * config_timestamp
Definition: stuff.c:115
Definition: stuff.h:72
char * config_completion_char
Definition: stuff.c:97
void session_variable_info(session_t *s, const char *name, int quiet)
Definition: stuff.c:2711
int ekg_converters_display(int quiet)
userlist_t * newconference_member_add(newconference_t *conf, const char *uid, const char *nick)
Definition: stuff.c:661
void windows_save()
Definition: stuff.c:155
char * config_away_reason
Definition: stuff.c:104
list_t autofinds
Definition: stuff.c:60
void variable_display(variable_t *v, int quiet)
Definition: stuff.c:2627
int config_save_quit
Definition: stuff.c:114
struct conference * conference_add(session_t *session, const char *string, const char *nicklist, int quiet)
Definition: stuff.c:733
char * config_dir
Definition: ekg.c:80
int conference_remove(const char *name, int quiet)
Definition: stuff.c:854
int config_expert_mode
Definition: stuff.c:86
int ekg_status_int(const char *text)
Definition: stuff.c:2228
int ekg2_reason_changed
Definition: stuff.c:145
void ekg_exit()
Definition: ekg.c:811
char * ekg_draw_descr(const int status)
Definition: stuff.c:2068
int config_auto_save
Definition: stuff.c:76
int config_display_ack
Definition: stuff.c:95
void changed_config_timestamp(const char *var)
Definition: stuff.c:619
int config_display_sent
Definition: stuff.c:117
char * ekg_convert_string(const char *ps, const char *from, const char *to)
Definition: recode.c:134
int in_autoexec
Definition: stuff.c:75
void * ekg_convert_string_init(const char *from, const char *to, void **rev)
Definition: recode.c:60
Definition: stuff.h:73
char * config_exit_exec
Definition: stuff.c:134
Definition: ekg_hash_benchmark.c:14
char * home_dir
Definition: stuff.c:102
Definition: stuff.h:93
int ekg_writef(int fd, const char *format,...)
Definition: stuff.c:2455
char * password_input(const char *prompt, const char *rprompt, const bool norepeat)
Definition: stuff.c:2520
int buffer_add_str(struct buffer_info *type, const char *target, const char *str)
Definition: stuff.c:441
int config_display_notify
Definition: stuff.c:99
int ekg_write(int fd, const char *buf, int len)
Definition: stuff.c:2427
Definition: stuff.h:76
void ekg_update_status(session_t *session)
Definition: stuff.c:2107
int config_emoticons
Definition: emoticons.c:45
userlist_t * newconference_member_find(newconference_t *conf, const char *uid)
Definition: stuff.c:647
int mkdir_recursive(const char *pathname, int isdir)
Definition: stuff.c:1266
int config_beep
Definition: stuff.c:79
time_t ekg_started
Definition: stuff.c:98
Definition: stuff.h:101
char * strip_spaces(char *line)
Definition: stuff.c:1210
int config_auto_user_add
Definition: stuff.c:77
struct buffer * data
Definition: stuff.h:102
#define s
struct buffer * next
Definition: stuff.h:94
int alias_remove(const char *name, int quiet)
Definition: stuff.c:319
const char * prepare_path(const char *filename, int do_mkdir)
Definition: stuff.c:1373
int config_window_session_allow
Definition: stuff.c:128
char * session
Definition: stuff.h:87
ignore_t
Definition: userlist.h:134
Definition: stuff.h:61
char * config_profile
Definition: stuff.c:131
struct newconference * next
Definition: stuff.h:85
char color_map(unsigned char r, unsigned char g, unsigned char b)
Definition: stuff.c:1789
char * strcasestr(const char *haystack, const char *needle)
Definition: stuff.c:1842
int config_session_locks
Definition: stuff.c:135
int is_utf8_string(const char *txt)
Definition: stuff.c:2531
struct alias alias_t
const char * timestamp(const char *format)
Definition: stuff.c:1684
Definition: vars.h:52
int config_last
Definition: log.c:32
int conference_rename(const char *oldname, const char *newname, int quiet)
Definition: stuff.c:1050
char * config_sound_app
Definition: stuff.c:93
int config_debug
Definition: stuff.c:132
int config_changed
Definition: stuff.c:94
int config_timestamp_show
Definition: stuff.c:116
char * base64_decode(const char *buf)
Definition: stuff.c:2000
int config_display_welcome
Definition: stuff.c:124
int ekg_close(int fd)
Definition: stuff.c:2490
char * config_sound_notify_file
Definition: stuff.c:90