mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Merge branch 'master' of git://github.com/irungentoo/ProjectTox-Core
This commit is contained in:
commit
da8996dbdd
|
@ -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()
|
||||||
|
|
22
INSTALL.md
22
INSTALL.md
|
@ -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
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user