(svn r23603) -Add: support for control commands in strings, in both network and safe/load (Rubidium)
This commit is contained in:
@@ -1089,7 +1089,14 @@ static void SlString(void *ptr, size_t length, VarType conv)
|
||||
}
|
||||
|
||||
((char *)ptr)[len] = '\0'; // properly terminate the string
|
||||
str_validate((char *)ptr, (char *)ptr + len);
|
||||
StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK;
|
||||
if ((conv & SLF_ALLOW_CONTROL) != 0) {
|
||||
settings = settings | SVS_ALLOW_CONTROL_CODE;
|
||||
}
|
||||
if ((conv & SLF_ALLOW_NEWLINE) != 0) {
|
||||
settings = settings | SVS_ALLOW_NEWLINE;
|
||||
}
|
||||
str_validate((char *)ptr, (char *)ptr + len, settings);
|
||||
break;
|
||||
}
|
||||
case SLA_PTRS: break;
|
||||
@@ -1442,7 +1449,7 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld)
|
||||
}
|
||||
break;
|
||||
case SL_ARR: SlArray(ptr, sld->length, conv); break;
|
||||
case SL_STR: SlString(ptr, sld->length, conv); break;
|
||||
case SL_STR: SlString(ptr, sld->length, sld->conv); break;
|
||||
case SL_LST: SlList(ptr, (SLRefType)conv); break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
|
@@ -174,7 +174,9 @@ enum VarTypes {
|
||||
SLF_NOT_IN_SAVE = 1 << 8, ///< do not save with savegame, basically client-based
|
||||
SLF_NOT_IN_CONFIG = 1 << 9, ///< do not save to config file
|
||||
SLF_NO_NETWORK_SYNC = 1 << 10, ///< do not synchronize over network (but it is saved if SLF_NOT_IN_SAVE is not set)
|
||||
/* 5 more possible flags */
|
||||
SLF_ALLOW_CONTROL = 1 << 11, ///< allow control codes in the strings
|
||||
SLF_ALLOW_NEWLINE = 1 << 12, ///< allow new lines in the strings
|
||||
/* 3 more possible flags */
|
||||
};
|
||||
|
||||
typedef uint32 VarType;
|
||||
|
Reference in New Issue
Block a user