va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
- printf(": %s\n", strerror(err));
+ printf(": %s\n", util_strerror(err));
}
static void qcvmerror(qc_program *prog, const char *fmt, ...)
else printf("(none)");
printf("\n");
}
- fflush(stdout);
}
static qcint prog_enterfunction(qc_program *prog, prog_section_function *func)
const char *value;
} qcvm_parameter;
-qcvm_parameter *main_params = NULL;
+static qcvm_parameter *main_params = NULL;
#define CheckArgs(num) do { \
if (prog->argc != (num)) { \
qcany str;
CheckArgs(1);
num = GetArg(0);
- snprintf(buffer, sizeof(buffer), "%g", num->_float);
+ util_snprintf(buffer, sizeof(buffer), "%g", num->_float);
str.string = prog_tempstring(prog, buffer);
Return(str);
return 0;
qcany num;
CheckArgs(1);
str = GetArg(0);
- num._float = strtof(prog_getstring(prog, str->string), NULL);
+ num._float = (float)strtod(prog_getstring(prog, str->string), NULL);
Return(num);
return 0;
}
qcany str;
CheckArgs(1);
num = GetArg(0);
- snprintf(buffer, sizeof(buffer), "'%g %g %g'", num->vector[0], num->vector[1], num->vector[2]);
+ util_snprintf(buffer, sizeof(buffer), "'%g %g %g'", num->vector[0], num->vector[1], num->vector[2]);
str.string = prog_tempstring(prog, buffer);
Return(str);
return 0;
qcany str;
CheckArgs(1);
num = GetArg(0);
- snprintf(buffer, sizeof(buffer), "%i", num->_int);
+ util_snprintf(buffer, sizeof(buffer), "%i", num->_int);
str.string = prog_tempstring(prog, buffer);
Return(str);
return 0;
}
}
+void escapestring(char* dest, const char* src) {
+ char c;
+ while ((c = *(src++))) {
+ switch(c) {
+ case '\t':
+ *(dest++) = '\\', *(dest++) = 't';
+ break;
+ case '\n':
+ *(dest++) = '\\', *(dest++) = 'n';
+ break;
+ case '\r':
+ *(dest++) = '\\', *(dest++) = 'r';
+ break;
+ case '\\':
+ *(dest++) = '\\', *(dest++) = '\\';
+ break;
+ case '\"':
+ *(dest++) = '\\', *(dest++) = '\"';
+ break;
+ default:
+ *(dest++) = c;
+ }
+ }
+ *dest = '\0';
+}
+
void prog_disasm_function(qc_program *prog, size_t id);
int main(int argc, char **argv)
{
return 0;
}
if (opts_printdefs) {
+ char *escape = NULL;
+ const char *getstring = NULL;
+
for (i = 0; i < vec_size(prog->defs); ++i) {
printf("Global: %8s %-16s at %u%s",
type_name[prog->defs[i].type & DEF_TYPEMASK],
printf(" [init: %u]", (unsigned)( ((qcany*)(prog->globals + prog->defs[i].offset))->_int ));
break;
case TYPE_STRING:
- printf(" [init: `%s`]", prog_getstring(prog, ((qcany*)(prog->globals + prog->defs[i].offset))->string ));
+ getstring = prog_getstring(prog, ((qcany*)(prog->globals + prog->defs[i].offset))->string);
+ escape = (char*)mem_a(strlen(getstring) * 2 + 1); /* will be enough */
+ escapestring(escape, getstring);
+ printf(" [init: `%s`]", escape);
+
+ mem_d(escape); /* free */
break;
default:
break;