PDA

View Full Version : My new sendCommand function with libcod (windows)



Kantin
10th January 2015, 00:26
Hey,
So with this function you can send data to another server (tested with cod2 and cod4 servers) (like rcon commands) or you can get data from it. If you want to use it you have to add my source to Mitch's libcod_win project (https://github.com/M-itch/libcod_win).

Changes:

[gsc.cpp] Add the following code to the scriptFunctions array.


{"sendCommand" , gsc_utils_sendCommand , 0},


[gsc_utils.h]


void gsc_utils_sendCommand();


[gsc_utils.cpp]


#include <math.h>
#include <winsock2.h>
#include <windows.h>

BOOL isValidNumber(const char *charnum, int **number)
{
int i, num = 0;

if(charnum == NULL)
{
return 0;
}

for(i = 0; i < strlen(charnum); i++)
{
if(charnum[i] >= '0' && charnum[i] <= '9')
{
num += pow(10.0, (int)(strlen(charnum) - i - 1)) * (charnum[i] - '0');
}
else
{
return 0;
}
}

*number = (int *)num;

return 1;
}

BOOL isValidRange(const char *range)
{
int *num;

if(!isValidNumber(range, &num))
{
return 0;
}

if((int)num >= 0 && (int)num <= 255)
{
return 1;
}

return 0;
}

int isValidAddress(const char *ip)
{
int i, dots = 0;
char *token;

for(i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
dots++;
}

if(dots != 3)
{
return 0;
}

for(i = 0; i < dots + 1; i++)
{
if(i == 0)
{
token = strtok(strdup(ip), ".");
}
else
{
token = strtok(NULL, ".");
}
if(!isValidRange(token))
{
return 0;
}
}

return 1;
}

