Merge branch 'master' of git://github.com/irungentoo/ProjectTox-Core

This commit is contained in:
Astonex 2013-08-03 14:57:42 +01:00
commit da8996dbdd
7 changed files with 47 additions and 38 deletions

View File

@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 2.6.0)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
if(UNIX)
find_package(Curses REQUIRED)
endif()
if(NOT WIN32) if(NOT WIN32)
option(USE_NACL "Use NaCl library instead of libsodium") option(USE_NACL "Use NaCl library instead of libsodium")
endif() endif()

View File

@ -18,6 +18,14 @@ Build dependencies:
```bash ```bash
apt-get install build-essential libtool autotools-dev automake libconfig-dev ncurses-dev cmake checkinstall apt-get install build-essential libtool autotools-dev automake libconfig-dev ncurses-dev cmake checkinstall
``` ```
On Fedora:
```bash
yum groupinstall "Development Tools"
yum install libtool autoconf automake libconfig-devel ncurses-devel cmake
```
Note that `libconfig-dev` should be >= 1.4. Note that `libconfig-dev` should be >= 1.4.
You should get and install [libsodium](https://github.com/jedisct1/libsodium): You should get and install [libsodium](https://github.com/jedisct1/libsodium):
@ -31,6 +39,20 @@ sudo checkinstall --install --pkgname libsodium --pkgversion 0.4.2 --nodoc
sudo ldconfig sudo ldconfig
``` ```
Or if checkinstall is not easily available for your distribution (e.g. Fedora),
this will install the libs to /usr/local/lib and the headers to /usr/local/include:
```bash
git clone git://github.com/jedisct1/libsodium.git
cd libsodium
git checkout tags/0.4.2
./autogen.sh
./configure
make check
sudo make install
```
Then clone this repo and generate makefile: Then clone this repo and generate makefile:
```bash ```bash
git clone git://github.com/irungentoo/ProjectTox-Core.git git clone git://github.com/irungentoo/ProjectTox-Core.git

View File

@ -18,7 +18,7 @@
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Tox. If not, see <http://www.gnu.org/licenses/>. * along with Tox. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
#include "nTox.h" #include "nTox.h"
#include "misc_tools.h" #include "misc_tools.h"
@ -54,7 +54,7 @@ void get_id(char *data)
{ {
if (self_public_key[i] < (PUB_KEY_BYTES / 2)) if (self_public_key[i] < (PUB_KEY_BYTES / 2))
strcpy(idstring1[i],"0"); strcpy(idstring1[i],"0");
else else
strcpy(idstring1[i], ""); strcpy(idstring1[i], "");
sprintf(idstring2[i], "%hhX",self_public_key[i]); sprintf(idstring2[i], "%hhX",self_public_key[i]);
} }
@ -71,9 +71,9 @@ void get_id(char *data)
void new_lines(char *line) void new_lines(char *line)
{ {
int i = 0; int i = 0;
for (i = HISTORY-1; i > 0; i--) for (i = HISTORY-1; i > 0; i--)
strncpy(lines[i], lines[i-1], STRING_LENGTH - 1); strncpy(lines[i], lines[i-1], STRING_LENGTH - 1);
strncpy(lines[0], line, STRING_LENGTH - 1); strncpy(lines[0], line, STRING_LENGTH - 1);
do_refresh(); do_refresh();
} }
@ -133,7 +133,7 @@ void line_eval(char lines[HISTORY][STRING_LENGTH], char *line)
if (inpt_command == 'f') { // add friend command: /f ID if (inpt_command == 'f') { // add friend command: /f ID
int i; int i;
char temp_id[128]; char temp_id[128];
for (i = 0; i < 128; i++) for (i = 0; i < 128; i++)
temp_id[i] = line[i+prompt_offset]; temp_id[i] = line[i+prompt_offset];
int num = m_addfriend(hex_string_to_bin(temp_id), (uint8_t*)"Install Gentoo", sizeof("Install Gentoo")); int num = m_addfriend(hex_string_to_bin(temp_id), (uint8_t*)"Install Gentoo", sizeof("Install Gentoo"));
@ -166,8 +166,8 @@ void line_eval(char lines[HISTORY][STRING_LENGTH], char *line)
} }
else if (inpt_command == 'm') { //message command: /m friendnumber messsage else if (inpt_command == 'm') { //message command: /m friendnumber messsage
size_t len = strlen(line); size_t len = strlen(line);
if(len < 3) if(len < 3)
return; return;
char numstring[len-3]; char numstring[len-3];
char message[len-3]; char message[len-3];
@ -248,7 +248,7 @@ void line_eval(char lines[HISTORY][STRING_LENGTH], char *line)
else if (inpt_command == 'q') { //exit else if (inpt_command == 'q') { //exit
endwin(); endwin();
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} else { } else {
new_lines("[i] invalid command"); new_lines("[i] invalid command");
} }
} else { } else {
@ -335,7 +335,7 @@ void print_message(int friendnumber, uint8_t * string, uint16_t length)
new_lines(format_message((char*)string, friendnumber)); new_lines(format_message((char*)string, friendnumber));
} }
void print_nickchange(int friendnumber, uint8_t *string, uint16_t length) void print_nickchange(int friendnumber, uint8_t *string, uint16_t length)
{ {
char name[MAX_NAME_LENGTH]; char name[MAX_NAME_LENGTH];
getname(friendnumber, (uint8_t*)name); getname(friendnumber, (uint8_t*)name);
@ -344,7 +344,7 @@ void print_nickchange(int friendnumber, uint8_t *string, uint16_t length)
new_lines(msg); new_lines(msg);
} }
void print_statuschange(int friendnumber, uint8_t *string, uint16_t length) void print_statuschange(int friendnumber, uint8_t *string, uint16_t length)
{ {
char name[MAX_NAME_LENGTH]; char name[MAX_NAME_LENGTH];
getname(friendnumber, (uint8_t*)name); getname(friendnumber, (uint8_t*)name);
@ -353,7 +353,7 @@ void print_statuschange(int friendnumber, uint8_t *string, uint16_t length)
new_lines(msg); new_lines(msg);
} }
void load_key() void load_key()
{ {
FILE *data_file = NULL; FILE *data_file = NULL;
data_file = fopen("data","r"); data_file = fopen("data","r");
@ -368,7 +368,7 @@ void load_key()
exit(1); exit(1);
} }
Messenger_load(data, size); Messenger_load(data, size);
} else { } else {
//else save new keys //else save new keys
int size = Messenger_size(); int size = Messenger_size();
uint8_t data[size]; uint8_t data[size];
@ -418,9 +418,9 @@ int main(int argc, char *argv[])
int resolved_address = resolve_addr(argv[1]); int resolved_address = resolve_addr(argv[1]);
if (resolved_address != 0) if (resolved_address != 0)
bootstrap_ip_port.ip.i = resolved_address; bootstrap_ip_port.ip.i = resolved_address;
else else
exit(1); exit(1);
DHT_bootstrap(bootstrap_ip_port, hex_string_to_bin(argv[3])); DHT_bootstrap(bootstrap_ip_port, hex_string_to_bin(argv[3]));
nodelay(stdscr, TRUE); nodelay(stdscr, TRUE);
while(true) { while(true) {
@ -441,7 +441,7 @@ int main(int argc, char *argv[])
if (c == '\n') { if (c == '\n') {
line_eval(lines, line); line_eval(lines, line);
strcpy(line, ""); strcpy(line, "");
} else if (c == 127) { } else if (c == 8 || c == 127) {
line[strlen(line)-1] = '\0'; line[strlen(line)-1] = '\0';
} else if (isalnum(c) || ispunct(c) || c == ' ') { } else if (isalnum(c) || ispunct(c) || c == ' ') {
strcpy(line, appender(line, (char) c)); strcpy(line, appender(line, (char) c));

View File

@ -106,6 +106,7 @@ static void chat_onKey(ToxWindow* self, int key) {
} }
static void chat_onDraw(ToxWindow* self) { static void chat_onDraw(ToxWindow* self) {
curs_set(1);
int x, y; int x, y;
ChatContext* ctx = (ChatContext*) self->x; ChatContext* ctx = (ChatContext*) self->x;
@ -117,7 +118,7 @@ static void chat_onDraw(ToxWindow* self) {
wclear(ctx->linewin); wclear(ctx->linewin);
mvwhline(ctx->linewin, 0, 0, '_', COLS); mvwhline(ctx->linewin, 0, 0, '_', COLS);
mvwprintw(ctx->linewin, 1, 0, "%s\n", ctx->line); mvwprintw(self->window, y-1, 0, "%s\n", ctx->line);
wrefresh(self->window); wrefresh(self->window);
} }

View File

@ -113,6 +113,7 @@ static void friendlist_onKey(ToxWindow* self, int key) {
} }
static void friendlist_onDraw(ToxWindow* self) { static void friendlist_onDraw(ToxWindow* self) {
curs_set(0);
size_t i; size_t i;
wclear(self->window); wclear(self->window);

View File

@ -280,26 +280,6 @@ void prepare_window(WINDOW* w) {
wresize(w, LINES-2, COLS); wresize(w, LINES-2, COLS);
} }
/*
* Draws cursor relative to input on prompt window.
* Removes cursor on friends window and chat windows.
*
* TODO: Make it work for chat windows
*/
void position_cursor(WINDOW* w, char* title)
{
curs_set(1);
if (strcmp(title, "[prompt]") == 0) { // main/prompt window
int x, y;
getyx(w, y, x);
move(y, x);
}
else if (strcmp(title, "[friends]") == 0) // friends window
curs_set(0);
else // any other window (i.e chat)
curs_set(0);
}
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
int ch; int ch;
ToxWindow* a; ToxWindow* a;
@ -317,9 +297,8 @@ int main(int argc, char* argv[]) {
a = &windows[w_active]; a = &windows[w_active];
prepare_window(a->window); prepare_window(a->window);
a->blink = false; a->blink = false;
a->onDraw(a);
draw_bar(); draw_bar();
position_cursor(a->window, a->title); a->onDraw(a);
// Handle input. // Handle input.
ch = getch(); ch = getch();

View File

@ -140,6 +140,7 @@ static void execute(ToxWindow* self, char* cmd) {
break; break;
case -2: case -2:
wprintw(self->window, "Please add a message to your request.\n"); wprintw(self->window, "Please add a message to your request.\n");
break;
case -3: case -3:
wprintw(self->window, "That appears to be your own ID.\n"); wprintw(self->window, "That appears to be your own ID.\n");
break; break;
@ -287,6 +288,7 @@ static void prompt_onKey(ToxWindow* self, int key) {
} }
static void prompt_onDraw(ToxWindow* self) { static void prompt_onDraw(ToxWindow* self) {
curs_set(1);
int x, y; int x, y;
getyx(self->window, y, x); getyx(self->window, y, x);