static int DoomSpecificInfo (char *buffer, char *end) { const char *arg; int size = end-buffer-2; int i, p; p = 0; p += snprintf (buffer+p, size-p, GAMENAME" version %s (%s)\n", GetVersionString(), GetGitHash()); #ifdef __VERSION__ p += snprintf (buffer+p, size-p, "Compiler version: %s\n", __VERSION__); #endif p += snprintf (buffer+p, size-p, "\nCommand line:"); for (i = 0; i < Args->NumArgs(); ++i) { p += snprintf (buffer+p, size-p, " %s", Args->GetArg(i)); } p += snprintf (buffer+p, size-p, "\n"); for (i = 0; (arg = Wads.GetWadName (i)) != NULL; ++i) { p += snprintf (buffer+p, size-p, "\nWad %d: %s", i, arg); } if (gamestate != GS_LEVEL && gamestate != GS_TITLELEVEL) { p += snprintf (buffer+p, size-p, "\n\nNot in a level."); } else { char name[9]; strncpy (name, level.mapname, 8); name[8] = 0; p += snprintf (buffer+p, size-p, "\n\nCurrent map: %s", name); if (!viewactive) { p += snprintf (buffer+p, size-p, "\n\nView not active."); } else { p += snprintf (buffer+p, size-p, "\n\nviewx = %d", (int)viewx); p += snprintf (buffer+p, size-p, "\nviewy = %d", (int)viewy); p += snprintf (buffer+p, size-p, "\nviewz = %d", (int)viewz); p += snprintf (buffer+p, size-p, "\nviewangle = %x", (unsigned int)viewangle); } } buffer[p++] = '\n'; buffer[p++] = '\0'; return p; }
void DoomSpecificInfo (char *buffer, size_t bufflen) { const char *arg; char *const buffend = buffer + bufflen - 2; // -2 for CRLF at end int i; buffer += mysnprintf (buffer, buffend - buffer, GAMENAME " version %s (%s)", GetVersionString(), GetGitHash()); buffer += mysnprintf (buffer, buffend - buffer, "\r\nCommand line: %s\r\n", GetCommandLine()); for (i = 0; (arg = Wads.GetWadName (i)) != NULL; ++i) { buffer += mysnprintf (buffer, buffend - buffer, "\r\nWad %d: %s", i, arg); } if (gamestate != GS_LEVEL && gamestate != GS_TITLELEVEL) { buffer += mysnprintf (buffer, buffend - buffer, "\r\n\r\nNot in a level."); } else { buffer += mysnprintf (buffer, buffend - buffer, "\r\n\r\nCurrent map: %s", level.MapName.GetChars()); if (!viewactive) { buffer += mysnprintf (buffer, buffend - buffer, "\r\n\r\nView not active."); } else { buffer += mysnprintf (buffer, buffend - buffer, "\r\n\r\nviewx = %f", ViewPos.X); buffer += mysnprintf (buffer, buffend - buffer, "\r\nviewy = %f", ViewPos.Y); buffer += mysnprintf (buffer, buffend - buffer, "\r\nviewz = %f", ViewPos.Z); buffer += mysnprintf (buffer, buffend - buffer, "\r\nviewangle = %f", ViewAngle); } } *buffer++ = '\r'; *buffer++ = '\n'; *buffer++ = '\0'; }