1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-07-01 18:07:46 +02:00

add valid nick function

This commit is contained in:
Jfreegman 2013-11-28 02:53:43 -05:00
parent 7ca087b5e7
commit a04c8964ee
4 changed files with 32 additions and 7 deletions

View File

@ -232,9 +232,9 @@ void cmd_nick(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MA
nick[len] = L'\0'; nick[len] = L'\0';
} }
if (!len) { if (!valid_nick(nick)) {
wprintw(window, "Invalid name.\n"); wprintw(window, "Invalid name.\n");
return; return;
} }
if (len > TOXIC_MAX_NAME_LENGTH) { if (len > TOXIC_MAX_NAME_LENGTH) {

View File

@ -117,14 +117,14 @@ void alert_window(ToxWindow *self)
/* case-insensitive string compare function for use with qsort - same return logic as strcmp */ /* case-insensitive string compare function for use with qsort - same return logic as strcmp */
int name_compare(const void *nick1, const void *nick2) int name_compare(const void *nick1, const void *nick2)
{ {
char s[strlen((const char *) nick1) + 1]; char s[TOX_MAX_NAME_LENGTH];
char t[strlen((const char *) nick2) + 1]; char t[TOX_MAX_NAME_LENGTH];
strcpy(s, (const char *) nick1); strcpy(s, (const char *) nick1);
strcpy(t, (const char *) nick2); strcpy(t, (const char *) nick2);
int i; int i;
for (i = 0; s[i] != '\0' && t[i] != '\0'; ++i) { for (i = 0; s[i] && t[i]; ++i) {
s[i] = tolower(s[i]); s[i] = tolower(s[i]);
t[i] = tolower(t[i]); t[i] = tolower(t[i]);
@ -134,3 +134,22 @@ int name_compare(const void *nick1, const void *nick2)
return s[i] - t[i]; return s[i] - t[i];
} }
/* Returns true if nick is valid. A valid toxic nick:
- cannot be empty
- cannot start with a space
- must not contain contiguous spaces */
bool valid_nick(uint8_t *nick)
{
if (!nick[0] || nick[0] == ' ')
return false;
int i;
for (i = 0; nick[i]; ++i) {
if (nick[i] == ' ' && nick[i+1] == ' ')
return false;
}
return true;
}

View File

@ -30,3 +30,9 @@ void alert_window(ToxWindow *self);
/* case-insensitive string compare function for use with qsort - same return logic as strcmp */ /* case-insensitive string compare function for use with qsort - same return logic as strcmp */
int name_compare(const void *nick1, const void *nick2); int name_compare(const void *nick1, const void *nick2);
/* Returns true if nick is valid. A valid toxic nick:
- cannot be empty
- cannot start with a space
- must not contain contiguous spaces */
bool valid_nick(uint8_t *nick);

View File

@ -22,7 +22,7 @@
#define MAX_GROUPCHAT_NUM MAX_WINDOWS_NUM - N_DEFAULT_WINS #define MAX_GROUPCHAT_NUM MAX_WINDOWS_NUM - N_DEFAULT_WINS
#define MAX_STR_SIZE 256 #define MAX_STR_SIZE 256
#define KEY_SIZE_BYTES 32 #define KEY_SIZE_BYTES 32
#define TOXIC_MAX_NAME_LENGTH 30 /* Must be <= TOX_MAX_NAME_LENGTH */ #define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */
#define N_DEFAULT_WINS 2 /* number of permanent default windows */ #define N_DEFAULT_WINS 2 /* number of permanent default windows */
#define CURS_Y_OFFSET 3 /* y-axis cursor offset for chat contexts */ #define CURS_Y_OFFSET 3 /* y-axis cursor offset for chat contexts */
#define CHATBOX_HEIGHT 4 #define CHATBOX_HEIGHT 4