Skip to content

Commit

Permalink
Added size functions for names and status messages
Browse files Browse the repository at this point in the history
  • Loading branch information
nurupo committed Feb 22, 2014
1 parent 554afe1 commit 36adc48
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 6 deletions.
21 changes: 21 additions & 0 deletions toxcore/Messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,19 @@ int getname(Messenger *m, int32_t friendnumber, uint8_t *name)
return m->friendlist[friendnumber].name_length;
}

int m_get_name_size(Messenger *m, int32_t friendnumber)
{
if (friend_not_valid(m, friendnumber))
return -1;

return m->friendlist[friendnumber].name_length;
}

int m_get_self_name_size(Messenger *m)
{
return m->name_length;
}

int m_set_statusmessage(Messenger *m, uint8_t *status, uint16_t length)
{
if (length > MAX_STATUSMESSAGE_LENGTH)
Expand Down Expand Up @@ -588,6 +601,14 @@ int m_copy_statusmessage(Messenger *m, int32_t friendnumber, uint8_t *buf, uint3
return MIN(maxlen, m->friendlist[friendnumber].statusmessage_length);
}

/* return the size of friendnumber's user status.
* Guaranteed to be at most MAX_STATUSMESSAGE_LENGTH.
*/
int m_get_self_statusmessage_size(Messenger *m)
{
return m->statusmessage_length;
}

int m_copy_self_statusmessage(Messenger *m, uint8_t *buf, uint32_t maxlen)
{
memset(buf, 0, maxlen);
Expand Down
11 changes: 9 additions & 2 deletions toxcore/Messenger.h
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,12 @@ uint16_t getself_name(Messenger *m, uint8_t *name);
*/
int getname(Messenger *m, int32_t friendnumber, uint8_t *name);

/* return the length of name, including null on success.
* return -1 on failure.
*/
int m_get_name_size(Messenger *m, int32_t friendnumber);
int m_get_self_name_size(Messenger *m);

/* returns valid ip port of connected friend on success
* returns zeroed out IP_Port on failure
*/
Expand All @@ -384,10 +390,11 @@ IP_Port get_friend_ipport(Messenger *m, int32_t friendnumber);
int m_set_statusmessage(Messenger *m, uint8_t *status, uint16_t length);
int m_set_userstatus(Messenger *m, USERSTATUS status);

/* return the length of friendnumber's status message, including null.
* Pass it into malloc.
/* return the length of friendnumber's status message, including null on success.
* return -1 on failure.
*/
int m_get_statusmessage_size(Messenger *m, int32_t friendnumber);
int m_get_self_statusmessage_size(Messenger *m);

/* Copy friendnumber's status message into buf, truncating if size is over maxlen.
* Get the size you need to allocate from m_get_statusmessage_size.
Expand Down
25 changes: 23 additions & 2 deletions toxcore/tox.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,21 @@ int tox_get_name(Tox *tox, int32_t friendnumber, uint8_t *name)
return getname(m, friendnumber, name);
}

/* returns the length of name on success.
* returns -1 on failure.
*/
int tox_get_name_size(Tox *tox, int32_t friendnumber)
{
Messenger *m = tox;
return m_get_name_size(m, friendnumber);
}

int tox_get_self_name_size(Tox *tox)
{
Messenger *m = tox;
return m_get_self_name_size(m);
}

/* Set our user status;
* you are responsible for freeing status after.
*
Expand All @@ -227,15 +242,21 @@ int tox_set_user_status(Tox *tox, TOX_USERSTATUS status)
return m_set_userstatus(m, status);
}

/* return the length of friendnumber's status message, including null.
* Pass it into malloc.
/* returns the length of status message on success.
* returns -1 on failure.
*/
int tox_get_status_message_size(Tox *tox, int32_t friendnumber)
{
Messenger *m = tox;
return m_get_statusmessage_size(m, friendnumber);
}

int tox_get_self_status_message_size(Tox *tox)
{
Messenger *m = tox;
return m_get_self_statusmessage_size(m, friendnumber);
}

/* Copy friendnumber's status message into buf, truncating if size is over maxlen.
* Get the size you need to allocate from m_get_statusmessage_size.
* The self variant will copy our own status message.
Expand Down
11 changes: 9 additions & 2 deletions toxcore/tox.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,12 @@ uint16_t tox_get_self_name(Tox *tox, uint8_t *name);
*/
int tox_get_name(Tox *tox, int32_t friendnumber, uint8_t *name);

/* returns the length of name on success.
* returns -1 on failure.
*/
int tox_get_name_size(Tox *tox, int32_t friendnumber);
int tox_get_self_name_size(Tox *tox);

/* Set our user status.
* You are responsible for freeing status after.
*
Expand All @@ -234,10 +240,11 @@ int tox_get_name(Tox *tox, int32_t friendnumber, uint8_t *name);
int tox_set_status_message(Tox *tox, uint8_t *status, uint16_t length);
int tox_set_user_status(Tox *tox, TOX_USERSTATUS userstatus);

/* return the length of friendnumber's status message.
* Pass it into malloc
/* returns the length of status message on success.
* returns -1 on failure.
*/
int tox_get_status_message_size(Tox *tox, int32_t friendnumber);
int tox_get_self_status_message_size(Tox *tox);

/* Copy friendnumber's status message into buf, truncating if size is over maxlen.
* Get the size you need to allocate from m_get_statusmessage_size.
Expand Down

0 comments on commit 36adc48

Please sign in to comment.