Browse Source

* Emulated strtok_r functions to work strictly with ANSI compilers.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5611 54d463be-8e91-2dee-dedb-b68131a5f0ec
Lance 19 năm trước cách đây
mục cha
commit
25d8aba1fe
2 tập tin đã thay đổi với 12 bổ sung5 xóa
  1. 1 0
      Changelog-Trunk.txt
  2. 11 5
      src/map/irc.c

+ 1 - 0
Changelog-Trunk.txt

@@ -5,6 +5,7 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 2006/03/15
+	* Emulated strtok_r functions to work strictly with ANSI compilers. [Lance]
 	* Added battle config options item_rate_adddrop, item_drop_add_min and
 	  item_drop_add_max to control drop rate of card-acquired loot bonuses.
 	  (conf/battle/drops.conf) [Skotlex]

+ 11 - 5
src/map/irc.c

@@ -208,9 +208,10 @@ void irc_parse_sub(int fd, char *incoming_string)
 	sscanf(incoming_string, ":%255s %255s %255s :%4095[^\n]", source, command, target, message);
 	if (source != NULL) {
 		if (strstr(source,"!") != NULL) {
-			source_nick = strtok_r(source,"!",&state_mgr);
-			source_ident = strtok_r(NULL,"@",&state_mgr);
-			source_host = strtok_r(NULL,"%%",&state_mgr);
+			sscanf(source,"%s!%s@$s",source_nick, source_ident, source_host);
+			//source_nick = strtok_r(source,"!",&state_mgr);
+			//source_ident = strtok_r(NULL,"@",&state_mgr);
+			//source_host = strtok_r(NULL,"%%",&state_mgr);
 		}
 	}
 	if (irc_si->state == 0){
@@ -249,15 +250,20 @@ void irc_parse_sub(int fd, char *incoming_string)
 
 int send_to_parser(int fd, char *input,char key[2])
 {
+	char format[4];
 	char *temp_string=NULL;
+	char *next_string=NULL;
 	char *state_mgr=NULL;
 	int total_loops=0;
 
-	temp_string = strtok_r(input,key,&state_mgr);
+	//temp_string = strtok_r(input,key,&state_mgr);
+	sprintf(format,"%s%s%s","%s",key,"%s");
+	sscanf(input, format, temp_string, next_string);
 	while (temp_string != NULL){
 		total_loops = total_loops+1;
 		irc_parse_sub(fd,temp_string);
-		temp_string = strtok_r(NULL,key,&state_mgr);
+		//temp_string = strtok_r(NULL,key,&state_mgr);
+		sscanf(next_string, format, temp_string, next_string);
 	}
 	return total_loops;
 }