Prechádzať zdrojové kódy

AccountDB_TXT will now correctly read inconsistent EOLs (bugreport:1934)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13015 54d463be-8e91-2dee-dedb-b68131a5f0ec
ultramage 17 rokov pred
rodič
commit
eef8f96e51
2 zmenil súbory, kde vykonal 4 pridanie a 3 odobranie
  1. 1 0
      Changelog-Trunk.txt
  2. 3 3
      src/login/account_txt.c

+ 1 - 0
Changelog-Trunk.txt

@@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2008/07/30
+	* AccountDB_TXT will now correctly read inconsistent EOLs (bugreport:1934)
 	* Removed the IRC bot system, now a customization (see topic:194306)
 2008/07/29
 	* Renamed struct 'skill' to 's_skill' to remove naming collisions.

+ 3 - 3
src/login/account_txt.c

@@ -127,13 +127,13 @@ static bool account_db_txt_init(AccountDB* self)
 		if( line[0] == '/' && line[1] == '/' )
 			continue;
 
-		if( sscanf(line, "%d%n", &v, &n) == 1 && line[n] == '\n' )
+		if( sscanf(line, "%d%n", &v, &n) == 1 && (line[n] == '\n' || line[n] == '\r') )
 		{// format version definition
 			version = v;
 			continue;
 		}
 
-		if( sscanf(line, "%d\t%%newid%%%n", &account_id, &n) == 1 && line[n] == '\n' )
+		if( sscanf(line, "%d\t%%newid%%%n", &account_id, &n) == 1 && (line[n] == '\n' || line[n] == '\r') )
 		{// auto-increment
 			if( account_id > db->next_account_id )
 				db->next_account_id = account_id;
@@ -451,7 +451,7 @@ static bool mmo_auth_fromstr(struct mmo_account* a, char* str, unsigned int vers
 	memset(a, 0x00, sizeof(struct mmo_account));
 
 	// extract tab-separated columns from line
-	count = sv_split(str, strlen(str), 0, '\t', fields, ARRAYLENGTH(fields), SV_NOESCAPE_NOTERMINATE);
+	count = sv_split(str, strlen(str), 0, '\t', fields, ARRAYLENGTH(fields), (e_svopt)(SV_TERMINATE_LF|SV_TERMINATE_CRLF));
 
 	if( version == ACCOUNT_TXT_DB_VERSION && count == 13 )
 	{