char* sendCommand(char *ip, int port, char *message)
{
SOCKET Socket;
WSADATA WSAData = {0};
SOCKADDR_IN server;
struct timeval timeout;

int i;
char *data;
char *fixed;
char response[16384];

data = strcat(strdup("00000"), message);

for(i = 0; i < 4; i++)
{
data[i] = 0xFF;
}
data[i] = 0x02;

server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(ip);

timeout.tv_sec = 2;
timeout.tv_usec = 2;

if(WSAStartup (MAKEWORD(2, 2), &WSAData))
{
return "0";
}

Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(Socket == INVALID_SOCKET)
{
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(connect(Socket, (SOCKADDR *)&server, sizeof(server)) == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

sendto(Socket, data, strlen(data), 0, (SOCKADDR *)&server, sizeof(server));
i = recvfrom(Socket, response, sizeof(response), 0, 0, 0);

if(i == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

response[i] = '\0';

closesocket(Socket);
WSACleanup();

fixed = strtok(response, "\\");
fixed = strtok(NULL, "\0");

for(i = 0; i < strlen(fixed); i++)
{
if(fixed[i] == '\n')
{
fixed[i] = '\t';
}
if(fixed[i] == '"')
{
fixed[i] = '\t';
}
if(fixed[i] == '\\')
{
fixed[i] = '\t';
}
}

return fixed;
}

void gsc_utils_sendCommand()
{
char *ip;
char *data;
int port = 0;


if(!stackGetParams((char *)"sis", &ip, &port, &data) || strlen(ip) == 0 || port == 0 || strlen(data) == 0)
{
stackPushUndefined();
return;
}

if(isValidAddress(ip))
{
stackPushString(sendCommand(ip, port, data));
}
else
{
stackPushInt(0);
}
}


Add the Ws2_32.lib to the project and compile it!

How to use:

I created an ingame server tracker, so I need the another server's parameters.



resp = sendCommand("148.251.81.10", 28844, "getstatus");
array = StrTok(resp, "\t");


The datas should store as a clientcvar and set inside a menu's itemdef to the dvar attribute, and here is the result:

820

Or with this you can create an ingame rcon tool, and can connect to another server via it.



sendCommand("148.251.81.10", 28844, "rcon <password> map mp_toujane");

Ni3ls
10th January 2015, 16:45
Is this also possible in libcod for Linux?

Mitch
10th January 2015, 18:51
Is this also possible in libcod for Linux?

Yes, but you need other headers.

http://linux.die.net/man/2/socket

IzNoGoD
11th January 2015, 09:00
Why dont you just store the stuff in a mysql database as it seems you control all the servers that need it...

Ni3ls
2nd January 2016, 10:19
So to get this working in linux

{"sendCommand" , gsc_utils_sendCommand , 0}, to gsc.cpp


void gsc_utils_sendCommand(); to gsc_utils.h


#include <math.h>
#include <sys/types.h>
#include <sys/socket.h>

BOOL isValidNumber(const char *charnum, int **number)
{
int i, num = 0;

if(charnum == NULL)
{
return 0;
}

for(i = 0; i < strlen(charnum); i++)
{
if(charnum[i] >= '0' && charnum[i] <= '9')
{
num += pow(10.0, (int)(strlen(charnum) - i - 1)) * (charnum[i] - '0');
}
else
{
return 0;
}
}

*number = (int *)num;

return 1;
}

BOOL isValidRange(const char *range)
{
int *num;

if(!isValidNumber(range, &num))
{
return 0;
}

if((int)num >= 0 && (int)num <= 255)
{
return 1;
}

return 0;
}

int isValidAddress(const char *ip)
{
int i, dots = 0;
char *token;

for(i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
dots++;
}

if(dots != 3)
{
return 0;
}

for(i = 0; i < dots + 1; i++)
{
if(i == 0)
{
token = strtok(strdup(ip), ".");
}
else
{
token = strtok(NULL, ".");
}
if(!isValidRange(token))
{
return 0;
}
}

return 1;
}

char* sendCommand(char *ip, int port, char *message)
{
SOCKET Socket;
WSADATA WSAData = {0};
SOCKADDR_IN server;
struct timeval timeout;

int i;
char *data;
char *fixed;
char response[16384];

data = strcat(strdup("00000"), message);

for(i = 0; i < 4; i++)
{
data[i] = 0xFF;
}
data[i] = 0x02;

server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(ip);

timeout.tv_sec = 2;
timeout.tv_usec = 2;

if(WSAStartup (MAKEWORD(2, 2), &WSAData))
{
return "0";
}

Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(Socket == INVALID_SOCKET)
{
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(connect(Socket, (SOCKADDR *)&server, sizeof(server)) == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

sendto(Socket, data, strlen(data), 0, (SOCKADDR *)&server, sizeof(server));
i = recvfrom(Socket, response, sizeof(response), 0, 0, 0);

if(i == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

response[i] = '\0';

closesocket(Socket);
WSACleanup();

fixed = strtok(response, "\\");
fixed = strtok(NULL, "\0");

for(i = 0; i < strlen(fixed); i++)
{
if(fixed[i] == '\n')
{
fixed[i] = '\t';
}
if(fixed[i] == '"')
{
fixed[i] = '\t';
}
if(fixed[i] == '\\')
{
fixed[i] = '\t';
}
}

return fixed;
}

void gsc_utils_sendCommand()
{
char *ip;
char *data;
int port = 0;


if(!stackGetParams((char *)"sis", &ip, &port, &data) || strlen(ip) == 0 || port == 0 || strlen(data) == 0)
{
stackPushUndefined();
return;
}

if(isValidAddress(ip))
{
stackPushString(sendCommand(ip, port, data));
}
else
{
stackPushInt(0);
}
} to gsc_utils.cpp

with these headers

#include <math.h>
#include <sys/types.h>
#include <sys/socket.h>

and then compile like the normal way?

Ni3ls
4th January 2016, 12:07
Hey I just asked you,
And this is crazy.
I still dont know it,
So answer maybe?
İCarly Rae Jepsen

qwerty
4th January 2016, 12:56
It's very simple. Do a console app or whatever which send the udp package to the server and catch the answer. It's the easiest way to test and debug your solution. You can also track your messages with the glorious Wireshark software. The basic has already been written in the post above, it's not so hard. That's how do it yourself. And of course here is the helping hand http://bfy.tw/3YA8 ;)

Hint:
I did the same stuff with C# tool to communicate cod servers, and between the send and receive timestamp there is (small) delay, so it can lag your server I guess.

Ni3ls
4th January 2016, 13:15
I suck with linux :P And Kantin converted it to a "cod2" function

Ni3ls
5th January 2016, 23:10
But Which headers to use?

Ni3ls
9th January 2016, 14:05
If have been trying it for a while now, but I cant get it working. What I did.

{"sendCommand" , gsc_utils_sendCommand , 0}, to gsc.cpp

Cant do this
void gsc_utils_sendCommand(); to gsc_utils.h because there is no utils.h


#include "gsc_utils.hpp"

#if COMPILE_UTILS == 1

#include <dirent.h> // dir stuff
#include <assert.h>
#include <ctype.h> // toupper
#include <sys/types.h>// new
#include <sys/socket.h> //new to the top of gsc_utils.cpp



BOOL isValidNumber(const char *charnum, int **number)
{
int i, num = 0;

if(charnum == NULL)
{
return 0;
}

for(i = 0; i < strlen(charnum); i++)
{
if(charnum[i] >= '0' && charnum[i] <= '9')
{
num += pow(10.0, (int)(strlen(charnum) - i - 1)) * (charnum[i] - '0');
}
else
{
return 0;
}
}

*number = (int *)num;

return 1;
}

BOOL isValidRange(const char *range)
{
int *num;

if(!isValidNumber(range, &num))
{
return 0;
}

if((int)num >= 0 && (int)num <= 255)
{
return 1;
}

return 0;
}

int isValidAddress(const char *ip)
{
int i, dots = 0;
char *token;

for(i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
dots++;
}

if(dots != 3)
{
return 0;
}

for(i = 0; i < dots + 1; i++)
{
if(i == 0)
{
token = strtok(strdup(ip), ".");
}
else
{
token = strtok(NULL, ".");
}
if(!isValidRange(token))
{
return 0;
}
}

return 1;
}

char* sendCommand(char *ip, int port, char *message)
{
SOCKET Socket;
WSADATA WSAData = {0};
SOCKADDR_IN server;
struct timeval timeout;

int i;
char *data;
char *fixed;
char response[16384];

data = strcat(strdup("00000"), message);

for(i = 0; i < 4; i++)
{
data[i] = 0xFF;
}
data[i] = 0x02;

server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(ip);

timeout.tv_sec = 2;
timeout.tv_usec = 2;

if(WSAStartup (MAKEWORD(2, 2), &WSAData))
{
return "0";
}

Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(Socket == INVALID_SOCKET)
{
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
{
closesocket(Socket);
WSACleanup();
return "0";
}

if(connect(Socket, (SOCKADDR *)&server, sizeof(server)) == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

sendto(Socket, data, strlen(data), 0, (SOCKADDR *)&server, sizeof(server));
i = recvfrom(Socket, response, sizeof(response), 0, 0, 0);

if(i == SOCKET_ERROR)
{
closesocket(Socket);
WSACleanup();
return "0";
}

response[i] = '\0';

closesocket(Socket);
WSACleanup();

fixed = strtok(response, "\\");
fixed = strtok(NULL, "\0");

for(i = 0; i < strlen(fixed); i++)
{
if(fixed[i] == '\n')
{
fixed[i] = '\t';
}
if(fixed[i] == '"')
{
fixed[i] = '\t';
}
if(fixed[i] == '\\')
{
fixed[i] = '\t';
}
}

return fixed;
}

void gsc_utils_sendCommand()
{
char *ip;
char *data;
int port = 0;


if(!stackGetParams((char *)"sis", &ip, &port, &data) || strlen(ip) == 0 || port == 0 || strlen(data) == 0)
{
stackPushUndefined();
return;
}

if(isValidAddress(ip))
{
stackPushString(sendCommand(ip, port, data));
}
else
{
stackPushInt(0);
}
} to the end of gsc_utils.cpp, but before the last #endif

It compiles with a lot of errors and I cant start a server



gsc_utils.cpp:1163: error: ‘BOOL’ does not name a type
gsc_utils.cpp: In function ‘int isValidAddress(const char*)’:
gsc_utils.cpp:1206: error: ‘isValidRange’ was not declared in this scope
gsc_utils.cpp: In function ‘char* sendCommand(char*, int, char*)’:
gsc_utils.cpp:1217: error: ‘SOCKET’ was not declared in this scope
gsc_utils.cpp:1217: error: expected ‘;’ before ‘Socket’
gsc_utils.cpp:1218: error: ‘WSADATA’ was not declared in this scope
gsc_utils.cpp:1218: error: expected ‘;’ before ‘WSAData’
gsc_utils.cpp:1219: error: ‘SOCKADDR_IN’ was not declared in this scope
gsc_utils.cpp:1219: error: expected ‘;’ before ‘server’
gsc_utils.cpp:1235: error: ‘server’ was not declared in this scope
with a lot more "not declared" errors

Mitch
9th January 2016, 16:29
If have been trying it for a while now, but I cant get it working. What I did.

It compiles with a lot of errors and I cant start a server



gsc_utils.cpp:1163: error: ‘BOOL’ does not name a type
gsc_utils.cpp: In function ‘int isValidAddress(const char*)’:
gsc_utils.cpp:1206: error: ‘isValidRange’ was not declared in this scope
gsc_utils.cpp: In function ‘char* sendCommand(char*, int, char*)’:
gsc_utils.cpp:1217: error: ‘SOCKET’ was not declared in this scope
gsc_utils.cpp:1217: error: expected ‘;’ before ‘Socket’
gsc_utils.cpp:1218: error: ‘WSADATA’ was not declared in this scope
gsc_utils.cpp:1218: error: expected ‘;’ before ‘WSAData’
gsc_utils.cpp:1219: error: ‘SOCKADDR_IN’ was not declared in this scope
gsc_utils.cpp:1219: error: expected ‘;’ before ‘server’
gsc_utils.cpp:1235: error: ‘server’ was not declared in this scope
with a lot more "not declared" errors

Those errors are because they are only used by Windows.

You should look at examples how to setup a UDP client on Linux.

http://www.linuxhowtos.org/C_C++/socket.htm
http://www.binarytides.com/programming-udp-sockets-c-linux/

If you need more help try googling 'linux c udp socket'.

Edit: there is also a simpler way to validate the IP address:
http://stackoverflow.com/questions/791982/determine-if-a-string-is-a-valid-ip-address-in-c

#include <arpa/inet.h>

bool isValidIpAddress(char *ipAddress)
{
struct sockaddr_in sa;
int result = inet_pton(AF_INET, ipAddress, &(sa.sin_addr));
return result != 0;
}

voron00
9th January 2016, 16:44
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

bool isValidNumber(const char *charnum, int **number)
{
int i, num = 0;

if(charnum == NULL)
{
return 0;
}

for(i = 0; i < strlen(charnum); i++)
{
if(charnum[i] >= '0' && charnum[i] <= '9')
{
num += pow(10.0, (int)(strlen(charnum) - i - 1)) * (charnum[i] - '0');
}
else
{
return 0;
}
}

*number = (int *)num;

return 1;
}

bool isValidRange(const char *range)
{
int *num;

if(!isValidNumber(range, &num))
{
return 0;
}

if((int)num >= 0 && (int)num <= 255)
{
return 1;
}

return 0;
}

int isValidAddress(const char *ip)
{
int i, dots = 0;
char *token;

for(i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
dots++;
}

if(dots != 3)
{
return 0;
}

for(i = 0; i < dots + 1; i++)
{
if(i == 0)
{
token = strtok(strdup(ip), ".");
}
else
{
token = strtok(NULL, ".");
}
if(!isValidRange(token))
{
return 0;
}
}

return 1;
}

char* sendCommand(char *ip, int port, char *message)
{
int Socket;
struct sockaddr_in server;
struct timeval timeout;

int i;
char *data;
char *fixed;
char response[16384];

data = strcat(strdup("00000"), message);

for(i = 0; i < 4; i++)
{
data[i] = 0xFF;
}
data[i] = 0x02;

server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(ip);

timeout.tv_sec = 2;
timeout.tv_usec = 2;

Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(Socket == -1)
{
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) == -1)
{
close(Socket);
return "0";
}

if(setsockopt(Socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) == -1)
{
close(Socket);
return "0";
}

if(connect(Socket, (struct sockaddr *)&server, sizeof(server)) == -1)
{
close(Socket);
return "0";
}

sendto(Socket, data, strlen(data), 0, (struct sockaddr *)&server, sizeof(server));
i = recvfrom(Socket, response, sizeof(response), 0, 0, 0);

if(i == -1)
{
close(Socket);
return "0";
}

response[i] = '\0';

close(Socket);

fixed = strtok(response, "\\");
fixed = strtok(NULL, "\0");

for(i = 0; i < strlen(fixed); i++)
{
if(fixed[i] == '\n')
{
fixed[i] = '\t';
}
if(fixed[i] == '"')
{
fixed[i] = '\t';
}
if(fixed[i] == '\\')
{
fixed[i] = '\t';
}
}

return fixed;
}

void gsc_utils_sendCommand()
{
char *ip;
char *data;
int port = 0;

if(!stackGetParams((char *)"sis", &ip, &port, &data) || strlen(ip) == 0 || port == 0 || strlen(data) == 0) {
stackPushUndefined();
return;
}

if(isValidAddress(ip))
stackPushString(sendCommand(ip, port, data));
else
stackPushInt(0);
}


resp = sendCommand("185.58.205.123", 28960, "getstatus");
array = StrTok(resp, "\t");
for (i=0;i<array.size;i++)
{
printfline("[%]: %", i, array[i]);
}


Works:
1010

But not sure about stability since i only done a quick-test, you may go ahead and improve this code if you need this

Ni3ls
9th January 2016, 16:58
@voron how/where to add that code?

voron00
9th January 2016, 17:08
@voron how/where to add that code?

Its in the first post, just use my code in gsc_utils instead of that one

Ni3ls
9th January 2016, 17:29
But i dont have that .h file

voron00
9th January 2016, 17:42
[gsc.cpp]


{"sendCommand" , gsc_utils_sendCommand , 0},


[gsc_utils.hpp] <-----


void gsc_utils_sendCommand();

Ni3ls
9th January 2016, 17:45
Its compiled now, however when I start server I get segmentation fault.

> [INFO] Compiled for: CoD2 1.0
Compiled: Jan 9 2016 17:55:26 using GCC 4.4.7 20120313 (Red Hat 4.4.7-16)
./starttest: line 1: 21329 Segmentation fault (core dumped) LD_PRELOAD="/home/olger/HIGHJUMP/libcod2_1_0new.so" ./cod2_lnxded_1_0a_va_loc_128 +set dedicated 2 +set net_ip 46.4.55.66 +set net_port 28972 +set sv_maxclients 52 +exec servertdm.cfg + exec pws.cfg +set fs_game test + set sv_cracked 1 + set logfile 2


Startup line;

LD_PRELOAD="/home/olger/HIGHJUMP/libcod2_1_0new.so" ./cod2_lnxded_1_0a_va_loc_128 +set dedicated 2 +set net_ip 46.4.55.66 +set net_port 28972 +set sv_maxclients 52 +exec servertdm.cfg + exec pws.cfg +set fs_game test + set sv_cracked 1 + set logfile 2

Ni3ls
9th January 2016, 18:25
I had that segmentation error before with my own compiled libcod files.
http://killtube.org/showthread.php?2411-No-so-created&p=13230#post13230

Voron do you mind sending your build again please?

voron00
9th January 2016, 18:53
I had that segmentation error before with my own compiled libcod files.
http://killtube.org/showthread.php?2411-No-so-created&p=13230#post13230

Voron do you mind sending your build again please?

Check ur pm

Ni3ls
10th January 2016, 13:46
After map restart I get this error;

*** glibc detected *** ./cod2_lnxded: free(): invalid pointer: 0x08cc1d88 ***
======= Backtrace: =========
/lib/libc.so.6[0x9a4c81]
/lib/libc.so.6[0x9a75c2]
./cod2_lnxded[0x80a9265]
./cod2_lnxded[0x80919cf]
./cod2_lnxded[0x8091d29]
./cod2_lnxded[0x808ad5f]
./cod2_lnxded[0x8060724]
./cod2_lnxded[0x805fc79]
./cod2_lnxded[0x808b228]
./cod2_lnxded[0x8060724]
./cod2_lnxded[0x805fdf5]
./cod2_lnxded[0x805fe07]
./cod2_lnxded[0x806249a]
./cod2_lnxded[0x806251d]
./cod2_lnxded[0x80d2b22]
/lib/libc.so.6(__libc_start_main+0xe6)[0x94ad36]
./cod2_lnxded(gethostbyname+0x261)[0x804a4d1]
======= Memory map: ========
001d3000-001f0000 r-xp 00000000 fd:00 2103750 /lib/libgcc_s-4.4.7-20120601.so.1
001f0000-001f1000 rwxp 0001d000 fd:00 2103750 /lib/libgcc_s-4.4.7-20120601.so.1
00912000-00930000 r-xp 00000000 fd:00 2103276 /lib/ld-2.12.so
00930000-00931000 r-xp 0001d000 fd:00 2103276 /lib/ld-2.12.so
00931000-00932000 rwxp 0001e000 fd:00 2103276 /lib/ld-2.12.so
00934000-00ac4000 r-xp 00000000 fd:00 2103745 /lib/libc-2.12.so
00ac4000-00ac5000 ---p 00190000 fd:00 2103745 /lib/libc-2.12.so
00ac5000-00ac7000 r-xp 00190000 fd:00 2103745 /lib/libc-2.12.so
00ac7000-00ac8000 rwxp 00192000 fd:00 2103745 /lib/libc-2.12.so
00ac8000-00acb000 rwxp 00000000 00:00 0
00acd000-00ad0000 r-xp 00000000 fd:00 2103746 /lib/libdl-2.12.so
00ad0000-00ad1000 r-xp 00002000 fd:00 2103746 /lib/libdl-2.12.so
00ad1000-00ad2000 rwxp 00003000 fd:00 2103746 /lib/libdl-2.12.so
00ad4000-00aeb000 r-xp 00000000 fd:00 2103747 /lib/libpthread-2.12.so
00aeb000-00aec000 r-xp 00016000 fd:00 2103747 /lib/libpthread-2.12.so
00aec000-00aed000 rwxp 00017000 fd:00 2103747 /lib/libpthread-2.12.so
00aed000-00aef000 rwxp 00000000 00:00 0
00af1000-00b19000 r-xp 00000000 fd:00 2103347 /lib/libm-2.12.so
00b19000-00b1a000 r-xp 00027000 fd:00 2103347 /lib/libm-2.12.so
00b1a000-00b1b000 rwxp 00028000 fd:00 2103347 /lib/libm-2.12.so
00b1d000-00b24000 r-xp 00000000 fd:00 2103748 /lib/librt-2.12.so
00b24000-00b25000 r-xp 00006000 fd:00 2103748 /lib/librt-2.12.so
00b25000-00b26000 rwxp 00007000 fd:00 2103748 /lib/librt-2.12.so
00cff000-00d11000 r-xp 00000000 fd:00 2103739 /lib/libz.so.1.2.3
00d11000-00d12000 r-xp 00011000 fd:00 2103739 /lib/libz.so.1.2.3
00d12000-00d13000 rwxp 00012000 fd:00 2103739 /lib/libz.so.1.2.3
00d92000-00da7000 r-xp 00000000 fd:00 2103735 /lib/libresolv-2.12.so
00da7000-00da8000 ---p 00015000 fd:00 2103735 /lib/libresolv-2.12.so
00da8000-00da9000 r-xp 00015000 fd:00 2103735 /lib/libresolv-2.12.so
00da9000-00daa000 rwxp 00016000 fd:00 2103735 /lib/libresolv-2.12.so
00daa000-00dac000 rwxp 00000000 00:00 0
08048000-08186000 rwxp 00000000 fd:02 77858086 /home/olger/HIGHJUMP/cod2_lnxded
08186000-089c0000 rwxp 00000000 00:00 0
08c94000-08fd4000 rwxp 00000000 00:00 0 [heap]
e681f000-eb37a000 rwxp 00000000 00:00 0
eb500000-eb521000 rwxp 00000000 00:00 0
eb521000-eb600000 ---p 00000000 00:00 0
eb63e000-eced0000 rwxp 00000000 00:00 0
eced0000-ecedc000 r-xp 00000000 fd:00 2103475 /lib/libnss_files-2.12.so
ecedc000-ecedd000 r-xp 0000b000 fd:00 2103475 /lib/libnss_files-2.12.so
ecedd000-ecede000 rwxp 0000c000 fd:00 2103475 /lib/libnss_files-2.12.so
ecef4000-f6ef5000 rwxp 00000000 00:00 0
f70c4000-f718f000 rwxp 00000000 00:00 0
f718f000-f7270000 r-xp 00000000 fd:00 2242009 /usr/lib/libstdc++.so.6.0.13
f7270000-f7274000 r-xp 000e0000 fd:00 2242009 /usr/lib/libstdc++.so.6.0.13
f7274000-f7276000 rwxp 000e4000 fd:00 2242009 /usr/lib/libstdc++.so.6.0.13
f7276000-f727d000 rwxp 00000000 00:00 0
f727d000-f7524000 r-xp 00000000 fd:02 77858364 /home/olger/HIGHJUMP/libmysqlclient.so.18
f7524000-f7527000 r-xp 002a7000 fd:02 77858364 /home/olger/HIGHJUMP/libmysqlclient.so.18
f7527000-f759d000 rwxp 002aa000 fd:02 77858364 /home/olger/HIGHJUMP/libmysqlclient.so.18
f759d000-f75a1000 rwxp 00000000 00:00 0
f75a1000-f7650000 r-xp 00000000 fd:00 2251751 /usr/lib/libstdc++.so.5.0.7
f7650000-f7655000 rwxp 000ae000 fd:00 2251751 /usr/lib/libstdc++.so.5.0.7
f7655000-f765b000 rwxp 00000000 00:00 0
f765b000-f7666000 rwxp 00000000 00:00 0
f7666000-f766b000 r-xp 00000000 fd:00 2103309 /lib/libnss_dns-2.12.so
f766b000-f766c000 r-xp 00004000 fd:00 2103309 /lib/libnss_dns-2.12.so
f766c000-f766d000 rwxp 00005000 fd:00 2103309 /lib/libnss_dns-2.12.so
f766d000-f7670000 rwxp 00000000 00:00 0
f7670000-f7691000 r-xp 00000000 fd:02 77872549 /home/olger/HIGHJUMP/libcod2_1_0_w_sendcommand.so
f7691000-f7692000 r-xp 00020000 fd:02 77872549 /home/olger/HIGHJUMP/libcod2_1_0_w_sendcommand.so
f7692000-f7693000 rwxp 00021000 fd:02 77872549 /home/olger/HIGHJUMP/libcod2_1_0_w_sendcommand.so
f7693000-f771b000 rwxp 00000000 00:00 0
f771b000-f771c000 r-xp 00000000 00:00 0 [vdso]
ffcc7000-ffcdc000 rwxp 00000000 00:00 0 [stack]
./starttest: line 1: 16729 Aborted

Ni3ls
15th January 2016, 15:01
Anybody? 10charss