1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-11-22 02:03:02 +01:00

Update astylerc to match toxcore & reformat all source files

This commit is contained in:
jfreegman 2018-07-18 11:33:16 -04:00
parent cb524dcbc3
commit a37bf300f9
No known key found for this signature in database
GPG Key ID: 3627F3144076AE63
39 changed files with 1924 additions and 1123 deletions

View File

@ -1,11 +1,26 @@
# Bracket Style Options
--style=kr
--pad-header
--max-code-length=120
--convert-tabs
# Tab Options
--indent=spaces=4
# Indentation Options
--indent-switches
# Padding Options
--pad-header
--break-blocks
--pad-oper
--unpad-paren
--align-pointer=name
--align-reference=name
# Formatting Options
--add-brackets
--convert-tabs
--max-code-length=120
# Other Options
--preserve-date
--formatted
--lineend=linux
--break-blocks

View File

@ -46,8 +46,9 @@ extern struct user_settings *user_settings;
void api_display(const char *const msg)
{
if (msg == NULL)
if (msg == NULL) {
return;
}
self_window = get_active_window();
line_info_add(self_window, NULL, NULL, NULL, SYS_MSG, 0, 0, msg);
@ -63,8 +64,9 @@ char *api_get_nick(void)
size_t len = tox_self_get_name_size(user_tox);
uint8_t *name = malloc(len + 1);
if (name == NULL)
if (name == NULL) {
return NULL;
}
tox_self_get_name(user_tox, name);
name[len] = '\0';
@ -81,8 +83,9 @@ char *api_get_status_message(void)
size_t len = tox_self_get_status_message_size(user_tox);
uint8_t *status = malloc(len + 1);
if (status == NULL)
if (status == NULL) {
return NULL;
}
tox_self_get_status_message(user_tox, status);
status[len] = '\0';
@ -91,14 +94,16 @@ char *api_get_status_message(void)
void api_send(const char *msg)
{
if (msg == NULL || self_window->chatwin->cqueue == NULL)
if (msg == NULL || self_window->chatwin->cqueue == NULL) {
return;
}
char *name = api_get_nick();
char timefrmt[TIME_STR_SIZE];
if (name == NULL)
if (name == NULL) {
return;
}
self_window = get_active_window();
get_time_str(timefrmt, sizeof(timefrmt));
@ -145,8 +150,11 @@ void cmd_run(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX
self_window = self;
if (argc != 1) {
if ( argc < 1 ) error_str = "Path must be specified!";
else error_str = "Only one argument allowed!";
if (argc < 1) {
error_str = "Path must be specified!";
} else {
error_str = "Only one argument allowed!";
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, error_str);
return;
@ -173,8 +181,9 @@ void invoke_autoruns(WINDOW *window, ToxWindow *self)
DIR *d;
FILE *fp;
if (user_settings->autorun_path[0] == '\0')
if (user_settings->autorun_path[0] == '\0') {
return;
}
d = opendir(user_settings->autorun_path);

View File

@ -76,14 +76,16 @@ static int set_call(Call *call, bool start)
if (start) {
call->ttas = true;
if ( pthread_mutex_init(&call->mutex, NULL) != 0 )
if (pthread_mutex_init(&call->mutex, NULL) != 0) {
return -1;
}
} else {
call->ttid = 0;
if ( pthread_mutex_destroy(&call->mutex) != 0 )
if (pthread_mutex_destroy(&call->mutex) != 0) {
return -1;
}
}
return 0;
}
@ -161,11 +163,13 @@ void terminate_audio()
{
int i;
for (i = 0; i < CallControl.max_calls; ++i)
for (i = 0; i < CallControl.max_calls; ++i) {
stop_transmission(&CallControl.calls[i], i);
}
if ( CallControl.av )
if (CallControl.av) {
toxav_kill(CallControl.av);
}
terminate_devices();
}
@ -187,9 +191,10 @@ void read_device_callback(const int16_t *captured, uint32_t size, void *data)
void write_device_callback(uint32_t friend_number, const int16_t *PCM, uint16_t sample_count, uint8_t channels,
uint32_t sample_rate)
{
if ( CallControl.calls[friend_number].ttas )
if (CallControl.calls[friend_number].ttas) {
write_out(CallControl.calls[friend_number].out_idx, PCM, sample_count, channels, sample_rate);
}
}
int start_transmission(ToxWindow *self, Call *call)
{
@ -198,24 +203,29 @@ int start_transmission(ToxWindow *self, Call *call)
return -1;
}
if (set_call(call, true) == -1)
if (set_call(call, true) == -1) {
return -1;
}
DeviceError error = open_primary_device(input, &call->in_idx,
CallControl.audio_sample_rate, CallControl.audio_frame_duration, CallControl.audio_channels);
if (error != de_None) {
if ( error == de_FailedStart)
if (error == de_FailedStart) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to start input device");
}
if ( error == de_InternalError )
if (error == de_InternalError) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Internal error with opening input device");
}
}
if (register_device_callback(self->num, call->in_idx,
read_device_callback, &self->num, true) != de_None)
/* Set VAD as true for all; TODO: Make it more dynamic */
{
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to register input handler!");
}
if (open_primary_device(output, &call->out_idx,
CallControl.audio_sample_rate, CallControl.audio_frame_duration, CallControl.audio_channels) != de_None) {
@ -231,20 +241,24 @@ int stop_transmission(Call *call, uint32_t friend_number)
if (call->ttas) {
TOXAV_ERR_CALL_CONTROL error = TOXAV_ERR_CALL_CONTROL_OK;
if ( CallControl.call_state > TOXAV_FRIEND_CALL_STATE_FINISHED )
if (CallControl.call_state > TOXAV_FRIEND_CALL_STATE_FINISHED) {
toxav_call_control(CallControl.av, friend_number, TOXAV_CALL_CONTROL_CANCEL, &error);
}
if (error == TOXAV_ERR_CALL_CONTROL_OK) {
call->ttas = false;
if ( call->in_idx != -1 )
if (call->in_idx != -1) {
close_device(input, call->in_idx);
}
if ( call->out_idx != -1 )
if (call->out_idx != -1) {
close_device(output, call->out_idx);
}
if ( set_call(call, false) == -1 )
if (set_call(call, false) == -1) {
return -1;
}
return 0;
} else {
@ -292,10 +306,11 @@ void callstate_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_
break;
case (TOXAV_FRIEND_CALL_STATE_FINISHED):
if ( CallControl.pending_call )
if (CallControl.pending_call) {
callback_call_rejected(friend_number);
else
} else {
callback_call_ended(friend_number);
}
#ifdef VIDEO
callback_recv_video_end(friend_number);
@ -320,10 +335,11 @@ void callstate_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_
#ifdef VIDEO
/* Handle receiving client video call states */
if ( state & TOXAV_FRIEND_CALL_STATE_SENDING_V )
if (state & TOXAV_FRIEND_CALL_STATE_SENDING_V) {
callback_recv_video_starting(friend_number);
else if ( state & ~TOXAV_FRIEND_CALL_STATE_SENDING_V )
} else if (state & ~TOXAV_FRIEND_CALL_STATE_SENDING_V) {
callback_recv_video_end(friend_number);
}
#endif /* VIDEO */
}
@ -347,12 +363,14 @@ void audio_bit_rate_status_cb(ToxAV *av, uint32_t friend_number, uint32_t audio_
void callback_recv_invite(Tox *m, uint32_t friend_number)
{
if (friend_number >= Friends.max_idx)
if (friend_number >= Friends.max_idx) {
return;
}
if (Friends.list[friend_number].chatwin == -1) {
if (get_num_active_windows() >= MAX_WINDOWS_NUM)
if (get_num_active_windows() >= MAX_WINDOWS_NUM) {
return;
}
Friends.list[friend_number].chatwin = add_window(m, new_chat(m, Friends.list[friend_number].num));
}
@ -387,8 +405,9 @@ void callback_recv_starting(uint32_t friend_number)
if (windows[i].onStarting != NULL && windows[i].num == friend_number) {
windows[i].onStarting(&windows[i], CallControl.av, friend_number, CallControl.call_state);
if ( 0 != start_transmission(&windows[i], &CallControl.calls[friend_number]) ) /* YEAH! */
if (0 != start_transmission(&windows[i], &CallControl.calls[friend_number])) { /* YEAH! */
line_info_add(&windows[i], NULL, NULL, NULL, SYS_MSG, 0, 0, "Error starting transmission!");
}
return;
}
@ -491,11 +510,17 @@ void cmd_call(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MA
toxav_call(CallControl.av, self->num, CallControl.audio_bit_rate, CallControl.video_bit_rate, &error);
if (error != TOXAV_ERR_CALL_OK) {
if ( error == TOXAV_ERR_CALL_FRIEND_ALREADY_IN_CALL ) error_str = "Already in a call!";
else if ( error == TOXAV_ERR_CALL_MALLOC ) error_str = "Memory allocation issue";
else if ( error == TOXAV_ERR_CALL_FRIEND_NOT_FOUND ) error_str = "Friend number invalid";
else if ( error == TOXAV_ERR_CALL_FRIEND_NOT_CONNECTED ) error_str = "Friend is valid but not currently connected";
else error_str = "Internal error!";
if (error == TOXAV_ERR_CALL_FRIEND_ALREADY_IN_CALL) {
error_str = "Already in a call!";
} else if (error == TOXAV_ERR_CALL_MALLOC) {
error_str = "Memory allocation issue";
} else if (error == TOXAV_ERR_CALL_FRIEND_NOT_FOUND) {
error_str = "Friend number invalid";
} else if (error == TOXAV_ERR_CALL_FRIEND_NOT_CONNECTED) {
error_str = "Friend is valid but not currently connected";
} else {
error_str = "Internal error!";
}
goto on_error;
}
@ -531,11 +556,17 @@ void cmd_answer(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[
toxav_answer(CallControl.av, self->num, CallControl.audio_bit_rate, CallControl.video_bit_rate, &error);
if (error != TOXAV_ERR_ANSWER_OK) {
if ( error == TOXAV_ERR_ANSWER_FRIEND_NOT_CALLING ) error_str = "No incoming call!";
else if ( error == TOXAV_ERR_ANSWER_CODEC_INITIALIZATION ) error_str = "Failed to initialize codecs!";
else if ( error == TOXAV_ERR_ANSWER_FRIEND_NOT_FOUND ) error_str = "Friend not found!";
else if ( error == TOXAV_ERR_ANSWER_INVALID_BIT_RATE ) error_str = "Invalid bit rate!";
else error_str = "Internal error!";
if (error == TOXAV_ERR_ANSWER_FRIEND_NOT_CALLING) {
error_str = "No incoming call!";
} else if (error == TOXAV_ERR_ANSWER_CODEC_INITIALIZATION) {
error_str = "Failed to initialize codecs!";
} else if (error == TOXAV_ERR_ANSWER_FRIEND_NOT_FOUND) {
error_str = "Friend not found!";
} else if (error == TOXAV_ERR_ANSWER_INVALID_BIT_RATE) {
error_str = "Invalid bit rate!";
} else {
error_str = "Internal error!";
}
goto on_error;
}
@ -614,19 +645,24 @@ void cmd_list_devices(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*
const char *error_str;
if (argc != 1) {
if ( argc < 1 ) error_str = "Type must be specified!";
else error_str = "Only one argument allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else {
error_str = "Only one argument allowed!";
}
goto on_error;
}
DeviceType type;
if ( strcasecmp(argv[1], "in") == 0 ) /* Input devices */
if (strcasecmp(argv[1], "in") == 0) { /* Input devices */
type = input;
}
else if ( strcasecmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcasecmp(argv[1], "out") == 0) { /* Output devices */
type = output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -649,20 +685,26 @@ void cmd_change_device(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (
const char *error_str;
if (argc != 2) {
if ( argc < 1 ) error_str = "Type must be specified!";
else if ( argc < 2 ) error_str = "Must have id!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else if (argc < 2) {
error_str = "Must have id!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}
DeviceType type;
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
if (strcmp(argv[1], "in") == 0) { /* Input devices */
type = input;
}
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcmp(argv[1], "out") == 0) { /* Output devices */
type = output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -693,20 +735,26 @@ void cmd_ccur_device(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*a
const char *error_str;
if (argc != 2) {
if ( argc < 1 ) error_str = "Type must be specified!";
else if ( argc < 2 ) error_str = "Must have id!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else if (argc < 2) {
error_str = "Must have id!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}
DeviceType type;
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
if (strcmp(argv[1], "in") == 0) { /* Input devices */
type = input;
}
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcmp(argv[1], "out") == 0) { /* Output devices */
type = output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -764,19 +812,24 @@ void cmd_mute(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MA
const char *error_str;
if (argc != 1) {
if ( argc < 1 ) error_str = "Type must be specified!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}
DeviceType type;
if ( strcasecmp(argv[1], "in") == 0 ) /* Input devices */
if (strcasecmp(argv[1], "in") == 0) { /* Input devices */
type = input;
}
else if ( strcasecmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcasecmp(argv[1], "out") == 0) { /* Output devices */
type = output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -812,8 +865,11 @@ void cmd_sense(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[M
const char *error_str;
if (argc != 1) {
if ( argc < 1 ) error_str = "Must have value!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Must have value!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}

View File

@ -103,13 +103,15 @@ DeviceError init_devices()
get_devices_names();
// Start poll thread
if (pthread_mutex_init(&mutex, NULL) != 0)
if (pthread_mutex_init(&mutex, NULL) != 0) {
return de_InternalError;
}
pthread_t thread_id;
if ( pthread_create(&thread_id, NULL, thread_poll, NULL) != 0 || pthread_detach(thread_id) != 0)
if (pthread_create(&thread_id, NULL, thread_poll, NULL) != 0 || pthread_detach(thread_id) != 0) {
return de_InternalError;
}
#ifdef AUDIO
av = av_;
@ -127,8 +129,9 @@ DeviceError terminate_devices()
usleep(20000);
if (pthread_mutex_destroy(&mutex) != 0)
if (pthread_mutex_destroy(&mutex) != 0) {
return (DeviceError) de_InternalError;
}
return (DeviceError) de_None;
}
@ -151,10 +154,11 @@ void get_devices_names()
size[output] = 0;
if (alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT") != AL_FALSE)
if (alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT") != AL_FALSE) {
stringed_device_list = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
else
} else {
stringed_device_list = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
}
if (stringed_device_list) {
ddevice_names[output] = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
@ -168,7 +172,9 @@ void get_devices_names()
DeviceError device_mute(DeviceType type, uint32_t device_idx)
{
if (device_idx >= MAX_DEVICES) return de_InvalidSelection;
if (device_idx >= MAX_DEVICES) {
return de_InvalidSelection;
}
lock;
@ -188,7 +194,9 @@ DeviceError device_mute(DeviceType type, uint32_t device_idx)
#ifdef AUDIO
DeviceError device_set_VAD_treshold(uint32_t device_idx, float value)
{
if (device_idx >= MAX_DEVICES) return de_InvalidSelection;
if (device_idx >= MAX_DEVICES) {
return de_InvalidSelection;
}
lock;
@ -209,7 +217,9 @@ DeviceError device_set_VAD_treshold(uint32_t device_idx, float value)
DeviceError set_primary_device(DeviceType type, int32_t selection)
{
if (size[type] <= selection || selection < 0) return de_InvalidSelection;
if (size[type] <= selection || selection < 0) {
return de_InvalidSelection;
}
primary_device[type] = selection;
@ -231,9 +241,13 @@ void get_primary_device_name(DeviceType type, char *buf, int size)
DeviceError open_device(DeviceType type, int32_t selection, uint32_t *device_idx, uint32_t sample_rate,
uint32_t frame_duration, uint8_t channels)
{
if (size[type] <= selection || selection < 0) return de_InvalidSelection;
if (size[type] <= selection || selection < 0) {
return de_InvalidSelection;
}
if (channels != 1 && channels != 2) return de_UnsupportedMode;
if (channels != 1 && channels != 2) {
return de_UnsupportedMode;
}
lock;
@ -246,7 +260,9 @@ DeviceError open_device(DeviceType type, int32_t selection, uint32_t *device_idx
if (i == MAX_DEVICES) {
unlock;
return de_AllDevicesBusy;
} else *device_idx = i;
} else {
*device_idx = i;
}
for (i = 0; i < MAX_DEVICES; i ++) { /* Check if any device has the same selection */
if (running[type][i] && running[type][i]->selection == selection) {
@ -325,7 +341,9 @@ DeviceError open_device(DeviceType type, int32_t selection, uint32_t *device_idx
DeviceError close_device(DeviceType type, uint32_t device_idx)
{
if (device_idx >= MAX_DEVICES) return de_InvalidSelection;
if (device_idx >= MAX_DEVICES) {
return de_InvalidSelection;
}
lock;
Device *device = running[type][device_idx];
@ -340,22 +358,32 @@ DeviceError close_device(DeviceType type, uint32_t device_idx)
if (!device->ref_count) {
if (type == input) {
if ( !alcCaptureCloseDevice(device->dhndl) ) rc = de_AlError;
if (!alcCaptureCloseDevice(device->dhndl)) {
rc = de_AlError;
}
} else {
if (alcGetCurrentContext() != device->ctx) alcMakeContextCurrent(device->ctx);
if (alcGetCurrentContext() != device->ctx) {
alcMakeContextCurrent(device->ctx);
}
alDeleteSources(1, &device->source);
alDeleteBuffers(OPENAL_BUFS, device->buffers);
alcMakeContextCurrent(NULL);
if ( device->ctx ) alcDestroyContext(device->ctx);
if (device->ctx) {
alcDestroyContext(device->ctx);
}
if ( !alcCloseDevice(device->dhndl) ) rc = de_AlError;
if (!alcCloseDevice(device->dhndl)) {
rc = de_AlError;
}
}
free(device);
} else device->ref_count--;
} else {
device->ref_count--;
}
unlock;
return rc;
@ -364,8 +392,9 @@ DeviceError close_device(DeviceType type, uint32_t device_idx)
DeviceError register_device_callback(int32_t friend_number, uint32_t device_idx, DataHandleCallback callback,
void *data, bool enable_VAD)
{
if (size[input] <= device_idx || !running[input][device_idx] || running[input][device_idx]->dhndl == NULL)
if (size[input] <= device_idx || !running[input][device_idx] || running[input][device_idx]->dhndl == NULL) {
return de_InvalidSelection;
}
lock;
running[input][device_idx]->cb = callback;
@ -380,11 +409,15 @@ DeviceError register_device_callback( int32_t friend_number, uint32_t device_idx
inline__ DeviceError write_out(uint32_t device_idx, const int16_t *data, uint32_t sample_count, uint8_t channels,
uint32_t sample_rate)
{
if (device_idx >= MAX_DEVICES) return de_InvalidSelection;
if (device_idx >= MAX_DEVICES) {
return de_InvalidSelection;
}
Device *device = running[output][device_idx];
if (!device || device->muted) return de_DeviceNotActive;
if (!device || device->muted) {
return de_DeviceNotActive;
}
pthread_mutex_lock(device->mutex);
@ -399,8 +432,9 @@ inline__ DeviceError write_out(uint32_t device_idx, const int16_t *data, uint32_
alSourceUnqueueBuffers(device->source, processed, bufids);
alDeleteBuffers(processed - 1, bufids + 1);
bufid = bufids[0];
} else if (queued < 16) alGenBuffers(1, &bufid);
else {
} else if (queued < 16) {
alGenBuffers(1, &bufid);
} else {
pthread_mutex_unlock(device->mutex);
return de_Busy;
}
@ -413,7 +447,9 @@ inline__ DeviceError write_out(uint32_t device_idx, const int16_t *data, uint32_
ALint state;
alGetSourcei(device->source, AL_SOURCE_STATE, &state);
if (state != AL_PLAYING) alSourcePlay(device->source);
if (state != AL_PLAYING) {
alSourcePlay(device->source);
}
pthread_mutex_unlock(device->mutex);
@ -470,7 +506,9 @@ void *thread_poll (void *arg) // TODO: maybe use thread for every input source
continue;
}
if ( device->cb ) device->cb(frame, f_size, device->cb_data);
if (device->cb) {
device->cb(frame, f_size, device->cb_data);
}
}
unlock;
@ -502,8 +540,9 @@ DeviceError selection_valid(DeviceType type, int32_t selection)
void *get_device_callback_data(uint32_t device_idx)
{
if (size[input] <= device_idx || !running[input][device_idx] || running[input][device_idx]->dhndl == NULL)
if (size[input] <= device_idx || !running[input][device_idx] || running[input][device_idx]->dhndl == NULL) {
return NULL;
}
return running[input][device_idx]->cb_data;
}

View File

@ -97,16 +97,18 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
{
ChatContext *ctx = self->chatwin;
if (ctx->pos <= 0 || ctx->len <= 0 || ctx->pos > ctx->len || ctx->len >= MAX_STR_SIZE || size > MAX_STR_SIZE)
if (ctx->pos <= 0 || ctx->len <= 0 || ctx->pos > ctx->len || ctx->len >= MAX_STR_SIZE || size > MAX_STR_SIZE) {
return -1;
}
const char *L = (char *) list;
const char *endchrs = " ";
char ubuf[MAX_STR_SIZE];
/* work with multibyte string copy of buf for simplicity */
if (wcs_to_mbs_buf(ubuf, ctx->line, sizeof(ubuf)) == -1)
if (wcs_to_mbs_buf(ubuf, ctx->line, sizeof(ubuf)) == -1) {
return -1;
}
/* TODO: generalize this */
bool dir_search = !strncmp(ubuf, "/sendfile", strlen("/sendfile"))
@ -124,14 +126,16 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
const char *s = dir_search ? strchr(tmp, '\"') : strrchr(tmp, ' ');
char *sub = calloc(1, strlen(ubuf) + 1);
if (sub == NULL)
if (sub == NULL) {
exit_toxic_err("failed in complete_line", FATALERR_MEMORY);
}
if (!s && !dir_search) {
strcpy(sub, tmp);
if (sub[0] != '/')
if (sub[0] != '/') {
endchrs = ": ";
}
} else if (s) {
strcpy(sub, &s[1]);
@ -139,10 +143,11 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
int sub_len = strlen(sub);
int si = char_rfind(sub, '/', sub_len);
if (si || *sub == '/')
if (si || *sub == '/') {
memmove(sub, &sub[si + 1], sub_len - si);
}
}
}
if (!sub[0]) {
free(sub);
@ -159,17 +164,20 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
char str[MAX_CMDNAME_SIZE + 1];
snprintf(str, sizeof(str), "%s", &L[i * size]);
if (strncasecmp(str, sub, s_len) == 0)
if (strncasecmp(str, sub, s_len) == 0) {
strcpy(matches[n_matches++], str);
}
}
free(sub);
if (!n_matches)
if (!n_matches) {
return -1;
}
if (!dir_search && n_matches > 1)
if (!dir_search && n_matches > 1) {
print_matches(self, NULL, matches, n_matches, MAX_STR_SIZE);
}
char match[MAX_STR_SIZE];
size_t match_len = get_str_match(self, match, sizeof(match), matches, n_matches);
@ -179,10 +187,11 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
}
if (dir_search) {
if (n_matches == 1)
if (n_matches == 1) {
endchrs = char_rfind(match, '.', match_len) ? "\"" : "/";
else
} else {
endchrs = "";
}
} else if (n_matches > 1) {
endchrs = "";
}
@ -192,8 +201,9 @@ int complete_line(ToxWindow *self, const void *list, size_t n_items, size_t size
int strt = ctx->pos - s_len;
int diff = match_len - s_len + n_endchrs;
if (ctx->len + diff >= MAX_STR_SIZE)
if (ctx->len + diff >= MAX_STR_SIZE) {
return -1;
}
char tmpend[MAX_STR_SIZE];
snprintf(tmpend, sizeof(tmpend), "%s", &ubuf[ctx->pos]);
@ -235,13 +245,15 @@ static void complt_home_dir(ToxWindow *self, char *path, int pathsize, const cha
wchar_t wline[MAX_STR_SIZE];
if (mbs_to_wcs_buf(wline, newline, sizeof(wline) / sizeof(wchar_t)) == -1)
if (mbs_to_wcs_buf(wline, newline, sizeof(wline) / sizeof(wchar_t)) == -1) {
return;
}
int newlen = wcslen(wline);
if (ctx->len + newlen >= MAX_STR_SIZE)
if (ctx->len + newlen >= MAX_STR_SIZE) {
return;
}
wmemcpy(ctx->line, wline, newlen + 1);
ctx->pos = newlen;
@ -261,14 +273,17 @@ int dir_match(ToxWindow *self, Tox *m, const wchar_t *line, const wchar_t *cmd)
char b_cmd[MAX_STR_SIZE];
const wchar_t *tmpline = &line[wcslen(cmd) + 2]; /* start after "/command \"" */
if (wcs_to_mbs_buf(b_path, tmpline, sizeof(b_path)) == -1)
if (wcs_to_mbs_buf(b_path, tmpline, sizeof(b_path)) == -1) {
return -1;
}
if (wcs_to_mbs_buf(b_cmd, cmd, sizeof(b_cmd)) == -1)
if (wcs_to_mbs_buf(b_cmd, cmd, sizeof(b_cmd)) == -1) {
return -1;
}
if (b_path[0] == '~')
if (b_path[0] == '~') {
complt_home_dir(self, b_path, sizeof(b_path), b_cmd, strlen(b_cmd) + 2);
}
int si = char_rfind(b_path, '/', strlen(b_path));
@ -286,8 +301,9 @@ int dir_match(ToxWindow *self, Tox *m, const wchar_t *line, const wchar_t *cmd)
int b_name_len = strlen(b_name);
DIR *dp = opendir(b_path);
if (dp == NULL)
if (dp == NULL) {
return -1;
}
char dirnames[MAX_DIRS][NAME_MAX + 1];
struct dirent *entry;
@ -303,8 +319,9 @@ int dir_match(ToxWindow *self, Tox *m, const wchar_t *line, const wchar_t *cmd)
closedir(dp);
if (dircount == 0)
if (dircount == 0) {
return -1;
}
if (dircount > 1) {
qsort(dirnames, dircount, NAME_MAX + 1, qsort_strcasecmp_hlpr);

View File

@ -56,8 +56,9 @@ int avatar_send(Tox *m, uint32_t friendnum)
uint32_t filenum = tox_file_send(m, friendnum, TOX_FILE_KIND_AVATAR, (size_t) Avatar.size,
NULL, (uint8_t *) Avatar.name, Avatar.name_len, &err);
if (Avatar.size == 0)
if (Avatar.size == 0) {
return 0;
}
if (err != TOX_ERR_FILE_SEND_OK) {
fprintf(stderr, "tox_file_send failed for friendnumber %d (error %d)\n", friendnum, err);
@ -66,13 +67,15 @@ int avatar_send(Tox *m, uint32_t friendnum)
struct FileTransfer *ft = new_file_transfer(NULL, friendnum, filenum, FILE_TRANSFER_SEND, TOX_FILE_KIND_AVATAR);
if (!ft)
if (!ft) {
return -1;
}
ft->file = fopen(Avatar.path, "r");
if (ft->file == NULL)
if (ft->file == NULL) {
return -1;
}
snprintf(ft->file_name, sizeof(ft->file_name), "%s", Avatar.name);
ft->file_size = Avatar.size;
@ -86,10 +89,11 @@ static void avatar_send_all(Tox *m)
size_t i;
for (i = 0; i < Friends.max_idx; ++i) {
if (Friends.list[i].connection_status != TOX_CONNECTION_NONE)
if (Friends.list[i].connection_status != TOX_CONNECTION_NONE) {
avatar_send(m, Friends.list[i].num);
}
}
}
/* Sets avatar to path and sends it to all online contacts.
*
@ -98,13 +102,15 @@ static void avatar_send_all(Tox *m)
*/
int avatar_set(Tox *m, const char *path, size_t path_len)
{
if (path_len == 0 || path_len >= sizeof(Avatar.path))
if (path_len == 0 || path_len >= sizeof(Avatar.path)) {
return -1;
}
FILE *fp = fopen(path, "rb");
if (fp == NULL)
if (fp == NULL) {
return -1;
}
char PNG_signature[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
@ -117,8 +123,9 @@ int avatar_set(Tox *m, const char *path, size_t path_len)
off_t size = file_size(path);
if (size == 0 || size > MAX_AVATAR_FILE_SIZE)
if (size == 0 || size > MAX_AVATAR_FILE_SIZE) {
return -1;
}
get_file_name(Avatar.name, sizeof(Avatar.name), path);
Avatar.name_len = strlen(Avatar.name);
@ -166,8 +173,9 @@ void on_avatar_file_control(Tox *m, struct FileTransfer *ft, TOX_FILE_CONTROL co
void on_avatar_chunk_request(Tox *m, struct FileTransfer *ft, uint64_t position, size_t length)
{
if (ft->state != FILE_TRANSFER_STARTED)
if (ft->state != FILE_TRANSFER_STARTED) {
return;
}
if (length == 0) {
close_file_transfer(NULL, m, ft, -1, NULL, silent);
@ -199,8 +207,9 @@ void on_avatar_chunk_request(Tox *m, struct FileTransfer *ft, uint64_t position,
TOX_ERR_FILE_SEND_CHUNK err;
tox_file_send_chunk(m, ft->friendnum, ft->filenum, position, send_data, send_length, &err);
if (err != TOX_ERR_FILE_SEND_CHUNK_OK)
if (err != TOX_ERR_FILE_SEND_CHUNK_OK) {
fprintf(stderr, "tox_file_send_chunk failed in avatar callback (error %d)\n", err);
}
ft->position += send_length;
ft->last_keep_alive = get_unix_time();

View File

@ -132,8 +132,9 @@ static const char chat_cmd_list[AC_NUM_CHAT_COMMANDS][MAX_CMDNAME_SIZE] = {
static void set_self_typingstatus(ToxWindow *self, Tox *m, bool is_typing)
{
if (user_settings->show_typing_self == SHOW_TYPING_OFF)
if (user_settings->show_typing_self == SHOW_TYPING_OFF) {
return;
}
ChatContext *ctx = self->chatwin;
@ -205,8 +206,9 @@ static void recv_action_helper(ToxWindow *self, Tox *m, uint32_t num, const char
static void chat_onMessage(ToxWindow *self, Tox *m, uint32_t num, TOX_MESSAGE_TYPE type, const char *msg, size_t len)
{
if (self->num != num)
if (self->num != num) {
return;
}
char nick[TOX_MAX_NAME_LENGTH];
get_nick_truncate(m, nick, num);
@ -214,20 +216,23 @@ static void chat_onMessage(ToxWindow *self, Tox *m, uint32_t num, TOX_MESSAGE_TY
char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt));
if (type == TOX_MESSAGE_TYPE_NORMAL)
if (type == TOX_MESSAGE_TYPE_NORMAL) {
return recv_message_helper(self, m, num, msg, len, nick, timefrmt);
}
if (type == TOX_MESSAGE_TYPE_ACTION)
if (type == TOX_MESSAGE_TYPE_ACTION) {
return recv_action_helper(self, m, num, msg, len, nick, timefrmt);
}
}
static void chat_pause_file_transfers(Tox *m, uint32_t friendnum);
static void chat_resume_file_senders(ToxWindow *self, Tox *m, uint32_t fnum);
static void chat_onConnectionChange(ToxWindow *self, Tox *m, uint32_t num, TOX_CONNECTION connection_status)
{
if (self->num != num)
if (self->num != num) {
return;
}
StatusBar *statusbar = self->stb;
ChatContext *ctx = self->chatwin;
@ -255,8 +260,9 @@ static void chat_onConnectionChange(ToxWindow *self, Tox *m, uint32_t num, TOX_C
} else if (connection_status == TOX_CONNECTION_NONE) {
Friends.list[num].is_typing = false;
if (self->chatwin->self_is_typing)
if (self->chatwin->self_is_typing) {
set_self_typingstatus(self, m, 0);
}
chat_pause_file_transfers(m, num);
@ -268,16 +274,18 @@ static void chat_onConnectionChange(ToxWindow *self, Tox *m, uint32_t num, TOX_C
static void chat_onTypingChange(ToxWindow *self, Tox *m, uint32_t num, bool is_typing)
{
if (self->num != num)
if (self->num != num) {
return;
}
Friends.list[num].is_typing = is_typing;
}
static void chat_onNickChange(ToxWindow *self, Tox *m, uint32_t num, const char *nick, size_t length)
{
if (self->num != num)
if (self->num != num) {
return;
}
StatusBar *statusbar = self->stb;
@ -290,8 +298,9 @@ static void chat_onNickChange(ToxWindow *self, Tox *m, uint32_t num, const char
static void chat_onStatusChange(ToxWindow *self, Tox *m, uint32_t num, TOX_USER_STATUS status)
{
if (self->num != num)
if (self->num != num) {
return;
}
StatusBar *statusbar = self->stb;
statusbar->status = status;
@ -299,8 +308,9 @@ static void chat_onStatusChange(ToxWindow *self, Tox *m, uint32_t num, TOX_USER_
static void chat_onStatusMessageChange(ToxWindow *self, uint32_t num, const char *status, size_t length)
{
if (self->num != num)
if (self->num != num) {
return;
}
StatusBar *statusbar = self->stb;
@ -321,13 +331,15 @@ static void chat_pause_file_transfers(Tox *m, uint32_t friendnum)
size_t i;
for (i = 0; i < MAX_FILES; ++i) {
if (friend->file_sender[i].state >= FILE_TRANSFER_STARTED)
if (friend->file_sender[i].state >= FILE_TRANSFER_STARTED) {
friend->file_sender[i].state = FILE_TRANSFER_PAUSED;
}
if (friend->file_receiver[i].state >= FILE_TRANSFER_STARTED)
if (friend->file_receiver[i].state >= FILE_TRANSFER_STARTED) {
friend->file_receiver[i].state = FILE_TRANSFER_PAUSED;
}
}
}
/* Tries to resume broken file senders. Called when a friend comes online */
static void chat_resume_file_senders(ToxWindow *self, Tox *m, uint32_t friendnum)
@ -337,8 +349,9 @@ static void chat_resume_file_senders(ToxWindow *self, Tox *m, uint32_t friendnum
for (i = 0; i < MAX_FILES; ++i) {
struct FileTransfer *ft = &Friends.list[friendnum].file_sender[i];
if (ft->state != FILE_TRANSFER_PAUSED)
if (ft->state != FILE_TRANSFER_PAUSED) {
continue;
}
TOX_ERR_FILE_SEND err;
ft->filenum = tox_file_send(m, friendnum, TOX_FILE_KIND_DATA, ft->file_size, ft->file_id,
@ -356,16 +369,19 @@ static void chat_resume_file_senders(ToxWindow *self, Tox *m, uint32_t friendnum
static void chat_onFileChunkRequest(ToxWindow *self, Tox *m, uint32_t friendnum, uint32_t filenum, uint64_t position,
size_t length)
{
if (friendnum != self->num)
if (friendnum != self->num) {
return;
}
struct FileTransfer *ft = get_file_transfer_struct(friendnum, filenum);
if (!ft)
if (!ft) {
return;
}
if (ft->state != FILE_TRANSFER_STARTED)
if (ft->state != FILE_TRANSFER_STARTED) {
return;
}
char msg[MAX_STR_SIZE];
@ -404,8 +420,9 @@ static void chat_onFileChunkRequest(ToxWindow *self, Tox *m, uint32_t friendnum,
TOX_ERR_FILE_SEND_CHUNK err;
tox_file_send_chunk(m, ft->friendnum, ft->filenum, position, send_data, send_length, &err);
if (err != TOX_ERR_FILE_SEND_CHUNK_OK)
if (err != TOX_ERR_FILE_SEND_CHUNK_OK) {
fprintf(stderr, "tox_file_send_chunk failed in chat callback (error %d)\n", err);
}
ft->position += send_length;
ft->bps += send_length;
@ -415,16 +432,19 @@ static void chat_onFileChunkRequest(ToxWindow *self, Tox *m, uint32_t friendnum,
static void chat_onFileRecvChunk(ToxWindow *self, Tox *m, uint32_t friendnum, uint32_t filenum, uint64_t position,
const char *data, size_t length)
{
if (friendnum != self->num)
if (friendnum != self->num) {
return;
}
struct FileTransfer *ft = get_file_transfer_struct(friendnum, filenum);
if (!ft)
if (!ft) {
return;
}
if (ft->state != FILE_TRANSFER_STARTED)
if (ft->state != FILE_TRANSFER_STARTED) {
return;
}
char msg[MAX_STR_SIZE];
@ -454,13 +474,15 @@ static void chat_onFileRecvChunk(ToxWindow *self, Tox *m, uint32_t friendnum, ui
static void chat_onFileControl(ToxWindow *self, Tox *m, uint32_t friendnum, uint32_t filenum, TOX_FILE_CONTROL control)
{
if (friendnum != self->num)
if (friendnum != self->num) {
return;
}
struct FileTransfer *ft = get_file_transfer_struct(friendnum, filenum);
if (!ft)
if (!ft) {
return;
}
char msg[MAX_STR_SIZE];
@ -507,8 +529,9 @@ static bool chat_resume_broken_ft(ToxWindow *self, Tox *m, uint32_t friendnum, u
char msg[MAX_STR_SIZE];
uint8_t file_id[TOX_FILE_ID_LENGTH];
if (!tox_file_get_file_id(m, friendnum, filenum, file_id, NULL))
if (!tox_file_get_file_id(m, friendnum, filenum, file_id, NULL)) {
return false;
}
bool resuming = false;
struct FileTransfer *ft = NULL;
@ -517,8 +540,9 @@ static bool chat_resume_broken_ft(ToxWindow *self, Tox *m, uint32_t friendnum, u
for (i = 0; i < MAX_FILES; ++i) {
ft = &Friends.list[friendnum].file_receiver[i];
if (ft->state == FILE_TRANSFER_INACTIVE)
if (ft->state == FILE_TRANSFER_INACTIVE) {
continue;
}
if (memcmp(ft->file_id, file_id, TOX_FILE_ID_LENGTH) == 0) {
ft->filenum = filenum;
@ -529,14 +553,17 @@ static bool chat_resume_broken_ft(ToxWindow *self, Tox *m, uint32_t friendnum, u
}
}
if (!resuming || !ft)
if (!resuming || !ft) {
return false;
}
if (!tox_file_seek(m, ft->friendnum, ft->filenum, ft->position, NULL))
if (!tox_file_seek(m, ft->friendnum, ft->filenum, ft->position, NULL)) {
goto on_error;
}
if (!tox_file_control(m, ft->friendnum, ft->filenum, TOX_FILE_CONTROL_RESUME, NULL))
if (!tox_file_control(m, ft->friendnum, ft->filenum, TOX_FILE_CONTROL_RESUME, NULL)) {
goto on_error;
}
return true;
@ -549,12 +576,14 @@ on_error:
static void chat_onFileRecv(ToxWindow *self, Tox *m, uint32_t friendnum, uint32_t filenum, uint64_t file_size,
const char *filename, size_t name_length)
{
if (self->num != friendnum)
if (self->num != friendnum) {
return;
}
/* first check if we need to resume a broken transfer */
if (chat_resume_broken_ft(self, m, friendnum, filenum))
if (chat_resume_broken_ft(self, m, friendnum, filenum)) {
return;
}
struct FileTransfer *ft = new_file_transfer(self, friendnum, filenum, FILE_TRANSFER_RECV, TOX_FILE_KIND_DATA);
@ -630,16 +659,19 @@ static void chat_onFileRecv(ToxWindow *self, Tox *m, uint32_t friendnum, uint32_
static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, uint8_t type, const char *group_pub_key,
uint16_t length)
{
if (self->num != friendnumber)
if (self->num != friendnumber) {
return;
}
if (Friends.list[friendnumber].group_invite.key != NULL)
if (Friends.list[friendnumber].group_invite.key != NULL) {
free(Friends.list[friendnumber].group_invite.key);
}
char *k = malloc(length);
if (k == NULL)
if (k == NULL) {
exit_toxic_err("Failed in chat_onGroupInvite", FATALERR_MEMORY);
}
memcpy(k, group_pub_key, length);
Friends.list[friendnumber].group_invite.key = k;
@ -652,10 +684,11 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, ui
char name[TOX_MAX_NAME_LENGTH];
get_nick_truncate(m, name, friendnumber);
if (self->active_box != -1)
if (self->active_box != -1) {
box_silent_notify2(self, NT_WNDALERT_2 | NT_NOFOCUS, self->active_box, "invites you to join group chat");
else
} else {
box_silent_notify(self, NT_WNDALERT_2 | NT_NOFOCUS, &self->active_box, name, "invites you to join group chat");
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "%s has invited you to a group chat.", name);
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Type \"/join\" to join the chat.");
@ -666,42 +699,48 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, ui
void chat_onInvite(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
/* call is flagged active here */
self->is_call = true;
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Incoming audio call! Type: \"/answer\" or \"/reject\"");
if (self->ringing_sound == -1)
if (self->ringing_sound == -1) {
sound_notify(self, call_incoming, NT_LOOP | user_settings->bell_on_invite, &self->ringing_sound);
}
if (self->active_box != -1)
if (self->active_box != -1) {
box_silent_notify2(self, NT_NOFOCUS | NT_WNDALERT_0, self->active_box, "Incoming audio call!");
else
} else {
box_silent_notify(self, NT_NOFOCUS | NT_WNDALERT_0, &self->active_box, self->name, "Incoming audio call!");
}
}
void chat_onRinging(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Ringing...type \"/hangup\" to cancel it.");
#ifdef SOUND_NOTIFY
if (self->ringing_sound == -1)
if (self->ringing_sound == -1) {
sound_notify(self, call_outgoing, NT_LOOP, &self->ringing_sound);
}
#endif /* SOUND_NOTIFY */
}
void chat_onStarting(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
init_infobox(self);
@ -717,8 +756,9 @@ void chat_onStarting (ToxWindow *self, ToxAV *av, uint32_t friend_number, int st
void chat_onEnding(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
kill_infobox(self);
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Call ended!");
@ -732,8 +772,9 @@ void chat_onEnding (ToxWindow *self, ToxAV *av, uint32_t friend_number, int stat
void chat_onError(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
self->is_call = false;
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Error!");
@ -745,8 +786,9 @@ void chat_onError (ToxWindow *self, ToxAV *av, uint32_t friend_number, int state
void chat_onStart(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
/* call is flagged active here */
self->is_call = true;
@ -762,8 +804,9 @@ void chat_onStart (ToxWindow *self, ToxAV *av, uint32_t friend_number, int state
void chat_onCancel(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
self->is_call = false;
kill_infobox(self);
@ -776,8 +819,9 @@ void chat_onCancel (ToxWindow *self, ToxAV *av, uint32_t friend_number, int stat
void chat_onReject(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Rejected!");
self->is_call = false;
@ -789,8 +833,9 @@ void chat_onReject (ToxWindow *self, ToxAV *av, uint32_t friend_number, int stat
void chat_onEnd(ToxWindow *self, ToxAV *av, uint32_t friend_number, int state)
{
if (!self || self->num != friend_number)
if (!self || self->num != friend_number) {
return;
}
kill_infobox(self);
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Call ended!");
@ -808,8 +853,9 @@ static void init_infobox(ToxWindow *self)
int x2, y2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
(void) y2;
@ -826,8 +872,9 @@ static void kill_infobox(ToxWindow *self)
{
ChatContext *ctx = self->chatwin;
if (!ctx->infobox.win)
if (!ctx->infobox.win) {
return;
}
delwin(ctx->infobox.win);
memset(&ctx->infobox, 0, sizeof(struct infobox));
@ -838,20 +885,23 @@ static void draw_infobox(ToxWindow *self)
{
struct infobox *infobox = &self->chatwin->infobox;
if (infobox->win == NULL)
if (infobox->win == NULL) {
return;
}
int x2, y2;
getmaxyx(self->window, y2, x2);
if (x2 < INFOBOX_WIDTH || y2 < INFOBOX_HEIGHT)
if (x2 < INFOBOX_WIDTH || y2 < INFOBOX_HEIGHT) {
return;
}
time_t curtime = get_unix_time();
/* update elapsed time string once per second */
if (curtime > infobox->lastupdate)
if (curtime > infobox->lastupdate) {
get_elapsed_time_str(infobox->timestr, sizeof(infobox->timestr), curtime - infobox->starttime);
}
infobox->lastupdate = curtime;
@ -891,8 +941,9 @@ static void draw_infobox(ToxWindow *self)
static void send_action(ToxWindow *self, ChatContext *ctx, Tox *m, char *action)
{
if (action == NULL)
if (action == NULL) {
return;
}
char selfname[TOX_MAX_NAME_LENGTH];
tox_self_get_name(m, (uint8_t *) selfname);
@ -916,11 +967,13 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
getyx(self->window, y, x);
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
if (ctx->pastemode && key == '\r')
if (ctx->pastemode && key == '\r') {
key = '\n';
}
if (self->help->active) {
help_onKey(self, key);
@ -930,14 +983,16 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
if (ltr || key == '\n') { /* char is printable */
input_new_char(self, key, x, y, x2, y2);
if (ctx->line[0] != '/' && !ctx->self_is_typing && statusbar->connection != TOX_CONNECTION_NONE)
if (ctx->line[0] != '/' && !ctx->self_is_typing && statusbar->connection != TOX_CONNECTION_NONE) {
set_self_typingstatus(self, m, 1);
}
return;
}
if (line_info_onKey(self, key))
if (line_info_onKey(self, key)) {
return;
}
input_handle(self, key, x, y, x2, y2);
@ -988,8 +1043,9 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
char line[MAX_STR_SIZE] = {0};
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1)
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) {
memset(&line, 0, sizeof(line));
}
if (line[0] == '/') {
if (strcmp(line, "/close") == 0) {
@ -1020,17 +1076,19 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
reset_buf(ctx);
}
if (ctx->len <= 0 && ctx->self_is_typing)
if (ctx->len <= 0 && ctx->self_is_typing) {
set_self_typingstatus(self, m, 0);
}
}
static void chat_onDraw(ToxWindow *self, Tox *m)
{
int x2, y2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
ChatContext *ctx = self->chatwin;
@ -1042,8 +1100,9 @@ static void chat_onDraw(ToxWindow *self, Tox *m)
curs_set(1);
if (ctx->len > 0)
if (ctx->len > 0) {
mvwprintw(ctx->linewin, 1, 0, "%ls", &ctx->line[ctx->start]);
}
/* Draw status bar */
StatusBar *statusbar = self->stb;
@ -1073,15 +1132,17 @@ static void chat_onDraw(ToxWindow *self, Tox *m)
wprintw(statusbar->topline, " %s", ONLINE_CHAR);
wattroff(statusbar->topline, COLOR_PAIR(colour) | A_BOLD);
if (Friends.list[self->num].is_typing)
if (Friends.list[self->num].is_typing) {
wattron(statusbar->topline, COLOR_PAIR(YELLOW));
}
wattron(statusbar->topline, A_BOLD);
wprintw(statusbar->topline, " %s ", statusbar->nick);
wattroff(statusbar->topline, A_BOLD);
if (Friends.list[self->num].is_typing)
if (Friends.list[self->num].is_typing) {
wattroff(statusbar->topline, COLOR_PAIR(YELLOW));
}
} else {
wprintw(statusbar->topline, " %s", OFFLINE_CHAR);
wattron(statusbar->topline, A_BOLD);
@ -1114,8 +1175,9 @@ static void chat_onDraw(ToxWindow *self, Tox *m)
statusbar->statusmsg_len = maxlen;
}
if (statusbar->statusmsg[0])
if (statusbar->statusmsg[0]) {
wprintw(statusbar->topline, ": %s ", statusbar->statusmsg);
}
wclrtoeol(statusbar->topline);
wmove(statusbar->topline, 0, x2 - (KEY_IDENT_DIGITS * 2) - 3);
@ -1123,8 +1185,9 @@ static void chat_onDraw(ToxWindow *self, Tox *m)
size_t i;
for (i = 0; i < KEY_IDENT_DIGITS; ++i)
for (i = 0; i < KEY_IDENT_DIGITS; ++i) {
wprintw(statusbar->topline, "%02X", Friends.list[self->num].pub_key[i] & 0xff);
}
wprintw(statusbar->topline, "}\n");
@ -1146,8 +1209,9 @@ static void chat_onDraw(ToxWindow *self, Tox *m)
#endif
if (self->help->active)
if (self->help->active) {
help_onDraw(self);
}
pthread_mutex_lock(&Winthread.lock);
refresh_file_transfer_progress(self, m, self->num);
@ -1160,8 +1224,9 @@ static void chat_onInit(ToxWindow *self, Tox *m)
int x2, y2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
exit_toxic_err("failed in chat_onInit", FATALERR_CURSES);
}
self->x = x2;
@ -1196,8 +1261,9 @@ static void chat_onInit(ToxWindow *self, Tox *m)
ctx->log = calloc(1, sizeof(struct chatlog));
ctx->cqueue = calloc(1, sizeof(struct chat_queue));
if (ctx->log == NULL || ctx->hst == NULL || ctx->cqueue == NULL)
if (ctx->log == NULL || ctx->hst == NULL || ctx->cqueue == NULL) {
exit_toxic_err("failed in chat_onInit", FATALERR_MEMORY);
}
line_info_init(ctx->hst);
@ -1207,10 +1273,11 @@ static void chat_onInit(ToxWindow *self, Tox *m)
int log_ret = log_enable(nick, myid, Friends.list[self->num].pub_key, ctx->log, LOG_CHAT);
load_chat_history(self, ctx->log);
if (!Friends.list[self->num].logging_on)
if (!Friends.list[self->num].logging_on) {
log_disable(ctx->log);
else if (log_ret == -1)
} else if (log_ret == -1) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Warning: Log failed to initialize.");
}
execute(ctx->history, self, m, "/log", GLOBAL_COMMAND_MODE);
@ -1268,8 +1335,9 @@ ToxWindow new_chat(Tox *m, uint32_t friendnum)
StatusBar *stb = calloc(1, sizeof(StatusBar));
Help *help = calloc(1, sizeof(Help));
if (stb == NULL || chatwin == NULL || help == NULL)
if (stb == NULL || chatwin == NULL || help == NULL) {
exit_toxic_err("failed in new_chat", FATALERR_MEMORY);
}
ret.chatwin = chatwin;
ret.stb = stb;

View File

@ -175,8 +175,9 @@ void cmd_savefile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv
TOX_ERR_FILE_CONTROL err;
tox_file_control(m, self->num, ft->filenum, TOX_FILE_CONTROL_RESUME, &err);
if (err != TOX_ERR_FILE_CONTROL_OK)
if (err != TOX_ERR_FILE_CONTROL_OK) {
goto on_recv_error;
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Saving file [%d] as: '%s'", idx, ft->file_path);
@ -262,8 +263,9 @@ void cmd_sendfile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv
uint32_t filenum = tox_file_send(m, self->num, TOX_FILE_KIND_DATA, (uint64_t) filesize, NULL,
(uint8_t *) file_name, namelen, &err);
if (err != TOX_ERR_FILE_SEND_OK)
if (err != TOX_ERR_FILE_SEND_OK) {
goto on_send_error;
}
struct FileTransfer *ft = new_file_transfer(self, self->num, filenum, FILE_TRANSFER_SEND, TOX_FILE_KIND_DATA);

View File

@ -48,8 +48,9 @@ void get_home_dir(char *home, int size)
} else {
hmstr = getenv("HOME");
if (hmstr == NULL)
if (hmstr == NULL) {
return;
}
snprintf(buf, sizeof(buf), "%s", hmstr);
hmstr = buf;
@ -77,8 +78,9 @@ char *get_user_config_dir(void)
len = strlen(home) + strlen("/Library/Application Support") + 1;
user_config_dir = malloc(len);
if (user_config_dir == NULL)
if (user_config_dir == NULL) {
return NULL;
}
snprintf(user_config_dir, len, "%s/Library/Application Support", home);
# else /* __APPLE__ */
@ -89,8 +91,9 @@ char *get_user_config_dir(void)
len = strlen(home) + strlen("/.config") + 1;
user_config_dir = malloc(len);
if (user_config_dir == NULL)
if (user_config_dir == NULL) {
return NULL;
}
snprintf(user_config_dir, len, "%s/.config", home);
} else {
@ -112,14 +115,16 @@ int create_user_config_dirs(char *path)
struct stat buf;
int mkdir_err = mkdir(path, 0700);
if (mkdir_err && (errno != EEXIST || stat(path, &buf) || !S_ISDIR(buf.st_mode)))
if (mkdir_err && (errno != EEXIST || stat(path, &buf) || !S_ISDIR(buf.st_mode))) {
return -1;
}
char *fullpath = malloc(strlen(path) + strlen(CONFIGDIR) + 1);
char *logpath = malloc(strlen(path) + strlen(LOGDIR) + 1);
if (fullpath == NULL || logpath == NULL)
if (fullpath == NULL || logpath == NULL) {
exit_toxic_err("failed in load_data_structures", FATALERR_MEMORY);
}
strcpy(fullpath, path);
strcat(fullpath, CONFIGDIR);

View File

@ -36,8 +36,9 @@
*/
int set_curl_proxy(CURL *c_handle, const char *proxy_address, uint16_t port, uint8_t proxy_type)
{
if (proxy_type == TOX_PROXY_TYPE_NONE)
if (proxy_type == TOX_PROXY_TYPE_NONE) {
return 0;
}
if (proxy_address == NULL || port == 0) {
return -1;

View File

@ -113,8 +113,9 @@ static int parse_command(WINDOW *w, ToxWindow *self, const char *input, char (*a
{
char *cmd = strdup(input);
if (cmd == NULL)
if (cmd == NULL) {
exit_toxic_err("failed in parse_command", FATALERR_MEMORY);
}
int num_args = 0;
int i = 0; /* index of last char in an argument */
@ -140,8 +141,9 @@ static int parse_command(WINDOW *w, ToxWindow *self, const char *input, char (*a
memcpy(args[num_args], cmd, i + qt_ofst);
args[num_args++][i + qt_ofst] = '\0';
if (cmd[i] == '\0') /* no more args */
if (cmd[i] == '\0') { /* no more args */
break;
}
char tmp[MAX_STR_SIZE];
snprintf(tmp, sizeof(tmp), "%s", &cmd[i + 1]);
@ -170,14 +172,16 @@ static int do_command(WINDOW *w, ToxWindow *self, Tox *m, int num_args, struct c
void execute(WINDOW *w, ToxWindow *self, Tox *m, const char *input, int mode)
{
if (string_is_empty(input))
if (string_is_empty(input)) {
return;
}
char args[MAX_NUM_ARGS][MAX_STR_SIZE];
int num_args = parse_command(w, self, input, args);
if (num_args == -1)
if (num_args == -1) {
return;
}
/* Try to match input command to command functions. If non-global command mode is specified,
try specified mode's commands first, then upon failure try global commands.
@ -185,25 +189,29 @@ void execute(WINDOW *w, ToxWindow *self, Tox *m, const char *input, int mode)
Note: Global commands must come last in case of duplicate command names */
switch (mode) {
case CHAT_COMMAND_MODE:
if (do_command(w, self, m, num_args, chat_commands, args) == 0)
if (do_command(w, self, m, num_args, chat_commands, args) == 0) {
return;
}
break;
case GROUPCHAT_COMMAND_MODE:
if (do_command(w, self, m, num_args, group_commands, args) == 0)
if (do_command(w, self, m, num_args, group_commands, args) == 0) {
return;
}
break;
}
if (do_command(w, self, m, num_args, global_commands, args) == 0)
if (do_command(w, self, m, num_args, global_commands, args) == 0) {
return;
}
#ifdef PYTHON
if (do_plugin_command(num_args, args) == 0)
if (do_plugin_command(num_args, args) == 0) {
return;
}
#endif

View File

@ -45,8 +45,9 @@ void init_progress_bar(char *progline)
strcpy(progline, "0% [");
int i;
for (i = 0; i < NUM_PROG_MARKS; ++i)
for (i = 0; i < NUM_PROG_MARKS; ++i) {
strcat(progline, "-");
}
strcat(progline, "] 0.0 B/s");
}
@ -54,8 +55,9 @@ void init_progress_bar(char *progline)
/* prints a progress bar for file transfers. */
void print_progress_bar(ToxWindow *self, double bps, double pct_done, uint32_t line_id)
{
if (bps < 0 || pct_done < 0 || pct_done > 100)
if (bps < 0 || pct_done < 0 || pct_done > 100) {
return;
}
char pct_str[24];
snprintf(pct_str, sizeof(pct_str), "%.1f%%", pct_done);
@ -67,14 +69,17 @@ void print_progress_bar(ToxWindow *self, double bps, double pct_done, uint32_t l
int n = pct_done / (100 / NUM_PROG_MARKS);
int i, j;
for (i = 0; i < n; ++i)
for (i = 0; i < n; ++i) {
strcat(prog_line, "=");
}
if (pct_done < 100)
if (pct_done < 100) {
strcpy(prog_line + n, ">");
}
for (j = i; j < NUM_PROG_MARKS - 1; ++j)
for (j = i; j < NUM_PROG_MARKS - 1; ++j) {
strcat(prog_line, "-");
}
char full_line[strlen(pct_str) + NUM_PROG_MARKS + strlen(bps_str) + 7];
snprintf(full_line, sizeof(full_line), "%s [%s] %s/s", pct_str, prog_line, bps_str);
@ -84,12 +89,14 @@ void print_progress_bar(ToxWindow *self, double bps, double pct_done, uint32_t l
static void refresh_progress_helper(ToxWindow *self, Tox *m, struct FileTransfer *ft)
{
if (ft->state == FILE_TRANSFER_INACTIVE)
if (ft->state == FILE_TRANSFER_INACTIVE) {
return;
}
/* Timeout must be set to 1 second to show correct bytes per second */
if (!timed_out(ft->last_line_progress, 1))
if (!timed_out(ft->last_line_progress, 1)) {
return;
}
double remain = ft->file_size - ft->position;
double pct_done = remain > 0 ? (1 - (remain / ft->file_size)) * 100 : 100;
@ -120,14 +127,16 @@ struct FileTransfer *get_file_transfer_struct(uint32_t friendnum, uint32_t filen
for (i = 0; i < MAX_FILES; ++i) {
struct FileTransfer *ft_send = &Friends.list[friendnum].file_sender[i];
if (ft_send->state != FILE_TRANSFER_INACTIVE && ft_send->filenum == filenum)
if (ft_send->state != FILE_TRANSFER_INACTIVE && ft_send->filenum == filenum) {
return ft_send;
}
struct FileTransfer *ft_recv = &Friends.list[friendnum].file_receiver[i];
if (ft_recv->state != FILE_TRANSFER_INACTIVE && ft_recv->filenum == filenum)
if (ft_recv->state != FILE_TRANSFER_INACTIVE && ft_recv->filenum == filenum) {
return ft_recv;
}
}
return NULL;
}
@ -138,8 +147,9 @@ struct FileTransfer *get_file_transfer_struct(uint32_t friendnum, uint32_t filen
struct FileTransfer *get_file_transfer_struct_index(uint32_t friendnum, uint32_t index,
FILE_TRANSFER_DIRECTION direction)
{
if (direction != FILE_TRANSFER_RECV && direction != FILE_TRANSFER_SEND)
if (direction != FILE_TRANSFER_RECV && direction != FILE_TRANSFER_SEND) {
return NULL;
}
size_t i;
@ -148,9 +158,10 @@ struct FileTransfer *get_file_transfer_struct_index(uint32_t friendnum, uint32_t
&Friends.list[friendnum].file_sender[i] :
&Friends.list[friendnum].file_receiver[i];
if (ft->state != FILE_TRANSFER_INACTIVE && ft->index == index)
if (ft->state != FILE_TRANSFER_INACTIVE && ft->index == index) {
return ft;
}
}
return NULL;
}
@ -215,11 +226,13 @@ static struct FileTransfer *new_file_receiver(ToxWindow *window, uint32_t friend
struct FileTransfer *new_file_transfer(ToxWindow *window, uint32_t friendnum, uint32_t filenum,
FILE_TRANSFER_DIRECTION direction, uint8_t type)
{
if (direction == FILE_TRANSFER_RECV)
if (direction == FILE_TRANSFER_RECV) {
return new_file_receiver(window, friendnum, filenum, type);
}
if (direction == FILE_TRANSFER_SEND)
if (direction == FILE_TRANSFER_SEND) {
return new_file_sender(window, friendnum, filenum, type);
}
return NULL;
}
@ -233,23 +246,28 @@ struct FileTransfer *new_file_transfer(ToxWindow *window, uint32_t friendnum, ui
void close_file_transfer(ToxWindow *self, Tox *m, struct FileTransfer *ft, int CTRL, const char *message,
Notification sound_type)
{
if (!ft)
if (!ft) {
return;
}
if (ft->state == FILE_TRANSFER_INACTIVE)
if (ft->state == FILE_TRANSFER_INACTIVE) {
return;
}
if (ft->file)
if (ft->file) {
fclose(ft->file);
}
if (CTRL >= 0)
if (CTRL >= 0) {
tox_file_control(m, ft->friendnum, ft->filenum, (TOX_FILE_CONTROL) CTRL, NULL);
}
if (message && self) {
if (self->active_box != -1 && sound_type != silent)
if (self->active_box != -1 && sound_type != silent) {
box_notify2(self, sound_type, NT_NOFOCUS | NT_WNDALERT_2, self->active_box, "%s", message);
else
} else {
box_notify(self, sound_type, NT_NOFOCUS | NT_WNDALERT_2, &self->active_box, self->name, "%s", message);
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "%s", message);
}
@ -272,6 +290,7 @@ void kill_all_file_transfers(Tox *m)
{
size_t i;
for (i = 0; i < Friends.max_idx; ++i)
for (i = 0; i < Friends.max_idx; ++i) {
kill_all_file_transfers_friend(m, Friends.list[i].num);
}
}

View File

@ -84,8 +84,9 @@ static void realloc_friends(int n)
ToxicFriend *f = realloc(Friends.list, n * sizeof(ToxicFriend));
uint32_t *f_idx = realloc(Friends.index, n * sizeof(uint32_t));
if (f == NULL || f_idx == NULL)
if (f == NULL || f_idx == NULL) {
exit_toxic_err("failed in realloc_friends", FATALERR_MEMORY);
}
Friends.list = f;
Friends.index = f_idx;
@ -104,8 +105,9 @@ static void realloc_blocklist(int n)
BlockedFriend *b = realloc(Blocked.list, n * sizeof(BlockedFriend));
uint32_t *b_idx = realloc(Blocked.index, n * sizeof(uint32_t));
if (b == NULL || b_idx == NULL)
if (b == NULL || b_idx == NULL) {
exit_toxic_err("failed in realloc_blocklist", FATALERR_MEMORY);
}
Blocked.list = b;
Blocked.index = b_idx;
@ -116,9 +118,10 @@ void kill_friendlist(void)
int i;
for (i = 0; i < Friends.max_idx; ++i) {
if (Friends.list[i].active && Friends.list[i].group_invite.key != NULL)
if (Friends.list[i].active && Friends.list[i].group_invite.key != NULL) {
free(Friends.list[i].group_invite.key);
}
}
realloc_blocklist(0);
realloc_friends(0);
@ -215,13 +218,15 @@ static void sort_blocklist_index(void);
int load_blocklist(char *path)
{
if (path == NULL)
if (path == NULL) {
return -1;
}
FILE *fp = fopen(path, "rb");
if (fp == NULL)
if (fp == NULL) {
return -1;
}
off_t len = file_size(path);
@ -298,9 +303,10 @@ void sort_friendlist_index(void)
uint32_t n = 0;
for (i = 0; i < Friends.max_idx; ++i) {
if (Friends.list[i].active)
if (Friends.list[i].active) {
Friends.index[n++] = Friends.list[i].num;
}
}
qsort(Friends.index, Friends.num_friends, sizeof(uint32_t), index_name_cmp);
}
@ -316,9 +322,10 @@ static void sort_blocklist_index(void)
uint32_t n = 0;
for (i = 0; i < Blocked.max_idx; ++i) {
if (Blocked.list[i].active)
if (Blocked.list[i].active) {
Blocked.index[n++] = Blocked.list[i].num;
}
}
qsort(Blocked.index, Blocked.num_blocked, sizeof(uint32_t), index_name_cmp_block);
}
@ -337,11 +344,13 @@ static void update_friend_last_online(uint32_t num, time_t timestamp)
static void friendlist_onMessage(ToxWindow *self, Tox *m, uint32_t num, TOX_MESSAGE_TYPE type, const char *str,
size_t length)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
if (Friends.list[num].chatwin != -1)
if (Friends.list[num].chatwin != -1) {
return;
}
if (get_num_active_windows() < MAX_WINDOWS_NUM) {
Friends.list[num].chatwin = add_window(m, new_chat(m, Friends.list[num].num));
@ -361,17 +370,19 @@ static void friendlist_onMessage(ToxWindow *self, Tox *m, uint32_t num, TOX_MESS
static void friendlist_onConnectionChange(ToxWindow *self, Tox *m, uint32_t num, TOX_CONNECTION connection_status)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
if (connection_status == TOX_CONNECTION_NONE) {
--Friends.num_online;
} else if (Friends.list[num].connection_status == TOX_CONNECTION_NONE) {
++Friends.num_online;
if (avatar_send(m, num) == -1)
if (avatar_send(m, num) == -1) {
fprintf(stderr, "avatar_send failed for friend %d\n", num);
}
}
Friends.list[num].connection_status = connection_status;
update_friend_last_online(num, get_unix_time());
@ -381,8 +392,9 @@ static void friendlist_onConnectionChange(ToxWindow *self, Tox *m, uint32_t num,
static void friendlist_onNickChange(ToxWindow *self, Tox *m, uint32_t num, const char *nick, size_t length)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
/* save old name for log renaming */
char oldname[TOXIC_MAX_NAME_LENGTH + 1];
@ -398,24 +410,27 @@ static void friendlist_onNickChange(ToxWindow *self, Tox *m, uint32_t num, const
strcpy(newnamecpy, Friends.list[num].name);
tox_self_get_address(m, (uint8_t *) myid);
if (strcmp(oldname, newnamecpy) != 0)
if (strcmp(oldname, newnamecpy) != 0) {
rename_logfile(oldname, newnamecpy, myid, Friends.list[num].pub_key, Friends.list[num].chatwin);
}
sort_friendlist_index();
}
static void friendlist_onStatusChange(ToxWindow *self, Tox *m, uint32_t num, TOX_USER_STATUS status)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
Friends.list[num].status = status;
}
static void friendlist_onStatusMessageChange(ToxWindow *self, uint32_t num, const char *note, size_t length)
{
if (length > TOX_MAX_STATUS_MESSAGE_LENGTH || num >= Friends.max_idx)
if (length > TOX_MAX_STATUS_MESSAGE_LENGTH || num >= Friends.max_idx) {
return;
}
snprintf(Friends.list[num].statusmsg, sizeof(Friends.list[num].statusmsg), "%s", note);
Friends.list[num].statusmsg_len = strlen(Friends.list[num].statusmsg);
@ -429,8 +444,9 @@ void friendlist_onFriendAdded(ToxWindow *self, Tox *m, uint32_t num, bool sort)
uint32_t i;
for (i = 0; i <= Friends.max_idx; ++i) {
if (Friends.list[i].active)
if (Friends.list[i].active) {
continue;
}
++Friends.num_friends;
@ -444,14 +460,16 @@ void friendlist_onFriendAdded(ToxWindow *self, Tox *m, uint32_t num, bool sort)
TOX_ERR_FRIEND_GET_PUBLIC_KEY pkerr;
tox_friend_get_public_key(m, num, (uint8_t *) Friends.list[i].pub_key, &pkerr);
if (pkerr != TOX_ERR_FRIEND_GET_PUBLIC_KEY_OK)
if (pkerr != TOX_ERR_FRIEND_GET_PUBLIC_KEY_OK) {
fprintf(stderr, "tox_friend_get_public_key failed (error %d)\n", pkerr);
}
TOX_ERR_FRIEND_GET_LAST_ONLINE loerr;
time_t t = tox_friend_get_last_online(m, num, &loerr);
if (loerr != TOX_ERR_FRIEND_GET_LAST_ONLINE_OK)
if (loerr != TOX_ERR_FRIEND_GET_LAST_ONLINE_OK) {
t = 0;
}
update_friend_last_online(i, t);
@ -460,11 +478,13 @@ void friendlist_onFriendAdded(ToxWindow *self, Tox *m, uint32_t num, bool sort)
snprintf(Friends.list[i].name, sizeof(Friends.list[i].name), "%s", tempname);
Friends.list[i].namelength = strlen(Friends.list[i].name);
if (i == Friends.max_idx)
if (i == Friends.max_idx) {
++Friends.max_idx;
}
if (sort)
if (sort) {
sort_friendlist_index();
}
#ifdef AUDIO
init_friend_AV(i);
@ -483,8 +503,9 @@ static void friendlist_add_blocked(Tox *m, uint32_t fnum, uint32_t bnum)
int i;
for (i = 0; i <= Friends.max_idx; ++i) {
if (Friends.list[i].active)
if (Friends.list[i].active) {
continue;
}
++Friends.num_friends;
@ -498,8 +519,9 @@ static void friendlist_add_blocked(Tox *m, uint32_t fnum, uint32_t bnum)
memcpy(Friends.list[i].name, Blocked.list[bnum].name, Friends.list[i].namelength + 1);
memcpy(Friends.list[i].pub_key, Blocked.list[bnum].pub_key, TOX_PUBLIC_KEY_SIZE);
if (i == Friends.max_idx)
if (i == Friends.max_idx) {
++Friends.max_idx;
}
sort_blocklist_index();
sort_friendlist_index();
@ -511,11 +533,13 @@ static void friendlist_add_blocked(Tox *m, uint32_t fnum, uint32_t bnum)
static void friendlist_onFileRecv(ToxWindow *self, Tox *m, uint32_t num, uint32_t filenum,
uint64_t file_size, const char *filename, size_t name_length)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
if (Friends.list[num].chatwin != -1)
if (Friends.list[num].chatwin != -1) {
return;
}
if (get_num_active_windows() < MAX_WINDOWS_NUM) {
Friends.list[num].chatwin = add_window(m, new_chat(m, Friends.list[num].num));
@ -536,11 +560,13 @@ static void friendlist_onFileRecv(ToxWindow *self, Tox *m, uint32_t num, uint32_
static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int32_t num, uint8_t type, const char *group_pub_key,
uint16_t length)
{
if (num >= Friends.max_idx)
if (num >= Friends.max_idx) {
return;
}
if (Friends.list[num].chatwin != -1)
if (Friends.list[num].chatwin != -1) {
return;
}
if (get_num_active_windows() < MAX_WINDOWS_NUM) {
Friends.list[num].chatwin = add_window(m, new_chat(m, Friends.list[num].num));
@ -559,12 +585,14 @@ static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int32_t num, uint8
/* move friendlist/blocklist cursor up and down */
static void select_friend(ToxWindow *self, wint_t key, int *selected, int num)
{
if (num <= 0)
if (num <= 0) {
return;
}
if (key == KEY_UP) {
if (--(*selected) < 0)
if (--(*selected) < 0) {
*selected = num - 1;
}
} else if (key == KEY_DOWN) {
*selected = (*selected + 1) % num;
}
@ -581,8 +609,9 @@ static void delete_friend(Tox *m, uint32_t f_num)
--Friends.num_friends;
if (Friends.list[f_num].connection_status != TOX_CONNECTION_NONE)
if (Friends.list[f_num].connection_status != TOX_CONNECTION_NONE) {
--Friends.num_online;
}
/* close friend's chatwindow if it's currently open */
if (Friends.list[f_num].chatwin >= 0) {
@ -594,17 +623,19 @@ static void delete_friend(Tox *m, uint32_t f_num)
}
}
if (Friends.list[f_num].group_invite.key != NULL)
if (Friends.list[f_num].group_invite.key != NULL) {
free(Friends.list[f_num].group_invite.key);
}
memset(&Friends.list[f_num], 0, sizeof(ToxicFriend));
int i;
for (i = Friends.max_idx; i > 0; --i) {
if (Friends.list[i - 1].active)
if (Friends.list[i - 1].active) {
break;
}
}
Friends.max_idx = i;
realloc_friends(i);
@ -614,8 +645,9 @@ static void delete_friend(Tox *m, uint32_t f_num)
#endif
/* make sure num_selected stays within Friends.num_friends range */
if (Friends.num_friends && Friends.num_selected == Friends.num_friends)
if (Friends.num_friends && Friends.num_selected == Friends.num_friends) {
--Friends.num_selected;
}
store_data(m, DATA_FILE);
}
@ -651,8 +683,9 @@ static void del_friend_deactivate(ToxWindow *self, Tox *m, wint_t key)
static void draw_del_popup(void)
{
if (!PendingDelete.active)
if (!PendingDelete.active) {
return;
}
wattron(PendingDelete.popup, A_BOLD);
box(PendingDelete.popup, ACS_VLINE, ACS_HLINE);
@ -664,10 +697,11 @@ static void draw_del_popup(void)
pthread_mutex_lock(&Winthread.lock);
if (blocklist_view == 0)
if (blocklist_view == 0) {
wprintw(PendingDelete.popup, "%s", Friends.list[PendingDelete.num].name);
else
} else {
wprintw(PendingDelete.popup, "%s", Blocked.list[PendingDelete.num].name);
}
pthread_mutex_unlock(&Winthread.lock);
@ -685,24 +719,27 @@ static void delete_blocked_friend(uint32_t bnum)
int i;
for (i = Blocked.max_idx; i > 0; --i) {
if (Blocked.list[i - 1].active)
if (Blocked.list[i - 1].active) {
break;
}
}
--Blocked.num_blocked;
Blocked.max_idx = i;
realloc_blocklist(i);
save_blocklist(BLOCK_FILE);
if (Blocked.num_blocked && Blocked.num_selected == Blocked.num_blocked)
if (Blocked.num_blocked && Blocked.num_selected == Blocked.num_blocked) {
--Blocked.num_selected;
}
}
/* deletes contact from friendlist and puts in blocklist */
void block_friend(Tox *m, uint32_t fnum)
{
if (Friends.num_friends <= 0)
if (Friends.num_friends <= 0) {
return;
}
realloc_blocklist(Blocked.max_idx + 1);
memset(&Blocked.list[Blocked.max_idx], 0, sizeof(BlockedFriend));
@ -710,8 +747,9 @@ void block_friend(Tox *m, uint32_t fnum)
int i;
for (i = 0; i <= Blocked.max_idx; ++i) {
if (Blocked.list[i].active)
if (Blocked.list[i].active) {
continue;
}
Blocked.list[i].active = true;
Blocked.list[i].num = i;
@ -722,8 +760,9 @@ void block_friend(Tox *m, uint32_t fnum)
++Blocked.num_blocked;
if (i == Blocked.max_idx)
if (i == Blocked.max_idx) {
++Blocked.max_idx;
}
delete_friend(m, fnum);
save_blocklist(BLOCK_FILE);
@ -737,8 +776,9 @@ void block_friend(Tox *m, uint32_t fnum)
/* removes friend from blocklist, puts back in friendlist */
static void unblock_friend(Tox *m, uint32_t bnum)
{
if (Blocked.num_blocked <= 0)
if (Blocked.num_blocked <= 0) {
return;
}
TOX_ERR_FRIEND_ADD err;
uint32_t friendnum = tox_friend_add_norequest(m, (uint8_t *) Blocked.list[bnum].pub_key, &err);
@ -767,34 +807,40 @@ static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
return;
}
if (!blocklist_view && !Friends.num_friends && (key != KEY_RIGHT && key != KEY_LEFT))
if (!blocklist_view && !Friends.num_friends && (key != KEY_RIGHT && key != KEY_LEFT)) {
return;
}
if (blocklist_view && !Blocked.num_blocked && (key != KEY_RIGHT && key != KEY_LEFT))
if (blocklist_view && !Blocked.num_blocked && (key != KEY_RIGHT && key != KEY_LEFT)) {
return;
}
int f = 0;
if (blocklist_view == 1 && Blocked.num_blocked)
if (blocklist_view == 1 && Blocked.num_blocked) {
f = Blocked.index[Blocked.num_selected];
else if (Friends.num_friends)
} else if (Friends.num_friends) {
f = Friends.index[Friends.num_selected];
}
/* lock screen and force decision on deletion popup */
if (PendingDelete.active) {
if (key == 'y' || key == 'n')
if (key == 'y' || key == 'n') {
del_friend_deactivate(self, m, key);
}
return;
}
if (key == ltr)
if (key == ltr) {
return;
}
switch (key) {
case '\r':
if (blocklist_view)
if (blocklist_view) {
break;
}
/* Jump to chat window if already open */
if (Friends.list[f].chatwin != -1) {
@ -815,10 +861,11 @@ static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
break;
case 'b':
if (!blocklist_view)
if (!blocklist_view) {
block_friend(m, f);
else
} else {
unblock_friend(m, f);
}
break;
@ -828,10 +875,11 @@ static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
break;
default:
if (blocklist_view == 0)
if (blocklist_view == 0) {
select_friend(self, key, &Friends.num_selected, Friends.num_friends);
else
} else {
select_friend(self, key, &Blocked.num_selected, Blocked.num_blocked);
}
break;
}
@ -846,8 +894,9 @@ static void blocklist_onDraw(ToxWindow *self, Tox *m, int y2, int x2)
wattroff(self->window, A_BOLD);
wprintw(self->window, "%d\n\n", Blocked.num_blocked);
if ((y2 - FLIST_OFST) <= 0)
if ((y2 - FLIST_OFST) <= 0) {
return;
}
uint32_t selected_num = 0;
@ -876,16 +925,18 @@ static void blocklist_onDraw(ToxWindow *self, Tox *m, int y2, int x2)
wprintw(self->window, "x");
wattroff(self->window, COLOR_PAIR(RED));
if (f_selected)
if (f_selected) {
wattron(self->window, COLOR_PAIR(BLUE));
}
wattron(self->window, A_BOLD);
wprintw(self->window, " %s\n", Blocked.list[f].name);
wattroff(self->window, A_BOLD);
if (f_selected)
if (f_selected) {
wattroff(self->window, COLOR_PAIR(BLUE));
}
}
wprintw(self->window, "\n");
self->x = x2;
@ -899,16 +950,18 @@ static void blocklist_onDraw(ToxWindow *self, Tox *m, int y2, int x2)
int i;
for (i = 0; i < TOX_PUBLIC_KEY_SIZE; ++i)
for (i = 0; i < TOX_PUBLIC_KEY_SIZE; ++i) {
wprintw(self->window, "%02X", Blocked.list[selected_num].pub_key[i] & 0xff);
}
}
wnoutrefresh(self->window);
draw_del_popup();
if (self->help->active)
if (self->help->active) {
help_onDraw(self);
}
}
static void friendlist_onDraw(ToxWindow *self, Tox *m)
{
@ -941,8 +994,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
wprintw(self->window, "%d/%d \n\n", Friends.num_online, Friends.num_friends);
if ((y2 - FLIST_OFST) <= 0)
if ((y2 - FLIST_OFST) <= 0) {
return;
}
uint32_t selected_num = 0;
@ -1006,8 +1060,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
wprintw(self->window, "%s ", ONLINE_CHAR);
wattroff(self->window, COLOR_PAIR(colour) | A_BOLD);
if (f_selected)
if (f_selected) {
wattron(self->window, COLOR_PAIR(BLUE));
}
wattron(self->window, A_BOLD);
pthread_mutex_lock(&Winthread.lock);
@ -1015,8 +1070,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
pthread_mutex_unlock(&Winthread.lock);
wattroff(self->window, A_BOLD);
if (f_selected)
if (f_selected) {
wattroff(self->window, COLOR_PAIR(BLUE));
}
/* Reset Friends.list[f].statusmsg on window resize */
if (fix_statuses) {
@ -1049,8 +1105,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
Friends.list[f].statusmsg_len = maxlen;
}
if (Friends.list[f].statusmsg_len > 0)
if (Friends.list[f].statusmsg_len > 0) {
wprintw(self->window, " %s", Friends.list[f].statusmsg);
}
pthread_mutex_unlock(&Winthread.lock);
@ -1058,8 +1115,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
} else {
wprintw(self->window, "%s ", OFFLINE_CHAR);
if (f_selected)
if (f_selected) {
wattron(self->window, COLOR_PAIR(BLUE));
}
wattron(self->window, A_BOLD);
pthread_mutex_lock(&Winthread.lock);
@ -1067,8 +1125,9 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
pthread_mutex_unlock(&Winthread.lock);
wattroff(self->window, A_BOLD);
if (f_selected)
if (f_selected) {
wattroff(self->window, COLOR_PAIR(BLUE));
}
pthread_mutex_lock(&Winthread.lock);
time_t last_seen = Friends.list[f].last_online.last_on;
@ -1116,16 +1175,18 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m)
int i;
for (i = 0; i < TOX_PUBLIC_KEY_SIZE; ++i)
for (i = 0; i < TOX_PUBLIC_KEY_SIZE; ++i) {
wprintw(self->window, "%02X", Friends.list[selected_num].pub_key[i] & 0xff);
}
}
wnoutrefresh(self->window);
draw_del_popup();
if (self->help->active)
if (self->help->active) {
help_onDraw(self);
}
}
void disable_chatwin(uint32_t f_num)
{
@ -1137,8 +1198,9 @@ static void friendlist_onAV(ToxWindow *self, ToxAV *av, uint32_t friend_number,
{
assert(0);
if ( friend_number >= Friends.max_idx)
if (friend_number >= Friends.max_idx) {
return;
}
assert(0);
Tox *m = toxav_get_tox(av);
@ -1214,8 +1276,9 @@ ToxWindow new_friendlist(void)
Help *help = calloc(1, sizeof(Help));
if (help == NULL)
if (help == NULL) {
exit_toxic_err("failed in new_friendlist", FATALERR_MEMORY);
}
ret.help = help;
strcpy(ret.name, "contacts");

View File

@ -79,9 +79,10 @@ void cmd_accept(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[
int i;
for (i = FrndRequests.max_idx; i > 0; --i) {
if (FrndRequests.request[i - 1].active)
if (FrndRequests.request[i - 1].active) {
break;
}
}
FrndRequests.max_idx = i;
--FrndRequests.num_requests;
@ -313,9 +314,10 @@ void cmd_decline(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)
int i;
for (i = FrndRequests.max_idx; i > 0; --i) {
if (FrndRequests.request[i - 1].active)
if (FrndRequests.request[i - 1].active) {
break;
}
}
FrndRequests.max_idx = i;
--FrndRequests.num_requests;
@ -335,11 +337,11 @@ void cmd_groupchat(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*arg
uint8_t type;
if (!strcasecmp(argv[1], "audio"))
if (!strcasecmp(argv[1], "audio")) {
type = TOX_CONFERENCE_TYPE_AV;
else if (!strcasecmp(argv[1], "text"))
} else if (!strcasecmp(argv[1], "text")) {
type = TOX_CONFERENCE_TYPE_TEXT;
else {
} else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Valid group types are: text | audio");
return;
}
@ -373,10 +375,11 @@ void cmd_log(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX
struct chatlog *log = self->chatwin->log;
if (argc == 0) {
if (log->log_on)
if (log->log_on) {
msg = "Logging for this window is ON; type \"/log off\" to disable. (Logs are not encrypted)";
else
} else {
msg = "Logging for this window is OFF; type \"/log on\" to enable.";
}
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, msg);
return;
@ -403,8 +406,9 @@ void cmd_log(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, msg);
return;
} else if (!strcmp(swch, "0") || !strcmp(swch, "off")) {
if (self->is_chat)
if (self->is_chat) {
Friends.list[self->num].logging_on = false;
}
log_disable(log);
@ -592,8 +596,9 @@ void cmd_requests(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv
int count = 0;
for (i = 0; i < FrndRequests.max_idx; ++i) {
if (!FrndRequests.request[i].active)
if (!FrndRequests.request[i].active) {
continue;
}
char id[TOX_PUBLIC_KEY_SIZE * 2 + 1] = {0};
@ -606,10 +611,11 @@ void cmd_requests(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "%d : %s", i, id);
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "%s", FrndRequests.request[i].msg);
if (++count < FrndRequests.num_requests)
if (++count < FrndRequests.num_requests) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "");
}
}
}
void cmd_status(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
{
@ -629,13 +635,13 @@ void cmd_status(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[
const char *status_str = argv[1];
TOX_USER_STATUS status;
if (!strcasecmp(status_str, "online"))
if (!strcasecmp(status_str, "online")) {
status = TOX_USER_STATUS_NONE;
else if (!strcasecmp(status_str, "away"))
} else if (!strcasecmp(status_str, "away")) {
status = TOX_USER_STATUS_AWAY;
else if (!strcasecmp(status_str, "busy"))
} else if (!strcasecmp(status_str, "busy")) {
status = TOX_USER_STATUS_BUSY;
else {
} else {
errmsg = "Invalid status. Valid statuses are: online, busy and away.";
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, errmsg);
goto finish;

View File

@ -132,8 +132,9 @@ int init_groupchat_win(ToxWindow *prompt, Tox *m, uint32_t groupnum, uint8_t typ
set_active_window(groupchats[i].chatwin);
if (i == max_groupchat_index)
if (i == max_groupchat_index) {
++max_groupchat_index;
}
return 0;
}
@ -166,9 +167,10 @@ void free_groupchat(ToxWindow *self, Tox *m, uint32_t groupnum)
int i;
for (i = max_groupchat_index; i > 0; --i) {
if (groupchats[i - 1].active)
if (groupchats[i - 1].active) {
break;
}
}
max_groupchat_index = i;
kill_groupchat_window(self);
@ -193,8 +195,9 @@ void redraw_groupchat_win(ToxWindow *self)
getmaxyx(stdscr, y2, x2);
y2 -= 2;
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
if (ctx->sidebar) {
delwin(ctx->sidebar);
@ -222,8 +225,9 @@ void redraw_groupchat_win(ToxWindow *self)
static void groupchat_onGroupMessage(ToxWindow *self, Tox *m, uint32_t groupnum, uint32_t peernum,
TOX_MESSAGE_TYPE type, const char *msg, size_t len)
{
if (self->num != groupnum)
if (self->num != groupnum) {
return;
}
ChatContext *ctx = self->chatwin;
@ -242,10 +246,11 @@ static void groupchat_onGroupMessage(ToxWindow *self, Tox *m, uint32_t groupnum,
if (strcasestr(msg, selfnick) && strcmp(selfnick, nick)) {
sound_notify(self, generic_message, NT_WNDALERT_0 | user_settings->bell_on_message, NULL);
if (self->active_box != -1)
if (self->active_box != -1) {
box_silent_notify2(self, NT_NOFOCUS, self->active_box, "%s %s", nick, msg);
else
} else {
box_silent_notify(self, NT_NOFOCUS, &self->active_box, self->name, "%s %s", nick, msg);
}
nick_clr = RED;
} else {
@ -265,8 +270,9 @@ static void groupchat_onGroupTitleChange(ToxWindow *self, Tox *m, uint32_t group
{
ChatContext *ctx = self->chatwin;
if (self->num != groupnum)
if (self->num != groupnum) {
return;
}
set_window_title(self, title, length);
@ -274,8 +280,9 @@ static void groupchat_onGroupTitleChange(ToxWindow *self, Tox *m, uint32_t group
get_time_str(timefrmt, sizeof(timefrmt));
/* don't announce title when we join the room */
if (!timed_out(groupchats[self->num].start_time, GROUP_EVENT_WAIT))
if (!timed_out(groupchats[self->num].start_time, GROUP_EVENT_WAIT)) {
return;
}
char nick[TOX_MAX_NAME_LENGTH];
get_group_nick_truncate(m, nick, peernum, groupnum);
@ -383,11 +390,13 @@ static void update_peer_list(Tox *m, uint32_t groupnum, uint32_t num_peers)
static void groupchat_onGroupNameListChange(ToxWindow *self, Tox *m, uint32_t groupnum)
{
if (self->num != groupnum)
if (self->num != groupnum) {
return;
}
if (groupnum > max_groupchat_index)
if (groupnum > max_groupchat_index) {
return;
}
GroupChat *chat = &groupchats[groupnum];
TOX_ERR_CONFERENCE_PEER_QUERY err;
@ -464,27 +473,31 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
getyx(self->window, y, x);
getmaxyx(self->window, y2, x2);
if (x2 <= 0 || y2 <= 0)
if (x2 <= 0 || y2 <= 0) {
return;
}
if (self->help->active) {
help_onKey(self, key);
return;
}
if (ctx->pastemode && key == '\r')
if (ctx->pastemode && key == '\r') {
key = '\n';
}
if (ltr || key == '\n') { /* char is printable */
input_new_char(self, key, x, y, x2, y2);
return;
}
if (line_info_onKey(self, key))
if (line_info_onKey(self, key)) {
return;
}
if (input_handle(self, key, x, y, x2, y2))
if (input_handle(self, key, x, y, x2, y2)) {
return;
}
if (key == '\t') { /* TAB key: auto-completes peer name or command */
if (ctx->len > 0) {
@ -523,11 +536,13 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
} else if (key == user_settings->key_peer_list_down) { /* Scroll peerlist up and down one position */
int L = y2 - CHATBOX_HEIGHT - SDBAR_OFST;
if (groupchats[self->num].side_pos < groupchats[self->num].num_peers - L)
if (groupchats[self->num].side_pos < groupchats[self->num].num_peers - L) {
++groupchats[self->num].side_pos;
}
} else if (key == user_settings->key_peer_list_up) {
if (groupchats[self->num].side_pos > 0)
if (groupchats[self->num].side_pos > 0) {
--groupchats[self->num].side_pos;
}
} else if (key == '\r') {
rm_trailing_spaces_buf(ctx);
@ -538,8 +553,9 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
char line[MAX_STR_SIZE];
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1)
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) {
memset(&line, 0, sizeof(line));
}
if (line[0] == '/') {
if (strcmp(line, "/close") == 0) {
@ -570,8 +586,9 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m)
int x2, y2;
getmaxyx(self->window, y2, x2);
if (x2 <= 0 || y2 <= 0)
if (x2 <= 0 || y2 <= 0) {
return;
}
ChatContext *ctx = self->chatwin;
@ -583,8 +600,9 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m)
curs_set(1);
if (ctx->len > 0)
if (ctx->len > 0) {
mvwprintw(ctx->linewin, 1, 0, "%ls", &ctx->line[ctx->start]);
}
wclear(ctx->sidebar);
mvwhline(self->window, y2 - CHATBOX_HEIGHT, 0, ACS_HLINE, x2);
@ -637,17 +655,19 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m)
wnoutrefresh(self->window);
if (self->help->active)
if (self->help->active) {
help_onDraw(self);
}
}
static void groupchat_onInit(ToxWindow *self, Tox *m)
{
int x2, y2;
getmaxyx(self->window, y2, x2);
if (x2 <= 0 || y2 <= 0)
if (x2 <= 0 || y2 <= 0) {
exit_toxic_err("failed in groupchat_onInit", FATALERR_CURSES);
}
ChatContext *ctx = self->chatwin;
@ -658,8 +678,9 @@ static void groupchat_onInit(ToxWindow *self, Tox *m)
ctx->hst = calloc(1, sizeof(struct history));
ctx->log = calloc(1, sizeof(struct chatlog));
if (ctx->log == NULL || ctx->hst == NULL)
if (ctx->log == NULL || ctx->hst == NULL) {
exit_toxic_err("failed in groupchat_onInit", FATALERR_MEMORY);
}
line_info_init(ctx->hst);
@ -667,9 +688,10 @@ static void groupchat_onInit(ToxWindow *self, Tox *m)
char myid[TOX_ADDRESS_SIZE];
tox_self_get_address(m, (uint8_t *) myid);
if (log_enable(self->name, myid, NULL, ctx->log, LOG_GROUP) == -1)
if (log_enable(self->name, myid, NULL, ctx->log, LOG_GROUP) == -1) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Warning: Log failed to initialize.");
}
}
execute(ctx->history, self, m, "/log", GLOBAL_COMMAND_MODE);
@ -698,8 +720,9 @@ ToxWindow new_group_chat(Tox *m, uint32_t groupnum)
ChatContext *chatwin = calloc(1, sizeof(ChatContext));
Help *help = calloc(1, sizeof(Help));
if (chatwin == NULL || help == NULL)
if (chatwin == NULL || help == NULL) {
exit_toxic_err("failed in new_group_chat", FATALERR_MEMORY);
}
ret.chatwin = chatwin;
ret.help = help;

View File

@ -40,14 +40,16 @@
void help_init_menu(ToxWindow *self)
{
if (self->help->win)
if (self->help->win) {
delwin(self->help->win);
}
int y2, x2;
getmaxyx(self->window, y2, x2);
if (y2 < HELP_MENU_HEIGHT || x2 < HELP_MENU_WIDTH)
if (y2 < HELP_MENU_HEIGHT || x2 < HELP_MENU_WIDTH) {
return;
}
self->help->win = newwin(HELP_MENU_HEIGHT, HELP_MENU_WIDTH, 3, 3);
self->help->active = true;
@ -62,14 +64,16 @@ static void help_exit(ToxWindow *self)
static void help_init_window(ToxWindow *self, int height, int width)
{
if (self->help->win)
if (self->help->win) {
delwin(self->help->win);
}
int y2, x2;
getmaxyx(stdscr, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
height = MIN(height, y2);
width = MIN(width, x2);

View File

@ -43,8 +43,9 @@ void input_new_char(ToxWindow *self, wint_t key, int x, int y, int mx_x, int mx_
ChatContext *ctx = self->chatwin;
/* this is the only place we need to do this check */
if (key == '\n')
if (key == '\n') {
key = L'';
}
int cur_len = wcwidth(key);
@ -77,18 +78,20 @@ static void input_backspace(ToxWindow *self, int x, int mx_x)
int cur_len = ctx->pos > 0 ? wcwidth(ctx->line[ctx->pos - 1]) : 0;
int s_len = ctx->start > 0 ? wcwidth(ctx->line[ctx->start - 1]) : 0;
if (ctx->start && (x >= mx_x - cur_len))
if (ctx->start && (x >= mx_x - cur_len)) {
ctx->start = MAX(0, ctx->start - 1 + (s_len - cur_len));
else if (ctx->start)
} else if (ctx->start) {
ctx->start = MAX(0, ctx->start - cur_len);
}
}
/* delete a char via delete key from input field and buffer */
static void input_delete(ToxWindow *self)
{
if (del_char_buf_frnt(self->chatwin) == -1)
if (del_char_buf_frnt(self->chatwin) == -1) {
sound_notify(self, notif_error, 0, NULL);
}
}
/* delete last typed word */
static void input_del_word(ToxWindow *self, int x, int mx_x)
@ -104,16 +107,18 @@ static void input_del_word(ToxWindow *self, int x, int mx_x)
/* deletes entire line before cursor from input field and buffer */
static void input_discard(ToxWindow *self)
{
if (discard_buf(self->chatwin) == -1)
if (discard_buf(self->chatwin) == -1) {
sound_notify(self, notif_error, 0, NULL);
}
}
/* deletes entire line after cursor from input field and buffer */
static void input_kill(ChatContext *ctx)
{
if (kill_buf(ctx) == -1)
if (kill_buf(ctx) == -1) {
sound_notify(NULL, notif_error, NT_ALWAYS, NULL);
}
}
static void input_yank(ToxWindow *self, int x, int mx_x)
{
@ -149,8 +154,9 @@ static void input_mv_home(ToxWindow *self)
{
ChatContext *ctx = self->chatwin;
if (ctx->pos <= 0)
if (ctx->pos <= 0) {
return;
}
ctx->pos = 0;
ctx->start = 0;
@ -161,27 +167,30 @@ static void input_mv_left(ToxWindow *self, int x, int mx_x)
{
ChatContext *ctx = self->chatwin;
if (ctx->pos <= 0)
if (ctx->pos <= 0) {
return;
}
int cur_len = ctx->pos > 0 ? wcwidth(ctx->line[ctx->pos - 1]) : 0;
int s_len = ctx->start > 0 ? wcwidth(ctx->line[ctx->start - 1]) : 0;
--ctx->pos;
if (ctx->start && (x >= mx_x - cur_len))
if (ctx->start && (x >= mx_x - cur_len)) {
ctx->start = MAX(0, ctx->start - 1 + (s_len - cur_len));
else if (ctx->start)
} else if (ctx->start) {
ctx->start = MAX(0, ctx->start - cur_len);
}
}
/* moves cursor/line position right in input field and buffer */
static void input_mv_right(ToxWindow *self, int x, int mx_x)
{
ChatContext *ctx = self->chatwin;
if (ctx->pos >= ctx->len)
if (ctx->pos >= ctx->len) {
return;
}
++ctx->pos;

View File

@ -40,8 +40,9 @@ void line_info_init(struct history *hst)
{
hst->line_root = calloc(1, sizeof(struct line_info));
if (hst->line_root == NULL)
if (hst->line_root == NULL) {
exit_toxic_err("failed in line_info_init", FATALERR_MEMORY);
}
hst->line_start = hst->line_root;
hst->line_end = hst->line_start;
@ -53,8 +54,9 @@ void line_info_reset_start(ToxWindow *self, struct history *hst)
{
struct line_info *line = hst->line_end;
if (line->prev == NULL)
if (line->prev == NULL) {
return;
}
int y2, x2;
getmaxyx(self->window, y2, x2);
@ -88,9 +90,10 @@ void line_info_cleanup(struct history *hst)
int i;
for (i = 0; i < hst->queue_sz; ++i) {
if (hst->queue[i])
if (hst->queue[i]) {
free(hst->queue[i]);
}
}
free(hst);
}
@ -114,15 +117,17 @@ static void line_info_root_fwd(struct history *hst)
/* returns ptr to queue item 0 and removes it from queue. Returns NULL if queue is empty. */
static struct line_info *line_info_ret_queue(struct history *hst)
{
if (hst->queue_sz <= 0)
if (hst->queue_sz <= 0) {
return NULL;
}
struct line_info *line = hst->queue[0];
int i;
for (i = 0; i < hst->queue_sz; ++i)
for (i = 0; i < hst->queue_sz; ++i) {
hst->queue[i] = hst->queue[i + 1];
}
--hst->queue_sz;
@ -137,18 +142,21 @@ static struct line_info *line_info_ret_queue(struct history *hst)
int line_info_add(ToxWindow *self, const char *timestr, const char *name1, const char *name2, uint8_t type,
uint8_t bold, uint8_t colour, const char *msg, ...)
{
if (!self)
if (!self) {
return -1;
}
struct history *hst = self->chatwin->hst;
if (hst->queue_sz >= MAX_LINE_INFO_QUEUE)
if (hst->queue_sz >= MAX_LINE_INFO_QUEUE) {
return -1;
}
struct line_info *new_line = calloc(1, sizeof(struct line_info));
if (new_line == NULL)
if (new_line == NULL) {
exit_toxic_err("failed in line_info_add", FATALERR_MEMORY);
}
char frmt_msg[MAX_LINE_INFO_MSG_SIZE] = {0};
@ -206,10 +214,11 @@ int line_info_add(ToxWindow *self, const char *timestr, const char *name1, const
int i;
for (i = 0; frmt_msg[i]; ++i) {
if (frmt_msg[i] == '\n')
if (frmt_msg[i] == '\n') {
++new_line->newlines;
}
}
}
if (timestr) {
snprintf(new_line->timestr, sizeof(new_line->timestr), "%s", timestr);
@ -245,11 +254,13 @@ static void line_info_check_queue(ToxWindow *self)
struct history *hst = self->chatwin->hst;
struct line_info *line = line_info_ret_queue(hst);
if (line == NULL)
if (line == NULL) {
return;
}
if (hst->start_id > user_settings->history_size)
if (hst->start_id > user_settings->history_size) {
line_info_root_fwd(hst);
}
line->prev = hst->line_end;
hst->line_end->next = line;
@ -261,8 +272,9 @@ static void line_info_check_queue(ToxWindow *self)
getyx(self->chatwin->history, y, x);
(void) x;
if (x2 <= SIDEBAR_WIDTH)
if (x2 <= SIDEBAR_WIDTH) {
return;
}
int offst = self->show_peerlist ? SIDEBAR_WIDTH : 0; /* offset width of groupchat sidebar */
int lines = 1 + line->newlines + (line->len / (x2 - offst));
@ -284,8 +296,9 @@ void line_info_print(ToxWindow *self)
{
ChatContext *ctx = self->chatwin;
if (ctx == NULL)
if (ctx == NULL) {
return;
}
struct history *hst = ctx->hst;
@ -293,19 +306,25 @@ void line_info_print(ToxWindow *self)
line_info_check_queue(self);
WINDOW *win = ctx->history;
wclear(win);
int y2, x2;
getmaxyx(self->window, y2, x2);
if (x2 <= SIDEBAR_WIDTH)
if (x2 <= SIDEBAR_WIDTH) {
return;
}
if (self->is_groupchat)
if (self->is_groupchat) {
wmove(win, 0, 0);
else
} else {
wmove(win, 2, 0);
}
struct line_info *line = hst->line_start->next;
int numlines = 0;
while (line && numlines++ <= y2) {
@ -325,10 +344,11 @@ void line_info_print(ToxWindow *self)
int nameclr = GREEN;
if (line->colour)
if (line->colour) {
nameclr = line->colour;
else if (type == IN_MSG)
} else if (type == IN_MSG) {
nameclr = CYAN;
}
wattron(win, COLOR_PAIR(nameclr));
wprintw(win, "%s %s: ", user_settings->line_normal, line->name1);
@ -339,22 +359,25 @@ void line_info_print(ToxWindow *self)
while (msg) {
char *line = strsep(&msg, "\n");
if (line[0] == '>')
if (line[0] == '>') {
wattron(win, COLOR_PAIR(GREEN));
else if (line[0] == '<')
} else if (line[0] == '<') {
wattron(win, COLOR_PAIR(RED));
}
wprintw(win, "%s%c", line, msg ? '\n' : '\0');
if (line[0] == '>')
if (line[0] == '>') {
wattroff(win, COLOR_PAIR(GREEN));
else if (line[0] == '<')
} else if (line[0] == '<') {
wattroff(win, COLOR_PAIR(RED));
}
// change the \0 set by strsep back to \n
if (msg)
if (msg) {
msg[-1] = '\n';
}
}
if (type == OUT_MSG && timed_out(line->timestamp, NOREAD_FLAG_TIMEOUT)) {
wattron(win, COLOR_PAIR(RED));
@ -406,19 +429,23 @@ void line_info_print(ToxWindow *self)
wattroff(win, COLOR_PAIR(BLUE));
}
if (line->bold)
if (line->bold) {
wattron(win, A_BOLD);
}
if (line->colour)
if (line->colour) {
wattron(win, COLOR_PAIR(line->colour));
}
wprintw(win, "%s\n", line->msg);
if (line->bold)
if (line->bold) {
wattroff(win, A_BOLD);
}
if (line->colour)
if (line->colour) {
wattroff(win, COLOR_PAIR(line->colour));
}
break;
@ -427,8 +454,9 @@ void line_info_print(ToxWindow *self)
wprintw(win, "$ ");
wattroff(win, COLOR_PAIR(GREEN));
if (line->msg[0])
if (line->msg[0]) {
wprintw(win, "%s", line->msg);
}
wprintw(win, "\n");
break;
@ -492,9 +520,10 @@ void line_info_print(ToxWindow *self)
}
/* keep calling until queue is empty */
if (hst->queue_sz > 0)
if (hst->queue_sz > 0) {
line_info_print(self);
}
}
/* puts msg in specified line_info msg buffer */
void line_info_set(ToxWindow *self, uint32_t id, char *msg)
@ -518,16 +547,20 @@ void line_info_set(ToxWindow *self, uint32_t id, char *msg)
static void line_info_scroll_up(struct history *hst)
{
if (hst->line_start->prev)
if (hst->line_start->prev) {
hst->line_start = hst->line_start->prev;
else sound_notify(NULL, notif_error, NT_ALWAYS, NULL);
} else {
sound_notify(NULL, notif_error, NT_ALWAYS, NULL);
}
}
static void line_info_scroll_down(struct history *hst)
{
if (hst->line_start->next)
if (hst->line_start->next) {
hst->line_start = hst->line_start->next;
else sound_notify(NULL, notif_error, NT_ALWAYS, NULL);
} else {
sound_notify(NULL, notif_error, NT_ALWAYS, NULL);
}
}
static void line_info_page_up(ToxWindow *self, struct history *hst)
@ -538,9 +571,10 @@ static void line_info_page_up(ToxWindow *self, struct history *hst)
int jump_dist = y2 / 2;
int i;
for (i = 0; i < jump_dist && hst->line_start->prev; ++i)
for (i = 0; i < jump_dist && hst->line_start->prev; ++i) {
hst->line_start = hst->line_start->prev;
}
}
static void line_info_page_down(ToxWindow *self, struct history *hst)
{
@ -550,9 +584,10 @@ static void line_info_page_down(ToxWindow *self, struct history *hst)
int jump_dist = y2 / 2;
int i;
for (i = 0; i < jump_dist && hst->line_start->next; ++i)
for (i = 0; i < jump_dist && hst->line_start->next; ++i) {
hst->line_start = hst->line_start->next;
}
}
bool line_info_onKey(ToxWindow *self, wint_t key)
{

View File

@ -45,8 +45,9 @@ extern struct user_settings *user_settings;
Returns 0 on success, -1 if the path is too long */
static int get_log_path(char *dest, int destsize, char *name, const char *selfkey, const char *otherkey, int logtype)
{
if (!valid_nick(name))
if (!valid_nick(name)) {
name = UNKNOWN_NAME;
}
const char *namedash = logtype == LOG_PROMPT ? "" : "-";
const char *set_path = user_settings->chatlogs_path;
@ -85,10 +86,11 @@ static int get_log_path(char *dest, int destsize, char *name, const char *selfke
return -1;
}
if (!string_is_empty(set_path))
if (!string_is_empty(set_path)) {
snprintf(dest, destsize, "%s%s-%s%s%s.log", set_path, self_id, name, namedash, other_id);
else
} else {
snprintf(dest, destsize, "%s%s%s-%s%s%s.log", user_config_dir, LOGDIR, self_id, name, namedash, other_id);
}
free(user_config_dir);
@ -98,19 +100,22 @@ static int get_log_path(char *dest, int destsize, char *name, const char *selfke
/* Opens log file or creates a new one */
static int init_logging_session(char *name, const char *selfkey, const char *otherkey, struct chatlog *log, int logtype)
{
if (selfkey == NULL || (logtype == LOG_CHAT && otherkey == NULL))
if (selfkey == NULL || (logtype == LOG_CHAT && otherkey == NULL)) {
return -1;
}
char log_path[MAX_STR_SIZE];
if (get_log_path(log_path, sizeof(log_path), name, selfkey, otherkey, logtype) == -1)
if (get_log_path(log_path, sizeof(log_path), name, selfkey, otherkey, logtype) == -1) {
return -1;
}
log->file = fopen(log_path, "a+");
snprintf(log->path, sizeof(log->path), "%s", log_path);
if (log->file == NULL)
if (log->file == NULL) {
return -1;
}
return 0;
}
@ -119,8 +124,9 @@ static int init_logging_session(char *name, const char *selfkey, const char *oth
void write_to_log(const char *msg, const char *name, struct chatlog *log, bool event)
{
if (!log->log_on)
if (!log->log_on) {
return;
}
if (log->file == NULL) {
log->log_on = false;
@ -129,10 +135,11 @@ void write_to_log(const char *msg, const char *name, struct chatlog *log, bool e
char name_frmt[TOXIC_MAX_NAME_LENGTH + 3];
if (event)
if (event) {
snprintf(name_frmt, sizeof(name_frmt), "* %s", name);
else
} else {
snprintf(name_frmt, sizeof(name_frmt), "%s:", name);
}
const char *t = user_settings->log_timestamp_format;
char s[MAX_STR_SIZE];
@ -147,8 +154,9 @@ void write_to_log(const char *msg, const char *name, struct chatlog *log, bool e
void log_disable(struct chatlog *log)
{
if (log->file != NULL)
if (log->file != NULL) {
fclose(log->file);
}
memset(log, 0, sizeof(struct chatlog));
}
@ -157,8 +165,9 @@ int log_enable(char *name, const char *selfkey, const char *otherkey, struct cha
{
log->log_on = true;
if (log->file != NULL)
if (log->file != NULL) {
return 0;
}
if (init_logging_session(name, selfkey, otherkey, log, logtype) == -1) {
log_disable(log);
@ -171,18 +180,21 @@ int log_enable(char *name, const char *selfkey, const char *otherkey, struct cha
/* Loads previous history from chat log */
void load_chat_history(ToxWindow *self, struct chatlog *log)
{
if (log->file == NULL)
if (log->file == NULL) {
return;
}
off_t sz = file_size(log->path);
if (sz <= 0)
if (sz <= 0) {
return;
}
char *hstbuf = malloc(sz + 1);
if (hstbuf == NULL)
if (hstbuf == NULL) {
exit_toxic_err("failed in load_chat_history", FATALERR_MEMORY);
}
if (fseek(log->file, 0L, SEEK_SET) == -1) {
free(hstbuf);
@ -204,9 +216,10 @@ void load_chat_history(ToxWindow *self, struct chatlog *log)
/* start at end and backtrace L lines or to the beginning of buffer */
for (start = sz - 1; start >= 0 && count < L; --start) {
if (hstbuf[start] == '\n')
if (hstbuf[start] == '\n') {
++count;
}
}
const char *line = strtok(&hstbuf[start + 1], "\n");
@ -238,33 +251,40 @@ int rename_logfile(char *src, char *dest, const char *selfkey, const char *other
log_on = log->log_on;
}
if (log_on)
if (log_on) {
log_disable(log);
}
char newpath[MAX_STR_SIZE];
char oldpath[MAX_STR_SIZE];
if (get_log_path(oldpath, sizeof(oldpath), src, selfkey, otherkey, LOG_CHAT) == -1)
if (get_log_path(oldpath, sizeof(oldpath), src, selfkey, otherkey, LOG_CHAT) == -1) {
goto on_error;
}
if (!file_exists(oldpath))
if (!file_exists(oldpath)) {
return 0;
}
if (get_log_path(newpath, sizeof(newpath), dest, selfkey, otherkey, LOG_CHAT) == -1)
if (get_log_path(newpath, sizeof(newpath), dest, selfkey, otherkey, LOG_CHAT) == -1) {
goto on_error;
}
if (rename(oldpath, newpath) != 0)
if (rename(oldpath, newpath) != 0) {
goto on_error;
}
if (log_on)
if (log_on) {
log_enable(dest, selfkey, otherkey, log, LOG_CHAT);
}
return 0;
on_error:
if (log_on)
if (log_on) {
log_enable(src, selfkey, otherkey, log, LOG_CHAT);
}
return -1;
}

View File

@ -50,8 +50,9 @@ void cqueue_add(struct chat_queue *q, const char *msg, size_t len, uint8_t type,
struct cqueue_msg *new_m = malloc(sizeof(struct cqueue_msg));
if (new_m == NULL)
if (new_m == NULL) {
exit_toxic_err("failed in cqueue_message", FATALERR_MEMORY);
}
snprintf(new_m->message, sizeof(new_m->message), "%s", msg);
new_m->len = len;
@ -118,8 +119,9 @@ void cqueue_remove(ToxWindow *self, Tox *m, uint32_t receipt)
struct cqueue_msg *next = msg->next;
if (msg->prev == NULL) { /* root */
if (next)
if (next) {
next->prev = NULL;
}
free(msg);
q->root = next;

View File

@ -93,20 +93,22 @@ void get_time_str(char *buf, int bufsize)
/* Converts seconds to string in format HH:mm:ss; truncates hours and minutes when necessary */
void get_elapsed_time_str(char *buf, int bufsize, time_t secs)
{
if (!secs)
if (!secs) {
return;
}
long int seconds = secs % 60;
long int minutes = (secs % 3600) / 60;
long int hours = secs / 3600;
if (!minutes && !hours)
if (!minutes && !hours) {
snprintf(buf, bufsize, "%.2ld", seconds);
else if (!hours)
} else if (!hours) {
snprintf(buf, bufsize, "%ld:%.2ld", minutes, seconds);
else
} else {
snprintf(buf, bufsize, "%ld:%.2ld:%.2ld", hours, minutes, seconds);
}
}
/*
* Converts a hexidecimal string of length hex_len to binary format and puts the result in output.
@ -117,8 +119,9 @@ void get_elapsed_time_str(char *buf, int bufsize, time_t secs)
*/
int hex_string_to_bin(const char *hex_string, size_t hex_len, char *output, size_t output_size)
{
if (output_size == 0 || hex_len != output_size * 2)
if (output_size == 0 || hex_len != output_size * 2) {
return -1;
}
for (size_t i = 0; i < output_size; ++i) {
sscanf(hex_string, "%2hhx", &output[i]);
@ -130,8 +133,9 @@ int hex_string_to_bin(const char *hex_string, size_t hex_len, char *output, size
int hex_string_to_bytes(char *buf, int size, const char *keystr)
{
if (size % 2 != 0)
if (size % 2 != 0) {
return -1;
}
int i, res;
const char *pos = keystr;
@ -140,9 +144,10 @@ int hex_string_to_bytes(char *buf, int size, const char *keystr)
res = sscanf(pos, "%2hhx", &buf[i]);
pos += 2;
if (res == EOF || res < 1)
if (res == EOF || res < 1) {
return -1;
}
}
return 0;
}
@ -154,13 +159,15 @@ int hex_string_to_bytes(char *buf, int size, const char *keystr)
*/
int bin_id_to_string(const char *bin_id, size_t bin_id_size, char *output, size_t output_size)
{
if (bin_id_size != TOX_ADDRESS_SIZE || output_size < (TOX_ADDRESS_SIZE * 2 + 1))
if (bin_id_size != TOX_ADDRESS_SIZE || output_size < (TOX_ADDRESS_SIZE * 2 + 1)) {
return -1;
}
size_t i;
for (i = 0; i < TOX_ADDRESS_SIZE; ++i)
for (i = 0; i < TOX_ADDRESS_SIZE; ++i) {
snprintf(&output[i * 2], output_size - (i * 2), "%02X", bin_id[i] & 0xff);
}
return 0;
}
@ -168,8 +175,9 @@ int bin_id_to_string(const char *bin_id, size_t bin_id_size, char *output, size_
/* Returns 1 if the string is empty, 0 otherwise */
int string_is_empty(const char *string)
{
if (!string)
if (!string) {
return true;
}
return string[0] == '\0';
}
@ -177,8 +185,9 @@ int string_is_empty(const char *string)
/* Returns 1 if the string is empty, 0 otherwise */
int wstring_is_empty(const wchar_t *string)
{
if (!string)
if (!string) {
return true;
}
return string[0] == L'\0';
}
@ -188,11 +197,13 @@ int mbs_to_wcs_buf(wchar_t *buf, const char *string, size_t n)
{
size_t len = mbstowcs(NULL, string, 0) + 1;
if (n < len)
if (n < len) {
return -1;
}
if ((len = mbstowcs(buf, string, n)) == (size_t) - 1)
if ((len = mbstowcs(buf, string, n)) == (size_t) - 1) {
return -1;
}
return len;
}
@ -202,11 +213,13 @@ int wcs_to_mbs_buf(char *buf, const wchar_t *string, size_t n)
{
size_t len = wcstombs(NULL, string, 0) + 1;
if (n < len)
if (n < len) {
return -1;
}
if ((len = wcstombs(buf, string, n)) == (size_t) - 1)
if ((len = wcstombs(buf, string, n)) == (size_t) - 1) {
return -1;
}
return len;
}
@ -225,8 +238,9 @@ int qsort_strcasecmp_hlpr(const void *str1, const void *str2)
- must not contain a newline or tab seqeunce */
int valid_nick(const char *nick)
{
if (!nick[0] || nick[0] == ' ')
if (!nick[0] || nick[0] == ' ') {
return 0;
}
int i;
@ -238,8 +252,10 @@ int valid_nick(const char *nick)
|| nick[i] == '\v'
|| nick[i] == '\r')
{
return 0;
}
}
return 1;
}
@ -250,10 +266,11 @@ void filter_str(char *str, size_t len)
size_t i;
for (i = 0; i < len; ++i) {
if (str[i] == '\n' || str[i] == '\r' || str[i] == '\t' || str[i] == '\v' || str[i] == '\0')
if (str[i] == '\n' || str[i] == '\r' || str[i] == '\t' || str[i] == '\v' || str[i] == '\0') {
str[i] = ' ';
}
}
}
/* gets base file name from path or original file name if no path is supplied.
* Returns the file name length
@ -263,23 +280,27 @@ size_t get_file_name(char *namebuf, size_t bufsize, const char *pathname)
int len = strlen(pathname) - 1;
char *path = strdup(pathname);
if (path == NULL)
if (path == NULL) {
exit_toxic_err("failed in get_file_name", FATALERR_MEMORY);
}
while (len >= 0 && pathname[len] == '/')
while (len >= 0 && pathname[len] == '/') {
path[len--] = '\0';
}
char *finalname = strdup(path);
if (finalname == NULL)
if (finalname == NULL) {
exit_toxic_err("failed in get_file_name", FATALERR_MEMORY);
}
const char *basenm = strrchr(path, '/');
if (basenm != NULL) {
if (basenm[1])
if (basenm[1]) {
strcpy(finalname, &basenm[1]);
}
}
snprintf(namebuf, bufsize, "%s", finalname);
free(finalname);
@ -295,13 +316,15 @@ size_t get_file_name(char *namebuf, size_t bufsize, const char *pathname)
*/
size_t get_base_dir(const char *path, size_t path_len, char *dir)
{
if (path_len == 0 || path == NULL)
if (path_len == 0 || path == NULL) {
return 0;
}
size_t dir_len = char_rfind(path, '/', path_len);
if (dir_len != 0 && dir_len < path_len)
if (dir_len != 0 && dir_len < path_len) {
++dir_len; /* Leave trailing slash */
}
memcpy(dir, path, dir_len);
dir[dir_len] = '\0';
@ -314,9 +337,10 @@ void str_to_lower(char *str)
{
int i;
for (i = 0; str[i]; ++i)
for (i = 0; str[i]; ++i) {
str[i] = tolower(str[i]);
}
}
/* puts friendnum's nick in buf, truncating at TOXIC_MAX_NAME_LENGTH if necessary.
if toxcore API call fails, put UNKNOWN_NAME in buf
@ -401,9 +425,10 @@ int char_find(int idx, const char *s, char ch)
int i = idx;
for (i = idx; s[i]; ++i) {
if (s[i] == ch)
if (s[i] == ch) {
break;
}
}
return i;
}
@ -419,9 +444,10 @@ int char_rfind(const char *s, char ch, int len)
int i = 0;
for (i = len; i > 0; --i) {
if (s[i] == ch)
if (s[i] == ch) {
break;
}
}
return i;
}
@ -460,8 +486,9 @@ off_t file_size(const char *path)
{
struct stat st;
if (stat(path, &st) == -1)
if (stat(path, &st) == -1) {
return 0;
}
return st.st_size;
}
@ -474,13 +501,15 @@ int check_file_signature(const char *signature, size_t size, FILE *fp)
{
char buf[size];
if (fread(buf, size, 1, fp) != 1)
if (fread(buf, size, 1, fp) != 1) {
return -1;
}
int ret = memcmp(signature, buf, size);
if (fseek(fp, 0L, SEEK_SET) == -1)
if (fseek(fp, 0L, SEEK_SET) == -1) {
return -1;
}
return ret == 0 ? 0 : 1;
}
@ -490,10 +519,11 @@ void set_window_title(ToxWindow *self, const char *title, int len)
{
char cpy[TOXIC_MAX_NAME_LENGTH + 1];
if (self->is_groupchat) /* keep groupnumber in title */
if (self->is_groupchat) { /* keep groupnumber in title */
snprintf(cpy, sizeof(cpy), "%d %s", self->num, title);
else
} else {
snprintf(cpy, sizeof(cpy), "%s", title);
}
if (len > MAX_WINDOW_NAME_LENGTH) {
strcpy(&cpy[MAX_WINDOW_NAME_LENGTH - 3], "...");

View File

@ -97,42 +97,49 @@ static int load_nameserver_list(const char *path)
{
FILE *fp = fopen(path, "r");
if (fp == NULL)
if (fp == NULL) {
return -2;
}
char line[MAX_SERVER_LINE];
while (fgets(line, sizeof(line), fp) && Nameservers.lines < MAX_SERVERS) {
int linelen = strlen(line);
if (linelen < SERVER_KEY_SIZE * 2 + 5)
if (linelen < SERVER_KEY_SIZE * 2 + 5) {
continue;
}
if (line[linelen - 1] == '\n')
if (line[linelen - 1] == '\n') {
line[--linelen] = '\0';
}
const char *name = strtok(line, " ");
const char *keystr = strtok(NULL, " ");
if (name == NULL || keystr == NULL)
if (name == NULL || keystr == NULL) {
continue;
}
if (strlen(keystr) != SERVER_KEY_SIZE * 2)
if (strlen(keystr) != SERVER_KEY_SIZE * 2) {
continue;
}
snprintf(Nameservers.names[Nameservers.lines], sizeof(Nameservers.names[Nameservers.lines]), "%s", name);
int res = hex_string_to_bytes(Nameservers.keys[Nameservers.lines], SERVER_KEY_SIZE, keystr);
if (res == -1)
if (res == -1) {
continue;
}
++Nameservers.lines;
}
fclose(fp);
if (Nameservers.lines < 1)
if (Nameservers.lines < 1) {
return -3;
}
return 0;
}
@ -145,8 +152,9 @@ static int load_nameserver_list(const char *path)
*/
static int parse_addr(const char *addr, char *namebuf, size_t namebuf_sz, char *dombuf, size_t dombuf_sz)
{
if (strlen(addr) >= (MAX_STR_SIZE - strlen(NAMESERVER_API_PATH)))
if (strlen(addr) >= (MAX_STR_SIZE - strlen(NAMESERVER_API_PATH))) {
return -1;
}
char tmpaddr[MAX_STR_SIZE];
char *tmpname = NULL;
@ -156,8 +164,9 @@ static int parse_addr(const char *addr, char *namebuf, size_t namebuf_sz, char *
tmpname = strtok(tmpaddr, "@");
tmpdom = strtok(NULL, "");
if (tmpname == NULL || tmpdom == NULL)
if (tmpname == NULL || tmpdom == NULL) {
return -1;
}
str_to_lower(tmpdom);
snprintf(namebuf, namebuf_sz, "%s", tmpname);
@ -197,23 +206,27 @@ static int process_response(struct Recv_Curl_Data *recv_data)
{
size_t prefix_size = strlen(ID_PREFIX);
if (recv_data->length < TOX_ADDRESS_SIZE * 2 + prefix_size)
if (recv_data->length < TOX_ADDRESS_SIZE * 2 + prefix_size) {
return -1;
}
const char *IDstart = strstr(recv_data->data, ID_PREFIX);
if (IDstart == NULL)
if (IDstart == NULL) {
return -1;
}
if (strlen(IDstart) < TOX_ADDRESS_SIZE * 2 + prefix_size)
if (strlen(IDstart) < TOX_ADDRESS_SIZE * 2 + prefix_size) {
return -1;
}
char ID_string[TOX_ADDRESS_SIZE * 2 + 1];
memcpy(ID_string, IDstart + prefix_size, TOX_ADDRESS_SIZE * 2);
ID_string[TOX_ADDRESS_SIZE * 2] = 0;
if (hex_string_to_bin(ID_string, strlen(ID_string), t_data.id_bin, sizeof(t_data.id_bin)) == -1)
if (hex_string_to_bin(ID_string, strlen(ID_string), t_data.id_bin, sizeof(t_data.id_bin)) == -1) {
return -1;
}
return 0;
}
@ -234,10 +247,11 @@ void *lookup_thread_func(void *data)
char real_domain[MAX_DOMAIN_SIZE];
if (!get_domain_match(nameserver_key, real_domain, sizeof(real_domain), input_domain)) {
if (!strcasecmp(input_domain, "utox.org"))
if (!strcasecmp(input_domain, "utox.org")) {
lookup_error(self, "utox.org uses deprecated DNS-based lookups and is no longer supported by Toxic.");
else
} else {
lookup_error(self, "Name server domain not found.");
}
kill_lookup_thread();
}

View File

@ -104,21 +104,24 @@ struct _ActiveNotifications {
/* coloured tab notifications: primary notification type */
static void tab_notify(ToxWindow *self, uint64_t flags)
{
if (self == NULL)
if (self == NULL) {
return;
}
if (flags & NT_WNDALERT_0)
if (flags & NT_WNDALERT_0) {
self->alert = WINDOW_ALERT_0;
else if ( (flags & NT_WNDALERT_1) && (!self->alert || self->alert > WINDOW_ALERT_0) )
} else if ((flags & NT_WNDALERT_1) && (!self->alert || self->alert > WINDOW_ALERT_0)) {
self->alert = WINDOW_ALERT_1;
else if ( (flags & NT_WNDALERT_2) && (!self->alert || self->alert > WINDOW_ALERT_1) )
} else if ((flags & NT_WNDALERT_2) && (!self->alert || self->alert > WINDOW_ALERT_1)) {
self->alert = WINDOW_ALERT_2;
}
}
static bool notifications_are_disabled(uint64_t flags)
{
if (user_settings->alerts != ALERTS_ENABLED)
if (user_settings->alerts != ALERTS_ENABLED) {
return true;
}
bool res = (flags & NT_RESTOL) && (Control.cooldown > get_unix_time());
#ifdef X11
@ -161,7 +164,9 @@ void m_open_device()
{
last_opened_update = get_unix_time();
if (device_opened) return;
if (device_opened) {
return;
}
/* Blah error check */
open_primary_device(output, &Control.device_idx, 48000, 20, 1);
@ -171,7 +176,9 @@ void m_open_device()
void m_close_device()
{
if (!device_opened) return;
if (!device_opened) {
return;
}
close_device(output, Control.device_idx);
@ -198,15 +205,18 @@ void graceful_clear()
#endif
if (actives[i].id_indicator)
if (actives[i].id_indicator) {
*actives[i].id_indicator = -1; /* reset indicator value */
}
if (actives[i].looping) {
stop_sound(i);
} else {
if (!is_playing(actives[i].source))
if (!is_playing(actives[i].source)) {
memset(&actives[i], 0, sizeof(struct _ActiveNotifications));
else break;
} else {
break;
}
}
}
}
@ -241,7 +251,9 @@ void *do_playing(void *_p)
for (i = 0; i < ACTIVE_NOTIFS_MAX; i ++) {
if (actives[i].looping) has_looping = true;
if (actives[i].looping) {
has_looping = true;
}
test_active_notify = actives[i].active && !actives[i].looping;
#ifdef BOX_NOTIFY
@ -249,8 +261,9 @@ void *do_playing(void *_p)
#endif
if (test_active_notify) {
if (actives[i].id_indicator)
if (actives[i].id_indicator) {
*actives[i].id_indicator = -1; /* reset indicator value */
}
if (!is_playing(actives[i].source)) {
/* Close */
@ -267,8 +280,9 @@ void *do_playing(void *_p)
notify_notification_close(actives[i].box, &ignore);
actives[i].box = NULL;
if (actives[i].id_indicator)
if (actives[i].id_indicator) {
*actives[i].id_indicator = -1; /* reset indicator value */
}
if (!actives[i].looping && !is_playing(actives[i].source)) {
/* stop source if not looping or playing, just terminate box */
@ -338,8 +352,9 @@ void *do_playing(void *_p)
notify_notification_close(actives[i].box, &ignore);
actives[i].box = NULL;
if (actives[i].id_indicator)
if (actives[i].id_indicator) {
*actives[i].id_indicator = -1; /* reset indicator value */
}
memset(&actives[i], 0, sizeof(struct _ActiveNotifications));
}
@ -364,8 +379,9 @@ void graceful_clear()
actives[i].box = NULL;
}
if (actives[i].id_indicator)
if (actives[i].id_indicator) {
*actives[i].id_indicator = -1; /* reset indicator value */
}
memset(&actives[i], 0, sizeof(struct _ActiveNotifications));
}
@ -391,8 +407,9 @@ int init_notify(int login_cooldown, int notification_timeout)
#if defined(SOUND_NOTIFY) || defined(BOX_NOTIFY)
if (pthread_mutex_init(Control.poll_mutex, NULL) != 0)
if (pthread_mutex_init(Control.poll_mutex, NULL) != 0) {
return -1;
}
Control.poll_active = 1;
pthread_t thread;
@ -433,7 +450,9 @@ void terminate_notify()
#ifdef SOUND_NOTIFY
int i = 0;
for (; i < SOUNDS_SIZE; i ++) free(Control.sounds[i]);
for (; i < SOUNDS_SIZE; i ++) {
free(Control.sounds[i]);
}
alutExit();
#endif /* SOUND_NOTIFY */
@ -446,7 +465,9 @@ void terminate_notify()
#ifdef SOUND_NOTIFY
int set_sound(Notification sound, const char *value)
{
if (sound == silent) return 0;
if (sound == silent) {
return 0;
}
free(Control.sounds[sound]);
@ -487,11 +508,14 @@ int play_notify_sound(Notification notif, uint64_t flags)
{
int rc = -1;
if (flags & NT_BEEP) beep();
if (flags & NT_BEEP) {
beep();
}
if (notif != silent) {
if ( !Control.poll_active || !Control.sounds[notif] )
if (!Control.poll_active || !Control.sounds[notif]) {
return -1;
}
rc = play_sound_internal(notif, flags & NT_LOOP ? 1 : 0);
}
@ -512,8 +536,9 @@ void stop_sound(int id)
#endif
if (actives[id].id_indicator)
if (actives[id].id_indicator) {
*actives[id].id_indicator = -1;
}
// alSourcei(actives[id].source, AL_LOOPING, false);
alSourceStop(actives[id].source);
@ -530,8 +555,9 @@ static int m_play_sound(Notification notif, uint64_t flags)
return play_notify_sound(notif, flags);
#else
if (notif != silent)
if (notif != silent) {
beep();
}
return -1;
#endif /* SOUND_NOTIFY */
@ -547,16 +573,18 @@ int sound_notify(ToxWindow *self, Notification notif, uint64_t flags, int *id_in
{
tab_notify(self, flags);
if (notifications_are_disabled(flags))
if (notifications_are_disabled(flags)) {
return -1;
}
int id = -1;
control_lock();
if (self && (!self->stb || self->stb->status != TOX_USER_STATUS_BUSY))
if (self && (!self->stb || self->stb->status != TOX_USER_STATUS_BUSY)) {
id = m_play_sound(notif, flags);
else if (flags & NT_ALWAYS)
} else if (flags & NT_ALWAYS) {
id = m_play_sound(notif, flags);
}
#if defined(BOX_NOTIFY) && !defined(SOUND_NOTIFY)
@ -585,10 +613,13 @@ int sound_notify2(ToxWindow *self, Notification notif, uint64_t flags, int id)
{
tab_notify(self, flags);
if (notifications_are_disabled(flags))
if (notifications_are_disabled(flags)) {
return -1;
}
if (id < 0 || id >= ACTIVE_NOTIFS_MAX) return -1;
if (id < 0 || id >= ACTIVE_NOTIFS_MAX) {
return -1;
}
#ifdef SOUND_NOTIFY
control_lock();
@ -617,8 +648,9 @@ int sound_notify2(ToxWindow *self, Notification notif, uint64_t flags, int id)
return id;
#else
if (notif != silent)
if (notif != silent) {
beep();
}
return 0;
#endif /* SOUND_NOTIFY */
@ -652,27 +684,33 @@ int box_notify(ToxWindow *self, Notification notif, uint64_t flags, int *id_indi
actives[id].active = 1;
actives[id].id_indicator = id_indicator;
if (id_indicator) *id_indicator = id;
if (id_indicator) {
*id_indicator = id;
}
}
#else
if (id == -1)
if (id == -1) {
return -1;
}
#endif /* SOUND_NOTIFY */
snprintf(actives[id].title, sizeof(actives[id].title), "%s", title);
if (strlen(title) > 23) strcpy(actives[id].title + 20, "...");
if (strlen(title) > 23) {
strcpy(actives[id].title + 20, "...");
}
va_list __ARGS__;
va_start(__ARGS__, format);
vsnprintf(actives[id].messages[0], MAX_BOX_MSG_LEN, format, __ARGS__);
va_end(__ARGS__);
if (strlen(actives[id].messages[0]) > MAX_BOX_MSG_LEN - 3)
if (strlen(actives[id].messages[0]) > MAX_BOX_MSG_LEN - 3) {
strcpy(actives[id].messages[0] + MAX_BOX_MSG_LEN - 3, "...");
}
actives[id].box = notify_notification_new(actives[id].title, actives[id].messages[0], NULL);
actives[id].size++;
@ -699,8 +737,9 @@ int box_notify2(ToxWindow *self, Notification notif, uint64_t flags, int id, con
#ifdef BOX_NOTIFY
if (sound_notify2(self, notif, flags, id) == -1)
if (sound_notify2(self, notif, flags, id) == -1) {
return -1;
}
control_lock();
@ -714,8 +753,9 @@ int box_notify2(ToxWindow *self, Notification notif, uint64_t flags, int id, con
vsnprintf(actives[id].messages[actives[id].size], MAX_BOX_MSG_LEN, format, __ARGS__);
va_end(__ARGS__);
if (strlen(actives[id].messages[actives[id].size]) > MAX_BOX_MSG_LEN - 3)
if (strlen(actives[id].messages[actives[id].size]) > MAX_BOX_MSG_LEN - 3) {
strcpy(actives[id].messages[actives[id].size] + MAX_BOX_MSG_LEN - 3, "...");
}
actives[id].size++;
actives[id].n_timeout = get_unix_time() + Control.notif_timeout / 1000;
@ -746,8 +786,9 @@ int box_silent_notify(ToxWindow *self, uint64_t flags, int *id_indicator, const
{
tab_notify(self, flags);
if (notifications_are_disabled(flags))
if (notifications_are_disabled(flags)) {
return -1;
}
#ifdef BOX_NOTIFY
@ -769,15 +810,18 @@ int box_silent_notify(ToxWindow *self, uint64_t flags, int *id_indicator, const
snprintf(actives[id].title, sizeof(actives[id].title), "%s", title);
if (strlen(title) > 23) strcpy(actives[id].title + 20, "...");
if (strlen(title) > 23) {
strcpy(actives[id].title + 20, "...");
}
va_list __ARGS__;
va_start(__ARGS__, format);
vsnprintf(actives[id].messages[0], MAX_BOX_MSG_LEN, format, __ARGS__);
va_end(__ARGS__);
if (strlen(actives[id].messages[0]) > MAX_BOX_MSG_LEN - 3)
if (strlen(actives[id].messages[0]) > MAX_BOX_MSG_LEN - 3) {
strcpy(actives[id].messages[0] + MAX_BOX_MSG_LEN - 3, "...");
}
actives[id].active = 1;
actives[id].box = notify_notification_new(actives[id].title, actives[id].messages[0], NULL);
@ -800,8 +844,9 @@ int box_silent_notify2(ToxWindow *self, uint64_t flags, int id, const char *form
{
tab_notify(self, flags);
if (notifications_are_disabled(flags))
if (notifications_are_disabled(flags)) {
return -1;
}
#ifdef BOX_NOTIFY
control_lock();
@ -817,8 +862,9 @@ int box_silent_notify2(ToxWindow *self, uint64_t flags, int id, const char *form
vsnprintf(actives[id].messages[actives[id].size], MAX_BOX_MSG_LEN, format, __ARGS__);
va_end(__ARGS__);
if (strlen(actives[id].messages[actives[id].size]) > MAX_BOX_MSG_LEN - 3)
if (strlen(actives[id].messages[actives[id].size]) > MAX_BOX_MSG_LEN - 3) {
strcpy(actives[id].messages[actives[id].size] + MAX_BOX_MSG_LEN - 3, "...");
}
actives[id].size ++;
actives[id].n_timeout = get_unix_time() + Control.notif_timeout / 1000;

View File

@ -162,9 +162,10 @@ void prompt_update_statusmessage(ToxWindow *prompt, Tox *m, const char *statusms
TOX_ERR_SET_INFO err;
tox_self_set_status_message(m, (uint8_t *) statusmsg, len, &err);
if (err != TOX_ERR_SET_INFO_OK)
if (err != TOX_ERR_SET_INFO_OK) {
line_info_add(prompt, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to set note (error %d)\n", err);
}
}
/* Updates own status in prompt statusbar */
void prompt_update_status(ToxWindow *prompt, TOX_USER_STATUS status)
@ -184,8 +185,9 @@ TOX_CONNECTION prompt_selfConnectionStatus(void)
Returns request number on success, -1 if queue is full. */
static int add_friend_request(const char *public_key, const char *data)
{
if (FrndRequests.max_idx >= MAX_FRIEND_REQUESTS)
if (FrndRequests.max_idx >= MAX_FRIEND_REQUESTS) {
return -1;
}
int i;
@ -195,8 +197,9 @@ static int add_friend_request(const char *public_key, const char *data)
memcpy(FrndRequests.request[i].key, public_key, TOX_PUBLIC_KEY_SIZE);
snprintf(FrndRequests.request[i].msg, sizeof(FrndRequests.request[i].msg), "%s", data);
if (i == FrndRequests.max_idx)
if (i == FrndRequests.max_idx) {
++FrndRequests.max_idx;
}
++FrndRequests.num_requests;
@ -215,11 +218,13 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
getyx(self->window, y, x);
getmaxyx(self->window, y2, x2);
if (x2 <= 0 || y2 <= 0)
if (x2 <= 0 || y2 <= 0) {
return;
}
if (ctx->pastemode && key == '\r')
if (ctx->pastemode && key == '\r') {
key = '\n';
}
/* ignore non-menu related input if active */
if (self->help->active) {
@ -232,8 +237,9 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
return;
}
if (line_info_onKey(self, key))
if (line_info_onKey(self, key)) {
return;
}
input_handle(self, key, x, y, x2, y2);
@ -241,12 +247,14 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
if (ctx->len > 1 && ctx->line[0] == '/') {
int diff = -1;
if (wcsncmp(ctx->line, L"/avatar \"", wcslen(L"/avatar \"")) == 0)
if (wcsncmp(ctx->line, L"/avatar \"", wcslen(L"/avatar \"")) == 0) {
diff = dir_match(self, m, ctx->line, L"/avatar");
}
#ifdef PYTHON
else if (wcsncmp(ctx->line, L"/run \"", wcslen(L"/run \"")) == 0)
else if (wcsncmp(ctx->line, L"/run \"", wcslen(L"/run \"")) == 0) {
diff = dir_match(self, m, ctx->line, L"/run");
}
#endif
@ -257,8 +265,9 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
{"busy"},
};
diff = complete_line(self, status_cmd_list, 3, 8);
} else
} else {
diff = complete_line(self, glob_cmd_list, AC_NUM_GLOB_COMMANDS, MAX_CMDNAME_SIZE);
}
if (diff != -1) {
if (x + diff > x2 - 1) {
@ -280,8 +289,9 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr)
char line[MAX_STR_SIZE] = {0};
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1)
if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) {
memset(&line, 0, sizeof(line));
}
line_info_add(self, NULL, NULL, NULL, PROMPT, 0, 0, "%s", line);
execute(ctx->history, self, m, line, GLOBAL_COMMAND_MODE);
@ -298,8 +308,9 @@ static void prompt_onDraw(ToxWindow *self, Tox *m)
int x2, y2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
ChatContext *ctx = self->chatwin;
@ -311,8 +322,9 @@ static void prompt_onDraw(ToxWindow *self, Tox *m)
curs_set(1);
if (ctx->len > 0)
if (ctx->len > 0) {
mvwprintw(ctx->linewin, 1, 0, "%ls", &ctx->line[ctx->start]);
}
StatusBar *statusbar = self->stb;
@ -392,8 +404,9 @@ static void prompt_onDraw(ToxWindow *self, Tox *m)
statusbar->statusmsg_len = maxlen;
}
if (statusbar->statusmsg[0])
if (statusbar->statusmsg[0]) {
wprintw(statusbar->topline, " : %s", statusbar->statusmsg);
}
pthread_mutex_unlock(&Winthread.lock);
@ -408,9 +421,10 @@ static void prompt_onDraw(ToxWindow *self, Tox *m)
wnoutrefresh(self->window);
if (self->help->active)
if (self->help->active) {
help_onDraw(self);
}
}
static void prompt_onConnectionChange(ToxWindow *self, Tox *m, uint32_t friendnum, TOX_CONNECTION connection_status)
{
@ -419,8 +433,9 @@ static void prompt_onConnectionChange(ToxWindow *self, Tox *m, uint32_t friendnu
char nick[TOX_MAX_NAME_LENGTH] = {0}; /* stop removing this initiation */
get_nick_truncate(m, nick, friendnum);
if (!nick[0])
if (!nick[0]) {
snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);
}
char timefrmt[TIME_STR_SIZE];
get_time_str(timefrmt, sizeof(timefrmt));
@ -482,8 +497,9 @@ void prompt_init_statusbar(ToxWindow *self, Tox *m)
int x2, y2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
exit_toxic_err("failed in prompt_init_statusbar", FATALERR_CURSES);
}
(void) y2;
@ -542,8 +558,9 @@ static void prompt_onInit(ToxWindow *self, Tox *m)
int y2, x2;
getmaxyx(self->window, y2, x2);
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
exit_toxic_err("failed in prompt_onInit", FATALERR_CURSES);
}
ChatContext *ctx = self->chatwin;
ctx->history = subwin(self->window, y2 - CHATBOX_HEIGHT + 1, x2, 0, 0);
@ -552,8 +569,9 @@ static void prompt_onInit(ToxWindow *self, Tox *m)
ctx->log = calloc(1, sizeof(struct chatlog));
ctx->hst = calloc(1, sizeof(struct history));
if (ctx->log == NULL || ctx->hst == NULL)
if (ctx->log == NULL || ctx->hst == NULL) {
exit_toxic_err("failed in prompt_onInit", FATALERR_MEMORY);
}
line_info_init(ctx->hst);
@ -561,16 +579,18 @@ static void prompt_onInit(ToxWindow *self, Tox *m)
char myid[TOX_ADDRESS_SIZE];
tox_self_get_address(m, (uint8_t *) myid);
if (log_enable(self->name, myid, NULL, ctx->log, LOG_PROMPT) == -1)
if (log_enable(self->name, myid, NULL, ctx->log, LOG_PROMPT) == -1) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Warning: Log failed to initialize.");
}
}
scrollok(ctx->history, 0);
wmove(self->window, y2 - CURS_Y_OFFSET, 0);
if (user_settings->show_welcome_msg == SHOW_WELCOME_MSG_ON)
if (user_settings->show_welcome_msg == SHOW_WELCOME_MSG_ON) {
print_welcome_msg(self);
}
}
ToxWindow new_prompt(void)
{
@ -593,8 +613,9 @@ ToxWindow new_prompt(void)
StatusBar *stb = calloc(1, sizeof(StatusBar));
Help *help = calloc(1, sizeof(Help));
if (stb == NULL || chatwin == NULL || help == NULL)
if (stb == NULL || chatwin == NULL || help == NULL) {
exit_toxic_err("failed in new_prompt", FATALERR_MEMORY);
}
ret.chatwin = chatwin;
ret.stb = stb;

View File

@ -39,8 +39,9 @@ static PyObject *python_api_display(PyObject *self, PyObject *args)
{
const char *msg;
if (!PyArg_ParseTuple(args, "s", &msg))
if (!PyArg_ParseTuple(args, "s", &msg)) {
return NULL;
}
api_display(msg);
return Py_None;
@ -51,13 +52,15 @@ static PyObject *python_api_get_nick(PyObject *self, PyObject *args)
char *name;
PyObject *ret;
if (!PyArg_ParseTuple(args, ""))
if (!PyArg_ParseTuple(args, "")) {
return NULL;
}
name = api_get_nick();
if (name == NULL)
if (name == NULL) {
return NULL;
}
ret = Py_BuildValue("s", name);
free(name);
@ -68,8 +71,9 @@ static PyObject *python_api_get_status(PyObject *self, PyObject *args)
{
PyObject *ret = NULL;
if (!PyArg_ParseTuple(args, ""))
if (!PyArg_ParseTuple(args, "")) {
return NULL;
}
switch (api_get_status()) {
case TOX_USER_STATUS_NONE:
@ -93,13 +97,15 @@ static PyObject *python_api_get_status_message(PyObject *self, PyObject *args)
char *status;
PyObject *ret;
if (!PyArg_ParseTuple(args, ""))
if (!PyArg_ParseTuple(args, "")) {
return NULL;
}
status = api_get_status_message();
if (status == NULL)
if (status == NULL) {
return NULL;
}
ret = Py_BuildValue("s", status);
free(status);
@ -113,15 +119,17 @@ static PyObject *python_api_get_all_friends(PyObject *self, PyObject *args)
PyObject *cur, *ret;
char pubkey_buf[TOX_PUBLIC_KEY_SIZE * 2 + 1];
if (!PyArg_ParseTuple(args, ""))
if (!PyArg_ParseTuple(args, "")) {
return NULL;
}
friends = api_get_friendslist();
ret = PyList_New(0);
for (i = 0; i < friends.num_friends; i++) {
for (ii = 0; ii < TOX_PUBLIC_KEY_SIZE; ii++)
for (ii = 0; ii < TOX_PUBLIC_KEY_SIZE; ii++) {
snprintf(pubkey_buf + ii * 2, 3, "%02X", friends.list[i].pub_key[ii] & 0xff);
}
pubkey_buf[TOX_PUBLIC_KEY_SIZE * 2] = '\0';
cur = Py_BuildValue("(s,s)", friends.list[i].name, pubkey_buf);
@ -135,8 +143,9 @@ static PyObject *python_api_send(PyObject *self, PyObject *args)
{
const char *msg;
if (!PyArg_ParseTuple(args, "s", &msg))
if (!PyArg_ParseTuple(args, "s", &msg)) {
return NULL;
}
api_send(msg);
return Py_None;
@ -147,8 +156,9 @@ static PyObject *python_api_execute(PyObject *self, PyObject *args)
int mode;
const char *command;
if (!PyArg_ParseTuple(args, "si", &command, &mode))
if (!PyArg_ParseTuple(args, "si", &command, &mode)) {
return NULL;
}
api_execute(command, mode);
return Py_None;
@ -161,8 +171,9 @@ static PyObject *python_api_register(PyObject *self, PyObject *args)
const char *command, *help;
PyObject *callback;
if (!PyArg_ParseTuple(args, "ssO:register_command", &command, &help, &callback))
if (!PyArg_ParseTuple(args, "ssO:register_command", &command, &help, &callback)) {
return NULL;
}
if (!PyCallable_Check(callback)) {
PyErr_SetString(PyExc_TypeError, "Calback parameter must be callable");
@ -186,21 +197,24 @@ static PyObject *python_api_register(PyObject *self, PyObject *args)
Py_XINCREF(callback);
cur->next = malloc(sizeof(struct python_registered_func));
if (cur->next == NULL)
if (cur->next == NULL) {
return PyErr_NoMemory();
}
command_len = strlen(command);
cur->next->name = malloc(command_len + 1);
if (cur->next->name == NULL)
if (cur->next->name == NULL) {
return PyErr_NoMemory();
}
strncpy(cur->next->name, command, command_len + 1);
help_len = strlen(help);
cur->next->help = malloc(help_len + 1);
if (cur->next->help == NULL)
if (cur->next->help == NULL) {
return PyErr_NoMemory();
}
strncpy(cur->next->help, help, help_len + 1);
cur->next->callback = callback;
@ -252,8 +266,9 @@ void terminate_python(void)
{
struct python_registered_func *cur, *old;
if (python_commands.name != NULL)
if (python_commands.name != NULL) {
free(python_commands.name);
}
for (cur = python_commands.next; cur != NULL;) {
old = cur;
@ -284,19 +299,22 @@ int do_python_command(int num_args, char (*args)[MAX_STR_SIZE])
struct python_registered_func *cur;
for (cur = &python_commands; cur != NULL; cur = cur->next) {
if (cur->name == NULL)
if (cur->name == NULL) {
continue;
}
if (!strcmp(args[0], cur->name)) {
args_strings = PyList_New(0);
for (i = 1; i < num_args; i++)
for (i = 1; i < num_args; i++) {
PyList_Append(args_strings, Py_BuildValue("s", args[i]));
}
callback_args = PyTuple_Pack(1, args_strings);
if (PyObject_CallObject(cur->callback, callback_args) == NULL)
if (PyObject_CallObject(cur->callback, callback_args) == NULL) {
api_display("Exception raised in callback function");
}
return 0;
}
@ -311,9 +329,10 @@ int python_num_registered_handlers(void)
struct python_registered_func *cur;
for (cur = &python_commands; cur != NULL; cur = cur->next) {
if (cur->name != NULL)
if (cur->name != NULL) {
n++;
}
}
return n;
}
@ -340,8 +359,9 @@ void python_draw_handler_help(WINDOW *win)
struct python_registered_func *cur;
for (cur = &python_commands; cur != NULL; cur = cur->next) {
if (cur->name != NULL)
if (cur->name != NULL) {
wprintw(win, " %-29s: %.50s\n", cur->name, cur->help);
}
}
}
#endif /* PYTHON */

View File

@ -52,8 +52,9 @@ int ID_to_QRcode_txt(const char *tox_id, const char *outfile)
{
FILE *fp = fopen(outfile, "wb");
if (fp == NULL)
if (fp == NULL) {
return -1;
}
QRcode *qr_obj = QRcode_encodeString(tox_id, 0, QR_ECLEVEL_L, QR_MODE_8, 0);
@ -65,14 +66,16 @@ int ID_to_QRcode_txt(const char *tox_id, const char *outfile)
size_t width = qr_obj->width;
size_t i, j;
for (i = 0; i < width + BORDER_LEN * 2; ++i)
for (i = 0; i < width + BORDER_LEN * 2; ++i) {
fprintf(fp, "%s", CHAR_1);
}
fprintf(fp, "\n");
for (i = 0; i < width; i += 2) {
for (j = 0; j < BORDER_LEN; ++j)
for (j = 0; j < BORDER_LEN; ++j) {
fprintf(fp, "%s", CHAR_1);
}
const unsigned char *row_1 = qr_obj->data + width * i;
const unsigned char *row_2 = row_1 + width;
@ -81,18 +84,20 @@ int ID_to_QRcode_txt(const char *tox_id, const char *outfile)
bool x = row_1[j] & 1;
bool y = (i + 1) < width ? (row_2[j] & 1) : false;
if (x && y)
if (x && y) {
fprintf(fp, " ");
else if (x)
} else if (x) {
fprintf(fp, "%s", CHAR_2);
else if (y)
} else if (y) {
fprintf(fp, "%s", CHAR_3);
else
} else {
fprintf(fp, "%s", CHAR_1);
}
}
for (j = 0; j < BORDER_LEN; ++j)
for (j = 0; j < BORDER_LEN; ++j) {
fprintf(fp, "%s", CHAR_1);
}
fprintf(fp, "\n");
}

View File

@ -253,15 +253,18 @@ static int key_parse(const char **bind)
int len = strlen(*bind);
if (len > 5) {
if (strncasecmp(*bind, "ctrl+", 5) == 0 && toupper(bind[0][5]) != 'M') /* ctrl+m cannot be used */
if (strncasecmp(*bind, "ctrl+", 5) == 0 && toupper(bind[0][5]) != 'M') { /* ctrl+m cannot be used */
return toupper(bind[0][5]) - 'A' + 1;
}
}
if (strncasecmp(*bind, "tab", 3) == 0)
if (strncasecmp(*bind, "tab", 3) == 0) {
return T_KEY_TAB;
}
if (strncasecmp(*bind, "page", 4) == 0)
if (strncasecmp(*bind, "page", 4) == 0) {
return len == 6 ? KEY_PPAGE : KEY_NPAGE;
}
return -1;
}
@ -304,8 +307,9 @@ int settings_load(struct user_settings *s, const char *patharg)
if (!file_exists(path)) {
FILE *fp = fopen(path, "w");
if (fp == NULL)
if (fp == NULL) {
return -1;
}
fclose(fp);
}
@ -397,29 +401,32 @@ int settings_load(struct user_settings *s, const char *patharg)
int len = strlen(s->download_path);
/* make sure path ends with a '/' */
if (len >= sizeof(s->download_path) - 2)
if (len >= sizeof(s->download_path) - 2) {
s->download_path[0] = '\0';
else if (s->download_path[len - 1] != '/')
} else if (s->download_path[len - 1] != '/') {
strcat(&s->download_path[len - 1], "/");
}
}
if (config_setting_lookup_string(setting, tox_strings.chatlogs_path, &str)) {
snprintf(s->chatlogs_path, sizeof(s->chatlogs_path), "%s", str);
int len = strlen(s->chatlogs_path);
if (len >= sizeof(s->chatlogs_path) - 2)
if (len >= sizeof(s->chatlogs_path) - 2) {
s->chatlogs_path[0] = '\0';
else if (s->chatlogs_path[len - 1] != '/')
} else if (s->chatlogs_path[len - 1] != '/') {
strcat(&s->chatlogs_path[len - 1], "/");
}
}
if (config_setting_lookup_string(setting, tox_strings.avatar_path, &str)) {
snprintf(s->avatar_path, sizeof(s->avatar_path), "%s", str);
int len = strlen(str);
if (len >= sizeof(s->avatar_path))
if (len >= sizeof(s->avatar_path)) {
s->avatar_path[0] = '\0';
}
}
#ifdef PYTHON
@ -427,11 +434,12 @@ int settings_load(struct user_settings *s, const char *patharg)
snprintf(s->autorun_path, sizeof(s->autorun_path), "%s", str);
int len = strlen(str);
if (len >= sizeof(s->autorun_path) - 2)
if (len >= sizeof(s->autorun_path) - 2) {
s->autorun_path[0] = '\0';
else if (s->autorun_path[len - 1] != '/')
} else if (s->autorun_path[len - 1] != '/') {
strcat(&s->autorun_path[len - 1], "/");
}
}
#endif
@ -439,48 +447,60 @@ int settings_load(struct user_settings *s, const char *patharg)
snprintf(s->password_eval, sizeof(s->password_eval), "%s", str);
int len = strlen(str);
if (len >= sizeof(s->password_eval))
if (len >= sizeof(s->password_eval)) {
s->password_eval[0] = '\0';
}
}
}
/* keys */
if ((setting = config_lookup(cfg, key_strings.self)) != NULL) {
const char *tmp = NULL;
if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp))
if (config_setting_lookup_string(setting, key_strings.next_tab, &tmp)) {
set_key_binding(&s->key_next_tab, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp))
if (config_setting_lookup_string(setting, key_strings.prev_tab, &tmp)) {
set_key_binding(&s->key_prev_tab, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp))
if (config_setting_lookup_string(setting, key_strings.scroll_line_up, &tmp)) {
set_key_binding(&s->key_scroll_line_up, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp))
if (config_setting_lookup_string(setting, key_strings.scroll_line_down, &tmp)) {
set_key_binding(&s->key_scroll_line_down, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp))
if (config_setting_lookup_string(setting, key_strings.half_page_up, &tmp)) {
set_key_binding(&s->key_half_page_up, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp))
if (config_setting_lookup_string(setting, key_strings.half_page_down, &tmp)) {
set_key_binding(&s->key_half_page_down, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp))
if (config_setting_lookup_string(setting, key_strings.page_bottom, &tmp)) {
set_key_binding(&s->key_page_bottom, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp))
if (config_setting_lookup_string(setting, key_strings.peer_list_up, &tmp)) {
set_key_binding(&s->key_peer_list_up, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp))
if (config_setting_lookup_string(setting, key_strings.peer_list_down, &tmp)) {
set_key_binding(&s->key_peer_list_down, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp))
if (config_setting_lookup_string(setting, key_strings.toggle_peerlist, &tmp)) {
set_key_binding(&s->key_toggle_peerlist, &tmp);
}
if (config_setting_lookup_string(setting, key_strings.toggle_pastemode, &tmp))
if (config_setting_lookup_string(setting, key_strings.toggle_pastemode, &tmp)) {
set_key_binding(&s->key_toggle_pastemode, &tmp);
}
}
#ifdef AUDIO
@ -501,51 +521,59 @@ int settings_load(struct user_settings *s, const char *patharg)
if ((setting = config_lookup(cfg, sound_strings.self)) != NULL) {
if ((config_setting_lookup_string(setting, sound_strings.notif_error, &str) != CONFIG_TRUE) ||
!set_sound(notif_error, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(notif_error, PACKAGE_DATADIR "/sounds/ToxicError.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.user_log_in, &str) ||
!set_sound(user_log_in, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(user_log_in, PACKAGE_DATADIR "/sounds/ToxicContactOnline.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.user_log_out, &str) ||
!set_sound(user_log_out, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(user_log_out, PACKAGE_DATADIR "/sounds/ToxicContactOffline.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.call_incoming, &str) ||
!set_sound(call_incoming, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(call_incoming, PACKAGE_DATADIR "/sounds/ToxicIncomingCall.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.call_outgoing, &str) ||
!set_sound(call_outgoing, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(call_outgoing, PACKAGE_DATADIR "/sounds/ToxicOutgoingCall.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.generic_message, &str) ||
!set_sound(generic_message, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(generic_message, PACKAGE_DATADIR "/sounds/ToxicRecvMessage.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.transfer_pending, &str) ||
!set_sound(transfer_pending, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(transfer_pending, PACKAGE_DATADIR "/sounds/ToxicTransferStart.wav");
}
}
if (!config_setting_lookup_string(setting, sound_strings.transfer_completed, &str) ||
!set_sound(transfer_completed, str)) {
if (str && strcasecmp(str, NO_SOUND) != 0)
if (str && strcasecmp(str, NO_SOUND) != 0) {
set_sound(transfer_completed, PACKAGE_DATADIR "/sounds/ToxicTransferComplete.wav");
}
}
} else {
set_sound(notif_error, PACKAGE_DATADIR "/sounds/ToxicError.wav");
set_sound(user_log_in, PACKAGE_DATADIR "/sounds/ToxicContactOnline.wav");

View File

@ -99,10 +99,11 @@ static char *read_into_dyn_buffer (FILE *stream)
while ((input_ptr = fgets(buffer, BUFFER_SIZE, stream)) != NULL) {
int length = dyn_buffer_size + strlen(input_ptr);
if (dyn_buffer)
if (dyn_buffer) {
dyn_buffer = (char *) realloc(dyn_buffer, length);
else
} else {
dyn_buffer = (char *) malloc(length);
}
strcpy(dyn_buffer + dyn_buffer_size - 1, input_ptr);
dyn_buffer_size = length;
@ -118,25 +119,29 @@ static char *extract_socket_path (const char *info)
char *end = NULL;
char *path = NULL;
if (!pos)
if (!pos) {
return NULL;
}
pos += strlen(search_str);
pos = strchr(pos, PATH_SEP_C);
if (!pos)
if (!pos) {
return NULL;
}
end = strchr(pos, '\n');
if (!end)
if (!end) {
return NULL;
}
*end = '\0';
end = strrchr(pos, '.');
if (!end)
if (!end) {
return NULL;
}
path = (char *) malloc(end - pos + 1);
*end = '\0';
@ -151,32 +156,37 @@ static int detect_gnu_screen ()
socket_name = getenv("STY");
if (!socket_name)
if (!socket_name) {
goto nomplex;
}
session_info_stream = popen("env LC_ALL=C screen -ls", "r");
if (!session_info_stream)
if (!session_info_stream) {
goto nomplex;
}
dyn_buffer = read_into_dyn_buffer(session_info_stream);
if (!dyn_buffer)
if (!dyn_buffer) {
goto nomplex;
}
pclose(session_info_stream);
session_info_stream = NULL;
socket_path = extract_socket_path(dyn_buffer);
if (!socket_path)
if (!socket_path) {
goto nomplex;
}
free(dyn_buffer);
dyn_buffer = NULL;
if (strlen(socket_path) + strlen(PATH_SEP_S) + strlen(socket_name) >= sizeof(mplex_data))
if (strlen(socket_path) + strlen(PATH_SEP_S) + strlen(socket_name) >= sizeof(mplex_data)) {
goto nomplex;
}
strcpy(mplex_data, socket_path);
strcat(mplex_data, PATH_SEP_S);
@ -189,14 +199,17 @@ static int detect_gnu_screen ()
nomplex:
if (session_info_stream)
if (session_info_stream) {
pclose(session_info_stream);
}
if (dyn_buffer)
if (dyn_buffer) {
free(dyn_buffer);
}
if (socket_path)
if (socket_path) {
free(socket_path);
}
return 0;
}
@ -205,14 +218,16 @@ static int detect_tmux ()
{
char *tmux_env = getenv("TMUX"), *pos;
if (!tmux_env)
if (!tmux_env) {
return 0;
}
/* find second separator */
pos = strrchr(tmux_env, ',');
if (!pos)
if (!pos) {
return 0;
}
/* store the session id for later use */
snprintf(mplex_data, sizeof(mplex_data), "$%s", pos + 1);
@ -239,13 +254,15 @@ static int detect_mplex ()
*/
static int gnu_screen_is_detached()
{
if (mplex != MPLEX_SCREEN)
if (mplex != MPLEX_SCREEN) {
return 0;
}
struct stat sb;
if (stat (mplex_data, &sb) != 0)
if (stat(mplex_data, &sb) != 0) {
return 0;
}
/* execution permission (x) means attached */
return !(sb.st_mode & S_IXUSR);
@ -256,8 +273,9 @@ static int gnu_screen_is_detached ()
*/
static int tmux_is_detached()
{
if (mplex != MPLEX_TMUX)
if (mplex != MPLEX_TMUX) {
return 0;
}
FILE *session_info_stream = NULL;
char *dyn_buffer = NULL, *search_str = NULL;
@ -268,13 +286,15 @@ static int tmux_is_detached ()
/* get the number of attached clients for each session */
session_info_stream = popen("tmux list-sessions -F \"#{session_id} #{session_attached}\"", "r");
if (!session_info_stream)
if (!session_info_stream) {
goto fail;
}
dyn_buffer = read_into_dyn_buffer(session_info_stream);
if (!dyn_buffer)
if (!dyn_buffer) {
goto fail;
}
pclose(session_info_stream);
session_info_stream = NULL;
@ -285,13 +305,15 @@ static int tmux_is_detached ()
strcpy(search_str + 1, mplex_data);
/* do the search */
if (strncmp (dyn_buffer, search_str + 1, numstr_len) == 0)
if (strncmp(dyn_buffer, search_str + 1, numstr_len) == 0) {
entry_pos = dyn_buffer;
else
} else {
entry_pos = strstr(dyn_buffer, search_str);
}
if (! entry_pos)
if (! entry_pos) {
goto fail;
}
entry_pos = strchr(entry_pos, ' ') + 1;
detached = strncmp(entry_pos, "0\n", 2) == 0;
@ -306,14 +328,17 @@ static int tmux_is_detached ()
fail:
if (session_info_stream)
if (session_info_stream) {
pclose(session_info_stream);
}
if (dyn_buffer)
if (dyn_buffer) {
free(dyn_buffer);
}
if (search_str)
if (search_str) {
free(search_str);
}
return 0;
}
@ -337,8 +362,9 @@ static void mplex_timer_handler (Tox *m)
TOX_USER_STATUS current_status, new_status;
const char *new_note;
if (mplex == MPLEX_NONE)
if (mplex == MPLEX_NONE) {
return;
}
int detached = mplex_is_detached();
@ -360,8 +386,9 @@ static void mplex_timer_handler (Tox *m)
prev_note[slen] = '\0';
pthread_mutex_unlock(&Winthread.lock);
new_note = user_settings->mplex_away_note;
} else
} else {
return;
}
char argv[3][MAX_STR_SIZE];
strcpy(argv[0], "/status");
@ -390,18 +417,22 @@ void *mplex_timer_thread(void *data)
int init_mplex_away_timer(Tox *m)
{
if (! detect_mplex ())
if (! detect_mplex()) {
return 0;
}
if (! user_settings->mplex_away)
if (! user_settings->mplex_away) {
return 0;
}
/* status access mutex */
if (pthread_mutex_init (&status_lock, NULL) != 0)
if (pthread_mutex_init(&status_lock, NULL) != 0) {
return -1;
}
if (pthread_create(&mplex_tid, NULL, mplex_timer_thread, (void *) m) != 0)
if (pthread_create(&mplex_tid, NULL, mplex_timer_thread, (void *) m) != 0) {
return -1;
}
return 0;
}

View File

@ -229,9 +229,10 @@ static void init_term(void)
start_color();
if (user_settings->colour_theme == NATIVE_COLS) {
if (assume_default_colors(-1, -1) == OK)
if (assume_default_colors(-1, -1) == OK) {
bg_color = -1;
}
}
init_pair(0, COLOR_WHITE, COLOR_BLACK);
init_pair(1, COLOR_GREEN, bg_color);
@ -267,13 +268,15 @@ static void queue_init_message(const char *msg, ...)
char **new_msgs = realloc(init_messages.msgs, sizeof(char *) * init_messages.num);
if (new_msgs == NULL)
if (new_msgs == NULL) {
exit_toxic_err("Failed in queue_init_message", FATALERR_MEMORY);
}
new_msgs[i] = malloc(MAX_STR_SIZE);
if (new_msgs[i] == NULL)
if (new_msgs[i] == NULL) {
exit_toxic_err("Failed in queue_init_message", FATALERR_MEMORY);
}
snprintf(new_msgs[i], MAX_STR_SIZE, "%s", frmt_msg);
init_messages.msgs = new_msgs;
@ -282,13 +285,15 @@ static void queue_init_message(const char *msg, ...)
/* called after messages have been printed to prompt and are no longer needed */
static void cleanup_init_messages(void)
{
if (init_messages.num <= 0)
if (init_messages.num <= 0) {
return;
}
int i;
for (i = 0; i < init_messages.num; ++i)
for (i = 0; i < init_messages.num; ++i) {
free(init_messages.msgs[i]);
}
free(init_messages.msgs);
}
@ -297,9 +302,10 @@ static void print_init_messages(ToxWindow *toxwin)
{
int i;
for (i = 0; i < init_messages.num; ++i)
for (i = 0; i < init_messages.num; ++i) {
line_info_add(toxwin, NULL, NULL, NULL, SYS_MSG, 0, 0, init_messages.msgs[i]);
}
}
static void load_friendlist(Tox *m)
{
@ -358,8 +364,9 @@ static int password_prompt(char *buf, int size)
nflags.c_lflag &= ~ECHO;
nflags.c_lflag |= ECHONL;
if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0)
if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) {
return 0;
}
const char *p = fgets(buf, size, stdin);
int len = strlen(buf);
@ -367,8 +374,9 @@ static int password_prompt(char *buf, int size)
/* re-enable terminal echo */
tcsetattr(fileno(stdin), TCSANOW, &oflags);
if (p == NULL || len <= 1)
if (p == NULL || len <= 1) {
return 0;
}
/* eat overflowed stdin and return error */
if (buf[--len] != '\n') {
@ -438,15 +446,17 @@ static void first_time_encrypt(const char *msg)
fflush(stdout);
if (!strcasecmp(ch, "y\n") || !strcasecmp(ch, "n\n") || !strcasecmp(ch, "yes\n")
|| !strcasecmp(ch, "no\n") || !strcasecmp(ch, "q\n"))
|| !strcasecmp(ch, "no\n") || !strcasecmp(ch, "q\n")) {
break;
}
} while (fgets(ch, sizeof(ch), stdin));
printf("\n");
if (ch[0] == 'q' || ch[0] == 'Q')
if (ch[0] == 'q' || ch[0] == 'Q') {
exit(0);
}
if (ch[0] == 'y' || ch[0] == 'Y') {
int len = 0;
@ -460,8 +470,9 @@ static void first_time_encrypt(const char *msg)
len = password_prompt(user_password.pass, sizeof(user_password.pass));
user_password.len = len;
if (strcasecmp(user_password.pass, "q") == 0)
if (strcasecmp(user_password.pass, "q") == 0) {
exit(0);
}
if (string_is_empty(passconfirm) && (len < MIN_PASSWORD_LEN || len > MAX_PASSWORD_LEN)) {
printf("Password must be between %d and %d characters long. ", MIN_PASSWORD_LEN, MAX_PASSWORD_LEN);
@ -604,11 +615,13 @@ static void init_tox_options(struct Tox_Options *tox_opts)
tox_options_set_proxy_type(tox_opts, arg_opts.proxy_type);
tox_options_set_tcp_port(tox_opts, arg_opts.tcp_port);
if (!tox_options_get_ipv6_enabled(tox_opts))
if (!tox_options_get_ipv6_enabled(tox_opts)) {
queue_init_message("Forcing IPv4 connection");
}
if (tox_options_get_tcp_port(tox_opts))
if (tox_options_get_tcp_port(tox_opts)) {
queue_init_message("TCP relaying enabled on port %d", tox_options_get_tcp_port(tox_opts));
}
if (tox_options_get_proxy_type(tox_opts) != TOX_PROXY_TYPE_NONE) {
tox_options_set_proxy_port(tox_opts, arg_opts.proxy_port);
@ -662,14 +675,16 @@ static Tox *load_tox(char *data_path, struct Tox_Options *tox_opts, TOX_ERR_NEW
exit_toxic_err("failed in load_tox", FATALERR_ENCRYPT);
}
if (arg_opts.unencrypt_data && is_encrypted)
if (arg_opts.unencrypt_data && is_encrypted) {
queue_init_message("Data file '%s' has been unencrypted", data_path);
else if (arg_opts.unencrypt_data)
} else if (arg_opts.unencrypt_data) {
queue_init_message("Warning: passed --unencrypt-data option with unencrypted data file '%s'", data_path);
}
if (is_encrypted) {
if (!arg_opts.unencrypt_data)
if (!arg_opts.unencrypt_data) {
user_password.data_is_encrypted = true;
}
size_t pwlen = 0;
int pweval = user_settings->password_eval[0];
@ -746,19 +761,22 @@ static Tox *load_tox(char *data_path, struct Tox_Options *tox_opts, TOX_ERR_NEW
fclose(fp);
} else { /* Data file does not/should not exist */
if (file_exists(data_path))
if (file_exists(data_path)) {
exit_toxic_err("failed in load_tox", FATALERR_FILEOP);
}
tox_options_set_savedata_type(tox_opts, TOX_SAVEDATA_TYPE_NONE);
m = tox_new(tox_opts, new_err);
if (m == NULL)
if (m == NULL) {
return NULL;
}
if (store_data(m, data_path) == -1)
if (store_data(m, data_path) == -1) {
exit_toxic_err("failed in load_tox", FATALERR_FILEOP);
}
}
return m;
}
@ -768,8 +786,9 @@ static Tox *load_toxic(char *data_path)
TOX_ERR_OPTIONS_NEW options_new_err;
struct Tox_Options *tox_opts = tox_options_new(&options_new_err);
if (!tox_opts)
if (!tox_opts) {
exit_toxic_err("tox_options_new returned fatal error", options_new_err);
}
init_tox_options(tox_opts);
@ -782,18 +801,21 @@ static Tox *load_toxic(char *data_path)
m = load_tox(data_path, tox_opts, &new_err);
}
if (!m)
if (!m) {
exit_toxic_err("tox_new returned fatal error", new_err);
}
if (new_err != TOX_ERR_NEW_OK)
if (new_err != TOX_ERR_NEW_OK) {
queue_init_message("tox_new returned non-fatal error %d", new_err);
}
init_tox_callbacks(m);
load_friendlist(m);
load_blocklist(BLOCK_FILE);
if (tox_self_get_name_size(m) == 0)
if (tox_self_get_name_size(m) == 0) {
tox_self_set_name(m, (uint8_t *) "Toxic User", strlen("Toxic User"), NULL);
}
tox_options_free(tox_opts);
return m;
@ -854,9 +876,10 @@ void *thread_cqueue(void *data)
ToxWindow *toxwin = get_window_ptr(i);
if (toxwin != NULL && toxwin->is_chat
&& get_friend_connection_status(toxwin->num) != TOX_CONNECTION_NONE)
&& get_friend_connection_status(toxwin->num) != TOX_CONNECTION_NONE) {
cqueue_try_send(toxwin, m);
}
}
pthread_mutex_unlock(&Winthread.lock);
@ -956,8 +979,9 @@ static void parse_args(int argc, char *argv[])
case 'c':
snprintf(arg_opts.config_path, sizeof(arg_opts.config_path), "%s", optarg);
if (!file_exists(arg_opts.config_path))
if (!file_exists(arg_opts.config_path)) {
queue_init_message("Config file not found");
}
break;
@ -973,22 +997,26 @@ static void parse_args(int argc, char *argv[])
case 'f':
arg_opts.use_custom_data = 1;
if (DATA_FILE)
if (DATA_FILE) {
free(DATA_FILE);
}
if (BLOCK_FILE)
if (BLOCK_FILE) {
free(BLOCK_FILE);
}
DATA_FILE = malloc(strlen(optarg) + 1);
strcpy(DATA_FILE, optarg);
if (DATA_FILE == NULL)
if (DATA_FILE == NULL) {
exit_toxic_err("failed in parse_args", FATALERR_MEMORY);
}
BLOCK_FILE = malloc(strlen(optarg) + strlen("-blocklist") + 1);
if (BLOCK_FILE == NULL)
if (BLOCK_FILE == NULL) {
exit_toxic_err("failed in parse_args", FATALERR_MEMORY);
}
strcpy(BLOCK_FILE, optarg);
strcat(BLOCK_FILE, "-blocklist");
@ -1010,13 +1038,15 @@ static void parse_args(int argc, char *argv[])
arg_opts.proxy_type = TOX_PROXY_TYPE_SOCKS5;
snprintf(arg_opts.proxy_address, sizeof(arg_opts.proxy_address), "%s", optarg);
if (++optind > argc || argv[optind - 1][0] == '-')
if (++optind > argc || argv[optind - 1][0] == '-') {
exit_toxic_err("Proxy error", FATALERR_PROXY);
}
port = strtol(argv[optind - 1], NULL, 10);
if (port <= 0 || port > MAX_PORT_RANGE)
if (port <= 0 || port > MAX_PORT_RANGE) {
exit_toxic_err("Proxy error", FATALERR_PROXY);
}
arg_opts.proxy_port = port;
break;
@ -1025,13 +1055,15 @@ static void parse_args(int argc, char *argv[])
arg_opts.proxy_type = TOX_PROXY_TYPE_HTTP;
snprintf(arg_opts.proxy_address, sizeof(arg_opts.proxy_address), "%s", optarg);
if (++optind > argc || argv[optind - 1][0] == '-')
if (++optind > argc || argv[optind - 1][0] == '-') {
exit_toxic_err("Proxy error", FATALERR_PROXY);
}
port = strtol(argv[optind - 1], NULL, 10);
if (port <= 0 || port > MAX_PORT_RANGE)
if (port <= 0 || port > MAX_PORT_RANGE) {
exit_toxic_err("Proxy error", FATALERR_PROXY);
}
arg_opts.proxy_port = port;
break;
@ -1039,8 +1071,9 @@ static void parse_args(int argc, char *argv[])
case 'r':
snprintf(arg_opts.nameserver_path, sizeof(arg_opts.nameserver_path), "%s", optarg);
if (!file_exists(arg_opts.nameserver_path))
if (!file_exists(arg_opts.nameserver_path)) {
queue_init_message("nameserver list not found");
}
break;
@ -1051,8 +1084,9 @@ static void parse_args(int argc, char *argv[])
case 'T':
port = strtol(optarg, NULL, 10);
if (port <= 0 || port > MAX_PORT_RANGE)
if (port <= 0 || port > MAX_PORT_RANGE) {
port = 14191;
}
arg_opts.tcp_port = port;
break;
@ -1085,28 +1119,34 @@ static int rename_old_profile(const char *user_config_dir)
char old_data_file[strlen(user_config_dir) + strlen(CONFIGDIR) + strlen(OLD_DATA_NAME) + 1];
snprintf(old_data_file, sizeof(old_data_file), "%s%s%s", user_config_dir, CONFIGDIR, OLD_DATA_NAME);
if (!file_exists(old_data_file))
if (!file_exists(old_data_file)) {
return 0;
}
if (file_exists(DATA_FILE))
if (file_exists(DATA_FILE)) {
return 0;
}
if (rename(old_data_file, DATA_FILE) != 0)
if (rename(old_data_file, DATA_FILE) != 0) {
return -1;
}
queue_init_message("Data file has been moved to %s", DATA_FILE);
char old_data_blocklist[strlen(user_config_dir) + strlen(CONFIGDIR) + strlen(OLD_DATA_BLOCKLIST_NAME) + 1];
snprintf(old_data_blocklist, sizeof(old_data_blocklist), "%s%s%s", user_config_dir, CONFIGDIR, OLD_DATA_BLOCKLIST_NAME);
if (!file_exists(old_data_blocklist))
if (!file_exists(old_data_blocklist)) {
return 0;
}
if (file_exists(BLOCK_FILE))
if (file_exists(BLOCK_FILE)) {
return 0;
}
if (rename(old_data_blocklist, BLOCK_FILE) != 0)
if (rename(old_data_blocklist, BLOCK_FILE) != 0) {
return -1;
}
return 0;
}
@ -1117,13 +1157,15 @@ static int rename_old_profile(const char *user_config_dir)
*/
static void init_default_data_files(void)
{
if (arg_opts.use_custom_data)
if (arg_opts.use_custom_data) {
return;
}
char *user_config_dir = get_user_config_dir();
if (user_config_dir == NULL)
if (user_config_dir == NULL) {
exit_toxic_err("failed in init_default_data_files()", FATALERR_FILEOP);
}
int config_err = create_user_config_dirs(user_config_dir);
@ -1131,14 +1173,16 @@ static void init_default_data_files(void)
DATA_FILE = strdup(DATANAME);
BLOCK_FILE = strdup(BLOCKNAME);
if (DATA_FILE == NULL || BLOCK_FILE == NULL)
if (DATA_FILE == NULL || BLOCK_FILE == NULL) {
exit_toxic_err("failed in init_default_data_files()", FATALERR_MEMORY);
}
} else {
DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen(DATANAME) + 1);
BLOCK_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen(BLOCKNAME) + 1);
if (DATA_FILE == NULL || BLOCK_FILE == NULL)
if (DATA_FILE == NULL || BLOCK_FILE == NULL) {
exit_toxic_err("failed in init_default_data_files()", FATALERR_MEMORY);
}
strcpy(DATA_FILE, user_config_dir);
strcat(DATA_FILE, CONFIGDIR);
@ -1150,8 +1194,9 @@ static void init_default_data_files(void)
}
/* For backwards compatibility with old toxic profile names. TODO: remove this some day */
if (rename_old_profile(user_config_dir) == -1)
if (rename_old_profile(user_config_dir) == -1) {
queue_init_message("Warning: Profile backwards compatibility failed.");
}
free(user_config_dir);
}
@ -1174,8 +1219,9 @@ int main(int argc, char **argv)
parse_args(argc, argv);
/* Use the -b flag to enable stderr */
if (!arg_opts.debug)
if (!arg_opts.debug) {
freopen("/dev/null", "w", stderr);
}
if (arg_opts.encrypt_data && arg_opts.unencrypt_data) {
arg_opts.encrypt_data = 0;
@ -1190,17 +1236,19 @@ int main(int argc, char **argv)
bool datafile_exists = file_exists(DATA_FILE);
if (!datafile_exists && !arg_opts.unencrypt_data)
if (!datafile_exists && !arg_opts.unencrypt_data) {
first_time_encrypt("Creating new data file. Would you like to encrypt it? Y/n (q to quit)");
else if (arg_opts.encrypt_data)
} else if (arg_opts.encrypt_data) {
first_time_encrypt("Encrypt existing data file? Y/n (q to quit)");
}
/* init user_settings struct and load settings from conf file */
user_settings = calloc(1, sizeof(struct user_settings));
if (user_settings == NULL)
if (user_settings == NULL) {
exit_toxic_err("failed in main", FATALERR_MEMORY);
}
const char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL;
@ -1221,15 +1269,17 @@ int main(int argc, char **argv)
#ifdef X11
if (init_xtra(DnD_callback) == -1)
if (init_xtra(DnD_callback) == -1) {
queue_init_message("X failed to initialize");
}
#endif
Tox *m = load_toxic(DATA_FILE);
if (arg_opts.encrypt_data && !datafile_exists)
if (arg_opts.encrypt_data && !datafile_exists) {
arg_opts.encrypt_data = 0;
}
init_term();
@ -1239,15 +1289,18 @@ int main(int argc, char **argv)
load_groups(prompt, m);
/* thread for ncurses stuff */
if (pthread_mutex_init(&Winthread.lock, NULL) != 0)
if (pthread_mutex_init(&Winthread.lock, NULL) != 0) {
exit_toxic_err("failed in main", FATALERR_MUTEX_INIT);
}
if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0)
if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0) {
exit_toxic_err("failed in main", FATALERR_THREAD_CREATE);
}
/* thread for message queue */
if (pthread_create(&cqueue_thread.tid, NULL, thread_cqueue, (void *) m) != 0)
if (pthread_create(&cqueue_thread.tid, NULL, thread_cqueue, (void *) m) != 0) {
exit_toxic_err("failed in main", FATALERR_THREAD_CREATE);
}
#ifdef AUDIO
@ -1259,16 +1312,18 @@ int main(int argc, char **argv)
#endif /* VIDEO */
/* AV thread */
if (pthread_create(&av_thread.tid, NULL, thread_av, (void *) av) != 0)
if (pthread_create(&av_thread.tid, NULL, thread_av, (void *) av) != 0) {
exit_toxic_err("failed in main", FATALERR_THREAD_CREATE);
}
set_primary_device(input, user_settings->audio_in_dev);
set_primary_device(output, user_settings->audio_out_dev);
#elif SOUND_NOTIFY
if ( init_devices() == de_InternalError )
if (init_devices() == de_InternalError) {
queue_init_message("Failed to init audio devices");
}
#endif /* AUDIO */
@ -1282,8 +1337,9 @@ int main(int argc, char **argv)
init_notify(60, 3000);
/* screen/tmux auto-away timer */
if (init_mplex_away_timer(m) == -1)
if (init_mplex_away_timer(m) == -1) {
queue_init_message("Failed to init mplex auto-away.");
}
int nodeslist_ret = load_DHT_nodeslist();
@ -1312,8 +1368,9 @@ int main(int argc, char **argv)
if (timed_out(last_save, AUTOSAVE_FREQ)) {
pthread_mutex_lock(&Winthread.lock);
if (store_data(m, DATA_FILE) != 0)
if (store_data(m, DATA_FILE) != 0) {
line_info_add(prompt, NULL, NULL, NULL, SYS_MSG, 0, RED, "WARNING: Failed to save to data file");
}
pthread_mutex_unlock(&Winthread.lock);

View File

@ -33,8 +33,9 @@
/* Adds char to line at pos. Return 0 on success, -1 if line buffer is full */
int add_char_to_buf(ChatContext *ctx, wint_t ch)
{
if (ctx->len >= MAX_STR_SIZE - 1)
if (ctx->len >= MAX_STR_SIZE - 1) {
return -1;
}
wmemmove(&ctx->line[ctx->pos + 1], &ctx->line[ctx->pos], ctx->len - ctx->pos);
ctx->line[ctx->pos++] = ch;
@ -46,8 +47,9 @@ int add_char_to_buf(ChatContext *ctx, wint_t ch)
/* Deletes the character before pos. Return 0 on success, -1 if nothing to delete */
int del_char_buf_bck(ChatContext *ctx)
{
if (ctx->pos <= 0)
if (ctx->pos <= 0) {
return -1;
}
wmemmove(&ctx->line[ctx->pos - 1], &ctx->line[ctx->pos], ctx->len - ctx->pos);
--ctx->pos;
@ -59,8 +61,9 @@ int del_char_buf_bck(ChatContext *ctx)
/* Deletes the character at pos. Return 0 on success, -1 if nothing to delete. */
int del_char_buf_frnt(ChatContext *ctx)
{
if (ctx->pos >= ctx->len)
if (ctx->pos >= ctx->len) {
return -1;
}
wmemmove(&ctx->line[ctx->pos], &ctx->line[ctx->pos + 1], ctx->len - ctx->pos - 1);
ctx->line[--ctx->len] = L'\0';
@ -72,8 +75,9 @@ int del_char_buf_frnt(ChatContext *ctx)
Return 0 on success, -1 if noting to discard. */
int discard_buf(ChatContext *ctx)
{
if (ctx->pos <= 0)
if (ctx->pos <= 0) {
return -1;
}
ctx->yank_len = ctx->pos;
wmemcpy(ctx->yank, ctx->line, ctx->yank_len);
@ -92,8 +96,9 @@ int discard_buf(ChatContext *ctx)
Return 0 on success, -1 if nothing to kill. */
int kill_buf(ChatContext *ctx)
{
if (ctx->len <= ctx->pos)
if (ctx->len <= ctx->pos) {
return -1;
}
ctx->yank_len = ctx->len - ctx->pos;
wmemcpy(ctx->yank, &ctx->line[ctx->pos], ctx->yank_len);
@ -109,11 +114,13 @@ int kill_buf(ChatContext *ctx)
Return 0 on success, -1 if yank buffer is empty or too long */
int yank_buf(ChatContext *ctx)
{
if (!ctx->yank[0])
if (!ctx->yank[0]) {
return -1;
}
if (ctx->yank_len + ctx->len >= MAX_STR_SIZE)
if (ctx->yank_len + ctx->len >= MAX_STR_SIZE) {
return -1;
}
wmemmove(&ctx->line[ctx->pos + ctx->yank_len], &ctx->line[ctx->pos], ctx->len - ctx->pos);
wmemcpy(&ctx->line[ctx->pos], ctx->yank, ctx->yank_len);
@ -130,8 +137,9 @@ int yank_buf(ChatContext *ctx)
Return 0 on success, -1 if nothing to delete */
int del_word_buf(ChatContext *ctx)
{
if (ctx->len == 0 || ctx->pos == 0)
if (ctx->len == 0 || ctx->pos == 0) {
return -1;
}
int i = ctx->pos, count = 0;
@ -169,18 +177,21 @@ void reset_buf(ChatContext *ctx)
/* Removes trailing spaces and newlines from line. */
void rm_trailing_spaces_buf(ChatContext *ctx)
{
if (ctx->len <= 0)
if (ctx->len <= 0) {
return;
}
if (ctx->line[ctx->len - 1] != ' ' && ctx->line[ctx->len - 1] != L'')
if (ctx->line[ctx->len - 1] != ' ' && ctx->line[ctx->len - 1] != L'') {
return;
}
int i;
for (i = ctx->len - 1; i >= 0; --i) {
if (ctx->line[i] != ' ' && ctx->line[i] != L'')
if (ctx->line[i] != ' ' && ctx->line[i] != L'') {
break;
}
}
ctx->len = i + 1;
ctx->pos = MIN(ctx->pos, ctx->len);
@ -195,8 +206,9 @@ static void shift_hist_back(ChatContext *ctx)
int i;
int n = MAX_LINE_HIST - HIST_PURGE;
for (i = 0; i < n; ++i)
for (i = 0; i < n; ++i) {
wmemcpy(ctx->ln_history[i], ctx->ln_history[i + HIST_PURGE], MAX_STR_SIZE);
}
ctx->hst_tot = n;
}
@ -204,11 +216,13 @@ static void shift_hist_back(ChatContext *ctx)
/* adds a line to the ln_history buffer at hst_pos and sets hst_pos to end of history. */
void add_line_to_hist(ChatContext *ctx)
{
if (ctx->len >= MAX_STR_SIZE)
if (ctx->len >= MAX_STR_SIZE) {
return;
}
if (ctx->hst_tot >= MAX_LINE_HIST)
if (ctx->hst_tot >= MAX_LINE_HIST) {
shift_hist_back(ctx);
}
++ctx->hst_tot;
ctx->hst_pos = ctx->hst_tot;
@ -248,15 +262,17 @@ void strsubst(char *str, char old, char new)
int i;
for (i = 0; str[i] != '\0'; ++i)
if (str[i] == old)
if (str[i] == old) {
str[i] = new;
}
}
void wstrsubst(wchar_t *str, wchar_t old, wchar_t new)
{
int i;
for (i = 0; str[i] != L'\0'; ++i)
if (str[i] == old)
if (str[i] == old) {
str[i] = new;
}
}

View File

@ -89,9 +89,10 @@ void terminate_video()
stop_video_transmission(this_call, i);
if ( this_call->vout_idx != -1 )
if (this_call->vout_idx != -1) {
close_video_device(vdt_output, this_call->vout_idx);
}
}
terminate_video_devices();
}
@ -112,12 +113,13 @@ void read_video_device_callback(int16_t width, int16_t height, const uint8_t *y,
if (toxav_video_send_frame(CallControl.av, friend_number, width, height, y, u, v, &error) == false) {
line_info_add(CallControl.prompt, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to send video frame");
if ( error == TOXAV_ERR_SEND_FRAME_NULL )
if (error == TOXAV_ERR_SEND_FRAME_NULL) {
line_info_add(CallControl.prompt, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to capture video frame");
else if ( error == TOXAV_ERR_SEND_FRAME_INVALID )
} else if (error == TOXAV_ERR_SEND_FRAME_INVALID) {
line_info_add(CallControl.prompt, NULL, NULL, NULL, SYS_MSG, 0, 0, "Failed to prepare video frame");
}
}
}
void write_video_device_callback(uint32_t friend_number, uint16_t width, uint16_t height,
uint8_t const *y, uint8_t const *u, uint8_t const *v,
@ -196,8 +198,9 @@ void callback_recv_video_starting(uint32_t friend_number)
{
Call *this_call = &CallControl.calls[friend_number];
if ( this_call->vout_idx != -1 )
if (this_call->vout_idx != -1) {
return;
}
open_primary_video_device(vdt_output, &this_call->vout_idx);
}
@ -269,10 +272,11 @@ void cmd_video(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[M
goto on_error;
}
if ( this_call->vin_idx == -1 )
if (this_call->vin_idx == -1) {
callback_video_starting(self->num);
else
} else {
callback_video_end(self->num);
}
return;
on_error:
@ -284,19 +288,24 @@ void cmd_list_video_devices(WINDOW *window, ToxWindow *self, Tox *m, int argc, c
const char *error_str;
if (argc != 1) {
if ( argc < 1 ) error_str = "Type must be specified!";
else error_str = "Only one argument allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else {
error_str = "Only one argument allowed!";
}
goto on_error;
}
VideoDeviceType type;
if ( strcasecmp(argv[1], "in") == 0 ) /* Input devices */
if (strcasecmp(argv[1], "in") == 0) { /* Input devices */
type = vdt_input;
}
else if ( strcasecmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcasecmp(argv[1], "out") == 0) { /* Output devices */
type = vdt_output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -316,20 +325,26 @@ void cmd_change_video_device(WINDOW *window, ToxWindow *self, Tox *m, int argc,
const char *error_str;
if (argc != 2) {
if ( argc < 1 ) error_str = "Type must be specified!";
else if ( argc < 2 ) error_str = "Must have id!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else if (argc < 2) {
error_str = "Must have id!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}
VideoDeviceType type;
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
if (strcmp(argv[1], "in") == 0) { /* Input devices */
type = vdt_input;
}
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcmp(argv[1], "out") == 0) { /* Output devices */
type = vdt_output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -360,20 +375,26 @@ void cmd_ccur_video_device(WINDOW *window, ToxWindow *self, Tox *m, int argc, ch
const char *error_str;
if (argc != 2) {
if ( argc < 1 ) error_str = "Type must be specified!";
else if ( argc < 2 ) error_str = "Must have id!";
else error_str = "Only two arguments allowed!";
if (argc < 1) {
error_str = "Type must be specified!";
} else if (argc < 2) {
error_str = "Must have id!";
} else {
error_str = "Only two arguments allowed!";
}
goto on_error;
}
VideoDeviceType type;
if ( strcmp(argv[1], "in") == 0 ) /* Input devices */
if (strcmp(argv[1], "in") == 0) { /* Input devices */
type = vdt_input;
}
else if ( strcmp(argv[1], "out") == 0 ) /* Output devices */
else if (strcmp(argv[1], "out") == 0) { /* Output devices */
type = vdt_output;
}
else {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Invalid type: %s", argv[1]);
@ -421,8 +442,9 @@ void stop_video_stream(ToxWindow *self)
{
Call *this_call = &CallControl.calls[self->num];
if (this_call && this_call->vin_idx != -1)
if (this_call && this_call->vin_idx != -1) {
stop_video_transmission(this_call, self->num);
}
}
#endif

View File

@ -187,8 +187,9 @@ VideoDeviceError init_video_devices()
#if defined(__OSX__)
if ( osx_video_init((char **)video_devices_names[vdt_input], &size[vdt_input]) != 0 )
if (osx_video_init((char **)video_devices_names[vdt_input], &size[vdt_input]) != 0) {
return vde_InternalError;
}
#else /* not __OSX__*/
@ -232,13 +233,15 @@ VideoDeviceError init_video_devices()
video_devices_names[vdt_output][0] = video_output_name;
// Start poll thread
if ( pthread_mutex_init(&video_mutex, NULL) != 0 )
if (pthread_mutex_init(&video_mutex, NULL) != 0) {
return vde_InternalError;
}
pthread_t thread_id;
if ( pthread_create(&thread_id, NULL, video_thread_poll, NULL) != 0 || pthread_detach(thread_id) != 0 )
if (pthread_create(&thread_id, NULL, video_thread_poll, NULL) != 0 || pthread_detach(thread_id) != 0) {
return vde_InternalError;
}
#ifdef VIDEO
av = av_;
@ -262,8 +265,9 @@ VideoDeviceError terminate_video_devices()
free((void *)video_devices_names[vdt_input][i]);
}
if ( pthread_mutex_destroy(&video_mutex) != 0 )
if (pthread_mutex_destroy(&video_mutex) != 0) {
return (VideoDeviceError) vde_InternalError;
}
#ifdef __OSX__
osx_video_release();
@ -277,14 +281,16 @@ VideoDeviceError register_video_device_callback(int32_t friend_number, uint32_t
{
#if defined(__OSX__)
if ( size[vdt_input] <= device_idx || !video_devices_running[vdt_input][device_idx] )
if (size[vdt_input] <= device_idx || !video_devices_running[vdt_input][device_idx]) {
return vde_InvalidSelection;
}
#else /* not __OSX__ */
if (size[vdt_input] <= device_idx || !video_devices_running[vdt_input][device_idx]
|| !video_devices_running[vdt_input][device_idx]->fd )
|| !video_devices_running[vdt_input][device_idx]->fd) {
return vde_InvalidSelection;
}
#endif
@ -299,7 +305,9 @@ VideoDeviceError register_video_device_callback(int32_t friend_number, uint32_t
VideoDeviceError set_primary_video_device(VideoDeviceType type, int32_t selection)
{
if ( size[type] <= selection || selection < 0 ) return vde_InvalidSelection;
if (size[type] <= selection || selection < 0) {
return vde_InvalidSelection;
}
primary_video_device[type] = selection;
@ -318,7 +326,9 @@ void get_primary_video_device_name(VideoDeviceType type, char *buf, int size)
VideoDeviceError open_video_device(VideoDeviceType type, int32_t selection, uint32_t *device_idx)
{
if ( size[type] <= selection || selection < 0 ) return vde_InvalidSelection;
if (size[type] <= selection || selection < 0) {
return vde_InvalidSelection;
}
lock;
@ -452,8 +462,9 @@ VideoDeviceError open_video_device(VideoDeviceType type, int32_t selection, uint
device->fd, buf.m.offset);
if (MAP_FAILED == device->buffers[i].start) {
for (i = 0; i < buf.index; ++i)
for (i = 0; i < buf.index; ++i) {
munmap(device->buffers[i].start, device->buffers[i].length);
}
close(device->fd);
free(device);
@ -475,8 +486,9 @@ VideoDeviceError open_video_device(VideoDeviceType type, int32_t selection, uint
buf.index = i;
if (-1 == xioctl(device->fd, VIDIOC_QBUF, &buf)) {
for (i = 0; i < device->n_buffers; ++i)
for (i = 0; i < device->n_buffers; ++i) {
munmap(device->buffers[i].start, device->buffers[i].length);
}
close(device->fd);
free(device);
@ -586,9 +598,13 @@ __inline VideoDeviceError write_video_out(uint16_t width, uint16_t height,
{
VideoDevice *device = video_devices_running[vdt_output][0];
if ( !device ) return vde_DeviceNotActive;
if (!device) {
return vde_DeviceNotActive;
}
if ( !device->x_window ) return vde_DeviceNotActive;
if (!device->x_window) {
return vde_DeviceNotActive;
}
pthread_mutex_lock(device->mutex);
@ -656,8 +672,9 @@ void *video_thread_poll (void *arg) // TODO: maybe use thread for every input so
unlock;
if ( video_thread_paused ) usleep(10000); /* Wait for unpause. */
else {
if (video_thread_paused) {
usleep(10000); /* Wait for unpause. */
} else {
for (i = 0; i < size[vdt_input]; ++i) {
lock;
@ -697,8 +714,9 @@ void *video_thread_poll (void *arg) // TODO: maybe use thread for every input so
#endif
/* Send frame data to friend through ToxAV */
if ( device->cb )
if (device->cb) {
device->cb(video_width, video_height, y, u, v, device->cb_data);
}
/* Convert YUV420 data to BGR */
uint8_t *img_data = malloc(video_width * video_height * 4);
@ -753,7 +771,9 @@ void *video_thread_poll (void *arg) // TODO: maybe use thread for every input so
VideoDeviceError close_video_device(VideoDeviceType type, uint32_t device_idx)
{
if ( device_idx >= MAX_DEVICES ) return vde_InvalidSelection;
if (device_idx >= MAX_DEVICES) {
return vde_InvalidSelection;
}
lock;
VideoDevice *device = video_devices_running[type][device_idx];
@ -807,7 +827,9 @@ VideoDeviceError close_video_device(VideoDeviceType type, uint32_t device_idx)
free(device);
}
} else device->ref_count--;
} else {
device->ref_count--;
}
unlock;
return rc;
@ -817,8 +839,9 @@ void print_video_devices(ToxWindow *self, VideoDeviceType type)
{
int i;
for (i = 0; i < size[type]; ++i)
for (i = 0; i < size[type]; ++i) {
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "%d: %s", i, video_devices_names[type][i]);
}
return;
}

View File

@ -67,23 +67,26 @@ void on_connectionchange(Tox *m, uint32_t friendnumber, TOX_CONNECTION connectio
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onConnectionChange != NULL)
if (windows[i].onConnectionChange != NULL) {
windows[i].onConnectionChange(&windows[i], m, friendnumber, connection_status);
}
}
}
void on_typing_change(Tox *m, uint32_t friendnumber, bool is_typing, void *userdata)
{
if (user_settings->show_typing_other == SHOW_TYPING_OFF)
if (user_settings->show_typing_other == SHOW_TYPING_OFF) {
return;
}
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onTypingChange != NULL)
if (windows[i].onTypingChange != NULL) {
windows[i].onTypingChange(&windows[i], m, friendnumber, is_typing);
}
}
}
void on_message(Tox *m, uint32_t friendnumber, TOX_MESSAGE_TYPE type, const uint8_t *string, size_t length,
void *userdata)
@ -94,10 +97,11 @@ void on_message(Tox *m, uint32_t friendnumber, TOX_MESSAGE_TYPE type, const uint
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onMessage != NULL)
if (windows[i].onMessage != NULL) {
windows[i].onMessage(&windows[i], m, friendnumber, type, msg, length);
}
}
}
void on_nickchange(Tox *m, uint32_t friendnumber, const uint8_t *string, size_t length, void *userdata)
{
@ -108,9 +112,10 @@ void on_nickchange(Tox *m, uint32_t friendnumber, const uint8_t *string, size_t
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onNickChange != NULL)
if (windows[i].onNickChange != NULL) {
windows[i].onNickChange(&windows[i], m, friendnumber, nick, length);
}
}
store_data(m, DATA_FILE);
}
@ -124,29 +129,32 @@ void on_statusmessagechange(Tox *m, uint32_t friendnumber, const uint8_t *string
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onStatusMessageChange != NULL)
if (windows[i].onStatusMessageChange != NULL) {
windows[i].onStatusMessageChange(&windows[i], friendnumber, msg, length);
}
}
}
void on_statuschange(Tox *m, uint32_t friendnumber, TOX_USER_STATUS status, void *userdata)
{
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onStatusChange != NULL)
if (windows[i].onStatusChange != NULL) {
windows[i].onStatusChange(&windows[i], m, friendnumber, status);
}
}
}
void on_friendadded(Tox *m, uint32_t friendnumber, bool sort)
{
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onFriendAdded != NULL)
if (windows[i].onFriendAdded != NULL) {
windows[i].onFriendAdded(&windows[i], m, friendnumber, sort);
}
}
store_data(m, DATA_FILE);
}
@ -160,10 +168,11 @@ void on_groupmessage(Tox *m, uint32_t groupnumber, uint32_t peernumber, TOX_MESS
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onGroupMessage != NULL)
if (windows[i].onGroupMessage != NULL) {
windows[i].onGroupMessage(&windows[i], m, groupnumber, peernumber, type, msg, length);
}
}
}
void on_groupinvite(Tox *m, uint32_t friendnumber, TOX_CONFERENCE_TYPE type, const uint8_t *group_pub_key,
size_t length, void *userdata)
@ -171,20 +180,22 @@ void on_groupinvite(Tox *m, uint32_t friendnumber, TOX_CONFERENCE_TYPE type, con
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onGroupInvite != NULL)
if (windows[i].onGroupInvite != NULL) {
windows[i].onGroupInvite(&windows[i], m, friendnumber, type, (char *) group_pub_key, length);
}
}
}
void on_group_namelistchange(Tox *m, uint32_t groupnumber, void *userdata)
{
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onGroupNameListChange != NULL)
if (windows[i].onGroupNameListChange != NULL) {
windows[i].onGroupNameListChange(&windows[i], m, groupnumber);
}
}
}
void on_group_peernamechange(Tox *m, uint32_t groupnumber, uint32_t peernumber, const uint8_t *name,
size_t length, void *userdata)
@ -196,10 +207,11 @@ void on_group_peernamechange(Tox *m, uint32_t groupnumber, uint32_t peernumber,
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onGroupPeerNameChange != NULL)
if (windows[i].onGroupPeerNameChange != NULL) {
windows[i].onGroupPeerNameChange(&windows[i], m, groupnumber, peernumber, nick, length);
}
}
}
void on_group_titlechange(Tox *m, uint32_t groupnumber, uint32_t peernumber, const uint8_t *title, size_t length,
void *userdata)
@ -210,18 +222,20 @@ void on_group_titlechange(Tox *m, uint32_t groupnumber, uint32_t peernumber, con
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onGroupTitleChange != NULL)
if (windows[i].onGroupTitleChange != NULL) {
windows[i].onGroupTitleChange(&windows[i], m, groupnumber, peernumber, data, length);
}
}
}
void on_file_chunk_request(Tox *m, uint32_t friendnumber, uint32_t filenumber, uint64_t position,
size_t length, void *userdata)
{
struct FileTransfer *ft = get_file_transfer_struct(friendnumber, filenumber);
if (!ft)
if (!ft) {
return;
}
if (ft->file_type == TOX_FILE_KIND_AVATAR) {
on_avatar_chunk_request(m, ft, position, length);
@ -231,34 +245,38 @@ void on_file_chunk_request(Tox *m, uint32_t friendnumber, uint32_t filenumber, u
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onFileChunkRequest != NULL)
if (windows[i].onFileChunkRequest != NULL) {
windows[i].onFileChunkRequest(&windows[i], m, friendnumber, filenumber, position, length);
}
}
}
void on_file_recv_chunk(Tox *m, uint32_t friendnumber, uint32_t filenumber, uint64_t position,
const uint8_t *data, size_t length, void *user_data)
{
struct FileTransfer *ft = get_file_transfer_struct(friendnumber, filenumber);
if (!ft)
if (!ft) {
return;
}
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onFileRecvChunk != NULL)
if (windows[i].onFileRecvChunk != NULL) {
windows[i].onFileRecvChunk(&windows[i], m, friendnumber, filenumber, position, (char *) data, length);
}
}
}
void on_file_control(Tox *m, uint32_t friendnumber, uint32_t filenumber, TOX_FILE_CONTROL control,
void *userdata)
{
struct FileTransfer *ft = get_file_transfer_struct(friendnumber, filenumber);
if (!ft)
if (!ft) {
return;
}
if (ft->file_type == TOX_FILE_KIND_AVATAR) {
on_avatar_file_control(m, ft, control);
@ -268,10 +286,11 @@ void on_file_control(Tox *m, uint32_t friendnumber, uint32_t filenumber, TOX_FIL
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onFileControl != NULL)
if (windows[i].onFileControl != NULL) {
windows[i].onFileControl(&windows[i], m, friendnumber, filenumber, control);
}
}
}
void on_file_recv(Tox *m, uint32_t friendnumber, uint32_t filenumber, uint32_t kind, uint64_t file_size,
const uint8_t *filename, size_t filename_length, void *userdata)
@ -296,27 +315,31 @@ void on_read_receipt(Tox *m, uint32_t friendnumber, uint32_t receipt, void *user
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (windows[i].onReadReceipt != NULL)
if (windows[i].onReadReceipt != NULL) {
windows[i].onReadReceipt(&windows[i], m, friendnumber, receipt);
}
}
}
/* CALLBACKS END */
int add_window(Tox *m, ToxWindow w)
{
if (LINES < 2)
if (LINES < 2) {
return -1;
}
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; i++) {
if (windows[i].active)
if (windows[i].active) {
continue;
}
w.window = newwin(LINES - 2, COLS, 0, 0);
if (w.window == NULL)
if (w.window == NULL) {
return -1;
}
#ifdef URXVT_FIX
/* Fixes text color problem on some terminals. */
@ -324,8 +347,9 @@ int add_window(Tox *m, ToxWindow w)
#endif
windows[i] = w;
if (w.onInit)
if (w.onInit) {
w.onInit(&w, m);
}
++num_active_windows;
@ -337,8 +361,9 @@ int add_window(Tox *m, ToxWindow w)
void set_active_window(int index)
{
if (index < 0 || index >= MAX_WINDOWS_NUM)
if (index < 0 || index >= MAX_WINDOWS_NUM) {
return;
}
active_window = windows + index;
}
@ -351,18 +376,22 @@ void set_next_window(int ch)
while (true) {
if (ch == user_settings->key_next_tab) {
if (++active_window > end)
if (++active_window > end) {
active_window = windows;
} else if (--active_window < windows)
}
} else if (--active_window < windows) {
active_window = end;
}
if (active_window->window)
if (active_window->window) {
return;
}
if (active_window == inf) /* infinite loop check */
if (active_window == inf) { /* infinite loop check */
exit_toxic_err("failed in set_next_window", FATALERR_INFLOOP);
}
}
}
/* Deletes window w and cleans up */
void del_window(ToxWindow *w)
@ -381,8 +410,9 @@ ToxWindow *init_windows(Tox *m)
{
int n_prompt = add_window(m, new_prompt());
if (n_prompt == -1 || add_window(m, new_friendlist()) == -1)
if (n_prompt == -1 || add_window(m, new_friendlist()) == -1) {
exit_toxic_err("failed in init_windows", FATALERR_WININIT);
}
prompt = &windows[n_prompt];
active_window = prompt;
@ -401,14 +431,16 @@ void on_window_resize(void)
getmaxyx(stdscr, y2, x2);
y2 -= 2;
if (y2 <= 0 || x2 <= 0)
if (y2 <= 0 || x2 <= 0) {
return;
}
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (!windows[i].active)
if (!windows[i].active) {
continue;
}
ToxWindow *w = &windows[i];
@ -418,8 +450,9 @@ void on_window_resize(void)
continue;
}
if (w->help->active)
if (w->help->active) {
wclear(w->help->win);
}
if (w->is_groupchat) {
delwin(w->chatwin->sidebar);
@ -441,9 +474,10 @@ void on_window_resize(void)
} else {
w->chatwin->history = subwin(w->window, y2 - CHATBOX_HEIGHT + 1, x2, 0, 0);
if (!w->is_groupchat)
if (!w->is_groupchat) {
w->stb->topline = subwin(w->window, 2, x2, 0, 0);
}
}
#ifdef AUDIO
@ -462,7 +496,9 @@ static void draw_window_tab(ToxWindow *toxwin)
{
pthread_mutex_lock(&Winthread.lock);
if (toxwin->alert != WINDOW_ALERT_NONE) attron(COLOR_PAIR(toxwin->alert));
if (toxwin->alert != WINDOW_ALERT_NONE) {
attron(COLOR_PAIR(toxwin->alert));
}
pthread_mutex_unlock(&Winthread.lock);
@ -471,7 +507,9 @@ static void draw_window_tab(ToxWindow *toxwin)
pthread_mutex_lock(&Winthread.lock);
if (toxwin->alert != WINDOW_ALERT_NONE) attroff(COLOR_PAIR(toxwin->alert));
if (toxwin->alert != WINDOW_ALERT_NONE) {
attroff(COLOR_PAIR(toxwin->alert));
}
pthread_mutex_unlock(&Winthread.lock);
}
@ -492,8 +530,9 @@ static void draw_bar(void)
size_t i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
if (!windows[i].active)
if (!windows[i].active) {
continue;
}
if (windows + i == active_window)
@ -543,19 +582,22 @@ void draw_active_window(Tox *m)
#ifdef HAVE_WIDECHAR
int status = wget_wch(stdscr, &ch);
if (status == ERR)
if (status == ERR) {
return;
}
if (status == OK)
if (status == OK) {
ltr = iswprint(ch);
else /* if (status == KEY_CODE_YES) */
} else { /* if (status == KEY_CODE_YES) */
ltr = false;
}
#else
ch = getch();
if (ch == ERR)
if (ch == ERR) {
return;
}
/* TODO verify if this works */
ltr = isprint(ch);
@ -592,8 +634,9 @@ ToxWindow *get_window_ptr(int i)
{
ToxWindow *toxwin = NULL;
if (i >= 0 && i < MAX_WINDOWS_NUM && windows[i].active)
if (i >= 0 && i < MAX_WINDOWS_NUM && windows[i].active) {
toxwin = &windows[i];
}
return toxwin;
}

View File

@ -76,7 +76,9 @@ Property read_property(Window s, Atom p)
/* Keep trying to read the property until there are no bytes unread */
do {
if (data) XFree(data);
if (data) {
XFree(data);
}
XGetWindowProperty(Xtra.display, s,
p, 0,
@ -98,7 +100,9 @@ Atom get_dnd_type(long *a, int l)
int i = 0;
for (; i < l; i ++) {
if (a[i] != XtraNil) return a[i]; /* Get first valid */
if (a[i] != XtraNil) {
return a[i]; /* Get first valid */
}
}
return XtraNil;
@ -193,10 +197,11 @@ static void handle_xdnd_selection(XSelectionEvent *e)
Property p = read_property(Xtra.proxy_window, XdndSelection);
DropType dt;
if (strcmp(XGetAtomName(Xtra.display, p.read_type), "text/uri-list") == 0)
if (strcmp(XGetAtomName(Xtra.display, p.read_type), "text/uri-list") == 0) {
dt = DT_file_list;
else /* text/uri-list */
} else { /* text/uri-list */
dt = DT_plain;
}
/* Call callback for every entry */
@ -204,13 +209,18 @@ static void handle_xdnd_selection(XSelectionEvent *e)
char *sptr;
char *str = strtok_r((char *) p.data, "\n\r", &sptr);
if (str) Xtra.on_drop(str, dt);
while ((str = strtok_r(NULL, "\n\r", &sptr)))
if (str) {
Xtra.on_drop(str, dt);
}
if (p.data) XFree(p.data);
while ((str = strtok_r(NULL, "\n\r", &sptr))) {
Xtra.on_drop(str, dt);
}
}
if (p.data) {
XFree(p.data);
}
}
void *event_loop(void *p)
@ -227,7 +237,9 @@ void *event_loop(void *p)
XLockDisplay(Xtra.display);
if ((pending = XPending(Xtra.display))) XNextEvent(Xtra.display, &event);
if ((pending = XPending(Xtra.display))) {
XNextEvent(Xtra.display, &event);
}
if (!pending) {
XUnlockDisplay(Xtra.display);
@ -238,13 +250,22 @@ void *event_loop(void *p)
if (event.type == ClientMessage) {
Atom type = event.xclient.message_type;
if (type == XdndEnter) handle_xdnd_enter(&event.xclient);
else if (type == XdndPosition) handle_xdnd_position(&event.xclient);
else if (type == XdndDrop) handle_xdnd_drop(&event.xclient);
else if (type == XtraTerminate) break;
} else if (event.type == SelectionNotify) handle_xdnd_selection(&event.xselection);
if (type == XdndEnter) {
handle_xdnd_enter(&event.xclient);
} else if (type == XdndPosition) {
handle_xdnd_position(&event.xclient);
} else if (type == XdndDrop) {
handle_xdnd_drop(&event.xclient);
} else if (type == XtraTerminate) {
break;
}
} else if (event.type == SelectionNotify) {
handle_xdnd_selection(&event.xselection);
}
/* AINNOBODYCANHANDLEDEMEVENTS*/
else XSendEvent(Xtra.display, Xtra.terminal_window, 0, 0, &event);
else {
XSendEvent(Xtra.display, Xtra.terminal_window, 0, 0, &event);
}
XUnlockDisplay(Xtra.display);
}
@ -253,7 +274,9 @@ void *event_loop(void *p)
* Please call xtra_terminate() at exit
* otherwise HEWUSAGUDBOI happens
*/
if (Xtra.display) XCloseDisplay(Xtra.display);
if (Xtra.display) {
XCloseDisplay(Xtra.display);
}
return (Xtra.display = NULL);
}
@ -262,19 +285,25 @@ int init_xtra(drop_callback d)
{
memset(&Xtra, 0, sizeof(Xtra));
if (!d) return -1;
else Xtra.on_drop = d;
if (!d) {
return -1;
} else {
Xtra.on_drop = d;
}
XInitThreads();
if ( !(Xtra.display = XOpenDisplay(NULL))) return -1;
if (!(Xtra.display = XOpenDisplay(NULL))) {
return -1;
}
Xtra.terminal_window = focused_window_id();
/* OSX: if focused window is 0, it means toxic is ran from
* native terminal and not X11 terminal window, silently exit */
if (!Xtra.terminal_window)
if (!Xtra.terminal_window) {
return 0;
}
{
/* Create an invisible window which will act as proxy for the DnD operation. */
@ -308,9 +337,10 @@ int init_xtra(drop_callback d)
InputOnly, /* Class */
CopyFromParent, /* Visual */
CWEventMask | CWCursor, /* Value mask */
&attr)) ) /* Attributes for value mask */
&attr))) { /* Attributes for value mask */
return -1;
}
}
XMapWindow(Xtra.display, Xtra.proxy_window); /* Show window (sandwich) */
XLowerWindow(Xtra.display, Xtra.proxy_window); /* Don't interfere with parent lmao */
@ -339,8 +369,9 @@ int init_xtra(drop_callback d)
pthread_t id;
if (pthread_create(&id, NULL, event_loop, NULL) != 0)
if (pthread_create(&id, NULL, event_loop, NULL) != 0) {
return -1;
}
pthread_detach(id);
@ -349,7 +380,9 @@ int init_xtra(drop_callback d)
void terminate_xtra()
{
if (!Xtra.display || !Xtra.terminal_window) return;
if (!Xtra.display || !Xtra.terminal_window) {
return;
}
XEvent terminate = {
.xclient = {
@ -369,7 +402,9 @@ void terminate_xtra()
long unsigned int focused_window_id()
{
if (!Xtra.display) return 0;
if (!Xtra.display) {
return 0;
}
Window focus;
int revert;