summaryrefslogtreecommitdiffstats
path: root/friendfinder/receiver.c
diff options
context:
space:
mode:
Diffstat (limited to 'friendfinder/receiver.c')
-rw-r--r--friendfinder/receiver.c54
1 files changed, 42 insertions, 12 deletions
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index f921c4c..7033c9b 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -14,6 +14,7 @@ char sender_name[100];
char own_nickname[100];
char *lat, *lon;
char *receiver_server_ip;
+char *last_sender;
int username_length;
int ret;
@@ -66,45 +67,76 @@ void dump_data(char* lat, char* lon, char* nick)
void get_position(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
-
char *decrypted_lat = (char*) malloc(sizeof(char));
char *decrypted_lon = (char*) malloc(sizeof(char));
char *sender_org = (char*) malloc(username_length + 1);
-
+
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
strncpy(sender_org, sender_name, username_length);
sender_org[username_length] = '\0';
- if (sender_name != NULL && strcmp(sender_org, own_nickname) != 0 && strcmp(sender_name, "_s") > 0)
-// if (sender_name != NULL && strcmp(sender_name, "_s") > 0)
+ last_sender = (char*) malloc(strlen(sender_name));
+ last_sender = sender_name;
+
+ if (sender_name != NULL && strcmp(sender_org, own_nickname) != 0 && strcmp(sender_name, "_s") > 0 && strcmp(params[1], "connected") != 0)
{
if (counter % 2 != 0)
{
BF_ecb_encrypt(params[1], decrypted_lat, &key, BF_DECRYPT);
lat = decrypted_lat;
- //printf("decrypted_lat %s \n", decrypted_lat);
got_lat = 1;
}
- if (counter % 2 == 0)
+ if (counter % 2 == 0 && strcmp(last_sender, sender_name) == 0 )
{
BF_ecb_encrypt(params[1], decrypted_lon, &key, BF_DECRYPT);
lon = decrypted_lon;
- //printf("decrypted_lon %s \n", decrypted_lon);
got_lon = 1;
}
if(got_lon == 1 && got_lat == 1)
{
- dump_data(lat, lon, sender_name);
+ double _lat, _lon;
+ _lat = atof(lat);
+ _lon = atof(lon);
+
+ /*
+ if (_lat < 0)
+ {
+ new_lon = atof(lat) * (-1);
+ sprintf(helper_lon, "%f", new_lon);
+
+ new_lat = atof(lon);
+ sprintf(lat, "%f", new_lat);
+ }
+
+ else
+ {
+ _lat = _lat * (-1);
+ sprintf(lat, "%f", _lat);
+
+ sprintf(helper_lon, "%f", _lon);
+ }
+ printf("RECEIVER: lat %s lon %s \n", lat, helper_lon);
+ dump_data(lat, helper_lon, sender_name);*/
+
+ if (_lat > _lon)
+ {
+ dump_data(lat, lon, sender_name);
+ }
+
+ if (_lat < _lon)
+ {
+ dump_data(lon, lat, sender_name);
+ }
+
got_lon = 0;
got_lat = 0;
}
-
+
irc_cmd_msg(session, "#test", sender_name);
counter++;
}
-
}
void on_connect_receiver(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
@@ -130,7 +162,6 @@ void receiver_main(void *user)
if (receiver_server_ip != NULL && user != NULL)
{
- //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehÃĪngt....fixen
strcat(username, "_r");
if (init_connection_receiver(receiver_server_ip, username) == 0)
@@ -145,5 +176,4 @@ void receiver_main(void *user)
{
printf("RECEIVER: error ip not set! Receiver can't be started\n");
}
-
}