File diff r11869:98a01e945794 → r11870:92eb16f6d311
src/strgen/strgen.cpp
Show inline comments
 
@@ -133,23 +133,27 @@ static LangString *HashFind(const char *
 
#ifdef _MSC_VER
 
# define LINE_NUM_FMT "(%d)"
 
#else
 
# define LINE_NUM_FMT ":%d"
 
#endif
 

	
 
static void CDECL strgen_warning(const char *s, ...) WARN_FORMAT(1, 2);
 

	
 
static void CDECL strgen_warning(const char *s, ...)
 
{
 
	char buf[1024];
 
	va_list va;
 
	va_start(va, s);
 
	vsnprintf(buf, lengthof(buf), s, va);
 
	va_end(va);
 
	fprintf(stderr, "%s" LINE_NUM_FMT ": warning: %s\n", _file, _cur_line, buf);
 
	_warnings++;
 
}
 

	
 
static void CDECL strgen_error(const char *s, ...) WARN_FORMAT(1, 2);
 

	
 
static void CDECL strgen_error(const char *s, ...)
 
{
 
	char buf[1024];
 
	va_list va;
 
	va_start(va, s);
 
	vsnprintf(buf, lengthof(buf), s, va);
 
@@ -460,13 +464,13 @@ static const CmdStruct *ParseCommandStri
 
	do {
 
		c = *s++;
 
	} while (c != '}' && c != ' ' && c != '=' && c != '.' && c != 0);
 

	
 
	cmd = FindCmd(start, s - start - 1);
 
	if (cmd == NULL) {
 
		strgen_error("Undefined command '%.*s'", s - start - 1, start);
 
		strgen_error("Undefined command '%.*s'", (int)(s - start - 1), start);
 
		return NULL;
 
	}
 

	
 
	if (c == '.') {
 
		const char *casep = s;
 

	
 
@@ -597,13 +601,13 @@ static void ExtractCommandString(ParsedC
 
			if (argno != -1) argidx = argno;
 
			if (argidx < 0 || (uint)argidx >= lengthof(p->cmd)) error("invalid param idx %d", argidx);
 
			if (p->cmd[argidx] != NULL && p->cmd[argidx] != ar) error("duplicate param idx %d", argidx);
 

	
 
			p->cmd[argidx++] = ar;
 
		} else if (!(ar->flags & C_DONTCOUNT)) { // Ignore some of them
 
			if (p->np >= lengthof(p->pairs)) error("too many commands in string, max %d", lengthof(p->pairs));
 
			if (p->np >= lengthof(p->pairs)) error("too many commands in string, max " PRINTF_SIZE, lengthof(p->pairs));
 
			p->pairs[p->np].a = ar;
 
			p->pairs[p->np].v = param[0] != '\0' ? strdup(param) : "";
 
			p->np++;
 
		}
 
	}
 
}
 
@@ -731,13 +735,13 @@ static void HandleString(char *str, bool
 
			strgen_error("Base string name '%s' doesn't exist yet. Define it before defining a case.", str);
 
			return;
 
		}
 

	
 
		if (ent == NULL) {
 
			if (_strings[_next_string_id]) {
 
				strgen_error("String ID 0x%X for '%s' already in use by '%s'", ent, str, _strings[_next_string_id]->name);
 
				strgen_error("String ID 0x%X for '%s' already in use by '%s'", _next_string_id, str, _strings[_next_string_id]->name);
 
				return;
 
			}
 

	
 
			/* Allocate a new LangString */
 
			ent = CallocT<LangString>(1);
 
			_strings[_next_string_id] = ent;