about summary refs log tree commit diff stats
path: root/themes/headache
blob: 5b2f5cba1363fd444b8e25c92e533cc5d5089b56 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[colours]
bkgnd=default
titlebar=magenta
titlebar.text=white
titlebar.brackets=white
titlebar.unencrypted=black
titlebar.encrypted=cyan
titlebar.untrusted=yellow
titlebar.trusted=cyan
titlebar.online=white
titlebar.offline=black
titlebar.away=white
titlebar.chat=white
titlebar.dnd=black
titlebar.xa=white
statusbar=default
statusbar.text=white
statusbar.time=white
statusbar.brackets=red
statusbar.active=cyan
statusbar.new=white
main.text=blue
main.text.me=white
main.text.them=bold_white
main.splash=red
main.help.header=bold_blue
main.time=green
input.text=yellow
subscribed=bold_magenta
unsubscribed=bold_black
otr.started.trusted=cyan
otr.started.untrusted=yellow
otr.ended=blue
otr.trusted=cyan
otr.untrusted=yellow
online=red
away=cyan
chat=green
dnd=megenta
xa=cyan
offline=green
incoming=yellow
mention=green
trigger=green
typing=magenta
gone=yellow
error=red
roominfo=white
roommention=bold_green
roommention.term=bold_green
roomtrigger=bold_green
roomtrigger.term=bold_green
me=white
them=white
roster.header=bold_cyan
roster.chat=green
roster.online=red
roster.away=cyan
roster.xa=cyan
roster.dnd=magenta
roster.offline=green
roster.chat.active=green
roster.online.active=red
roster.away.active=cyan
roster.xa.active=cyan
roster.dnd.active=magenta
roster.offline.active=green
roster.chat.unread=bold_green
roster.online.unread=bold_red
roster.away.unread=bold_cyan
roster.xa.unread=bold_cyan
roster.dnd.unread=bold_magenta
roster.offline.unread=bold_green
roster.room=red
roster.room.unread=bold_red
roster.room.mention=bold_red
roster.room.trigger=bold_red
occupants.header=bold_cyan
receipt.sent=red
.h' href='/danisanti/profani-tty/commit/src/common.h?id=b6f36673900939ad171b84bb088d82226d06285a'>b6f36673 ^
a48b48b7 ^
f2638e00 ^
a48b48b7 ^

f2638e00 ^
a48b48b7 ^
e6749d66 ^
e9225687 ^














e6749d66 ^
6f498d1f ^

e4ddced4 ^
dd11334b ^
4c6cfcdc ^
e7e1688d ^
3b0f7e10 ^
37742d71 ^
6cc4abed ^
06ecfef1 ^
c7100203 ^
8c68fa0b ^
be7c4f5a ^
3b0f7e10 ^
e434b1bb ^
be7c4f5a ^
f243e333 ^

d9344b00 ^
286fecf3 ^



f9eb302a ^

8c68fa0b ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
  
           
                                 
  
                                                            
  












                                                                       
                                                                      
  











                                                                                




                
                  

                  

                 



                                                                                                       

                                              




                                                                    
                                 



                      
 
                                  
      

                       
           
 
              














                      
 

                                          
                                                                                                       
                                                                                   
                                                      
                                                                                 
                                            
                                 
 
                               
                                             
 
                                                   
                                                
                                 
 

                                                                                                               
 



                                                                        

                                    
      
/*
 * common.h
 * vim: expandtab:ts=4:sts=4:sw=4
 *
 * Copyright (C) 2012 - 2019 James Booth <boothj5@gmail.com>
 *
 * This file is part of Profanity.
 *
 * Profanity is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Profanity 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 Profanity.  If not, see <https://www.gnu.org/licenses/>.
 *
 * In addition, as a special exception, the copyright holders give permission to
 * link the code of portions of this program with the OpenSSL library under
 * certain conditions as described in each individual source file, and
 * distribute linked combinations including the two.
 *
 * You must obey the GNU General Public License in all respects for all of the
 * code used other than OpenSSL. If you modify file(s) with this exception, you
 * may extend this exception to your version of the file(s), but you are not
 * obligated to do so. If you do not wish to do so, delete this exception
 * statement from your version. If you delete this exception statement from all
 * source files in the program, then also delete it here.
 *
 */

#ifndef COMMON_H
#define COMMON_H

#include <stdio.h>
#include <wchar.h>

#include <glib.h>

#ifndef NOTIFY_CHECK_VERSION
#define notify_notification_new(summary, body, icon) notify_notification_new(summary, body, icon, NULL)
#endif

#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))

// assume malloc stores at most 8 bytes for size of allocated memory
// and page size is at least 4KB
#define READ_BUF_SIZE 4088


#define FREE_SET_NULL(resource) \
do { \
    free(resource); \
    resource = NULL; \
} while (0)

#define GFREE_SET_NULL(resource) \
do { \
    g_free(resource); \
    resource = NULL; \
} while (0)

typedef enum {
    CONTACT_OFFLINE,
    CONTACT_ONLINE,
    CONTACT_AWAY,
    CONTACT_DND,
    CONTACT_CHAT,
    CONTACT_XA
} contact_presence_t;

typedef enum {
    RESOURCE_ONLINE,
    RESOURCE_AWAY,
    RESOURCE_DND,
    RESOURCE_CHAT,
    RESOURCE_XA
} resource_presence_t;

gboolean create_dir(char *name);
gboolean mkdir_recursive(const char *dir);
gboolean copy_file(const char *const src, const char *const target, const gboolean overwrite_existing);
char* str_replace(const char *string, const char *substr, const char *replacement);
int str_contains(const char str[], int size, char ch);
gboolean strtoi_range(char *str, int *saveptr, int min, int max, char **err_msg);
int utf8_display_len(const char *const str);
char* file_getline(FILE *stream);

char* release_get_latest(void);
gboolean release_is_new(char *found_version);

char* get_file_or_linked(char *loc, char *basedir);
char* strip_arg_quotes(const char *const input);
gboolean is_notify_enabled(void);

GSList* prof_occurrences(const char *const needle, const char *const haystack, int offset, gboolean whole_word,
    GSList **result);

int is_regular_file(const char *path);
int is_dir(const char *path);
void get_file_paths_recursive(const char *directory, GSList **contents);

char* get_random_string(int length);

#endif