|
@@ -14435,10 +14435,7 @@ mg_check_feature(unsigned feature)
|
|
|
int
|
|
|
mg_print_system_info(int prm1, char *prm2)
|
|
|
{
|
|
|
- //WARNING: these parameters are not being used
|
|
|
- (void)prm1;
|
|
|
- (void)prm2;
|
|
|
-
|
|
|
+ char buf[256];
|
|
|
const char *version = mg_version();
|
|
|
#if defined(_WIN32)
|
|
|
#if !defined(__SYMBIAN32__)
|
|
@@ -14462,124 +14459,220 @@ mg_print_system_info(int prm1, char *prm2)
|
|
|
dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
|
|
|
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
|
|
|
|
|
|
- fprintf(stdout,
|
|
|
- "\nWindows %u.%u\n",
|
|
|
- (unsigned)dwMajorVersion,
|
|
|
- (unsigned)dwMinorVersion);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Windows %u.%u",
|
|
|
+ (unsigned)dwMajorVersion,
|
|
|
+ (unsigned)dwMinorVersion);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
|
|
|
- fprintf(stdout,
|
|
|
- "CPU: type %u, cores %u, mask %x\n",
|
|
|
- (unsigned)si.wProcessorArchitecture,
|
|
|
- (unsigned)si.dwNumberOfProcessors,
|
|
|
- (unsigned)si.dwActiveProcessorMask);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "CPU: type %u, cores %u, mask %x",
|
|
|
+ (unsigned)si.wProcessorArchitecture,
|
|
|
+ (unsigned)si.dwNumberOfProcessors,
|
|
|
+ (unsigned)si.dwActiveProcessorMask);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
|
|
|
#else
|
|
|
- fprintf(stdout, "\n%s - Symbian\n");
|
|
|
+ mg_snprintf(NULL, NULL, buf, sizeof(buf), "%s - Symbian");
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#endif
|
|
|
#else
|
|
|
struct utsname name;
|
|
|
memset(&name, 0, sizeof(name));
|
|
|
uname(&name);
|
|
|
|
|
|
- fprintf(stdout,
|
|
|
- "\n%s %s (%s) - %s\n",
|
|
|
- name.sysname,
|
|
|
- name.version,
|
|
|
- name.release,
|
|
|
- name.machine);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "%s %s (%s) - %s",
|
|
|
+ name.sysname,
|
|
|
+ name.version,
|
|
|
+ name.release,
|
|
|
+ name.machine);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
- fprintf(stdout, "Features:");
|
|
|
- if (mg_check_feature(1)) {
|
|
|
- fprintf(stdout, " Files");
|
|
|
- }
|
|
|
- if (mg_check_feature(2)) {
|
|
|
- fprintf(stdout, " HTTPS");
|
|
|
- }
|
|
|
- if (mg_check_feature(4)) {
|
|
|
- fprintf(stdout, " CGI");
|
|
|
- }
|
|
|
- if (mg_check_feature(8)) {
|
|
|
- fprintf(stdout, " IPv6");
|
|
|
- }
|
|
|
- if (mg_check_feature(16)) {
|
|
|
- fprintf(stdout, " WebSockets");
|
|
|
- }
|
|
|
- if (mg_check_feature(32)) {
|
|
|
- fprintf(stdout, " Lua");
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Features: %X%s%s%s%s%s%s",
|
|
|
+ mg_check_feature(0xFFFFFFFFu),
|
|
|
+ mg_check_feature(1) ? " Files" : "",
|
|
|
+ mg_check_feature(2) ? " HTTPS" : "",
|
|
|
+ mg_check_feature(4) ? " CGI" : "",
|
|
|
+ mg_check_feature(8) ? " IPv6" : "",
|
|
|
+ mg_check_feature(16) ? " WebSockets" : "",
|
|
|
+ mg_check_feature(32) ? " Lua" : "");
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
}
|
|
|
- fprintf(stdout, "\n");
|
|
|
|
|
|
#ifdef USE_LUA
|
|
|
- fprintf(stdout,
|
|
|
- "Lua Version: %u (%s)\n",
|
|
|
- (unsigned)LUA_VERSION_NUM,
|
|
|
- LUA_RELEASE);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Lua Version: %u (%s)",
|
|
|
+ (unsigned)LUA_VERSION_NUM,
|
|
|
+ LUA_RELEASE);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
- fprintf(stdout, "Version: %s\n", version);
|
|
|
+ mg_snprintf(NULL, NULL, buf, sizeof(buf), "Version: %s", version);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
|
|
|
- fprintf(stdout, "Build: %s\n", __DATE__);
|
|
|
+ mg_snprintf(NULL, NULL, buf, sizeof(buf), "Build: %s", __DATE__);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
|
|
|
/* http://sourceforge.net/p/predef/wiki/Compilers/ */
|
|
|
#if defined(_MSC_VER)
|
|
|
- fprintf(stdout,
|
|
|
- "MSC: %u (%u)\n",
|
|
|
- (unsigned)_MSC_VER,
|
|
|
- (unsigned)_MSC_FULL_VER);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "MSC: %u (%u)",
|
|
|
+ (unsigned)_MSC_VER,
|
|
|
+ (unsigned)_MSC_FULL_VER);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__MINGW64__)
|
|
|
- fprintf(stdout,
|
|
|
- "MinGW64: %u.%u\n",
|
|
|
- (unsigned)__MINGW64_VERSION_MAJOR,
|
|
|
- (unsigned)__MINGW64_VERSION_MINOR);
|
|
|
- fprintf(stdout,
|
|
|
- "MinGW32: %u.%u\n",
|
|
|
- (unsigned)__MINGW32_MAJOR_VERSION,
|
|
|
- (unsigned)__MINGW32_MINOR_VERSION);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "MinGW64: %u.%u",
|
|
|
+ (unsigned)__MINGW64_VERSION_MAJOR,
|
|
|
+ (unsigned)__MINGW64_VERSION_MINOR);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "MinGW32: %u.%u",
|
|
|
+ (unsigned)__MINGW32_MAJOR_VERSION,
|
|
|
+ (unsigned)__MINGW32_MINOR_VERSION);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__MINGW32__)
|
|
|
- fprintf(stdout,
|
|
|
- "MinGW32: %u.%u\n",
|
|
|
- (unsigned)__MINGW32_MAJOR_VERSION,
|
|
|
- (unsigned)__MINGW32_MINOR_VERSION);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "MinGW32: %u.%u",
|
|
|
+ (unsigned)__MINGW32_MAJOR_VERSION,
|
|
|
+ (unsigned)__MINGW32_MINOR_VERSION);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__clang__)
|
|
|
- fprintf(stdout,
|
|
|
- "clang: %u.%u.%u (%s)\n",
|
|
|
- __clang_major__,
|
|
|
- __clang_minor__,
|
|
|
- __clang_patchlevel__,
|
|
|
- __clang_version__);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "clang: %u.%u.%u (%s)",
|
|
|
+ __clang_major__,
|
|
|
+ __clang_minor__,
|
|
|
+ __clang_patchlevel__,
|
|
|
+ __clang_version__);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__GNUC__)
|
|
|
- fprintf(stdout,
|
|
|
- "gcc: %u.%u.%u\n",
|
|
|
- (unsigned)__GNUC__,
|
|
|
- (unsigned)__GNUC_MINOR__,
|
|
|
- (unsigned)__GNUC_PATCHLEVEL__);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "gcc: %u.%u.%u",
|
|
|
+ (unsigned)__GNUC__,
|
|
|
+ (unsigned)__GNUC_MINOR__,
|
|
|
+ (unsigned)__GNUC_PATCHLEVEL__);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__INTEL_COMPILER)
|
|
|
- fprintf(stdout, "Intel C/C++: %u\n", (unsigned)__INTEL_COMPILER);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Intel C/C++: %u",
|
|
|
+ (unsigned)__INTEL_COMPILER);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__BORLANDC__)
|
|
|
- fprintf(stdout, "Borland C: 0x%x\n", (unsigned)__BORLANDC__);
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Borland C: 0x%x",
|
|
|
+ (unsigned)__BORLANDC__);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#elif defined(__SUNPRO_C)
|
|
|
- fprintf(stdout, "Solaris: 0x%x\n", (unsigned)__SUNPRO_C);
|
|
|
+ mg_snprintf(
|
|
|
+ NULL, NULL, buf, sizeof(buf), "Solaris: 0x%x", (unsigned)__SUNPRO_C);
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#else
|
|
|
- fprintf(stdout, "Other\n");
|
|
|
+ mg_snprintf(NULL, NULL, buf, sizeof(buf), "Other");
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
#endif
|
|
|
/* Determine 32/64 bit data mode.
|
|
|
* see https://en.wikipedia.org/wiki/64-bit_computing */
|
|
|
- fprintf(stdout,
|
|
|
- "Data model: i:%u/%u/%u/%u, f:%u/%u/%u, c:%u/%u, "
|
|
|
- "p:%u, s:%u, t:%u\n",
|
|
|
- (unsigned)sizeof(short),
|
|
|
- (unsigned)sizeof(int),
|
|
|
- (unsigned)sizeof(long),
|
|
|
- (unsigned)sizeof(long long),
|
|
|
- (unsigned)sizeof(float),
|
|
|
- (unsigned)sizeof(double),
|
|
|
- (unsigned)sizeof(long double),
|
|
|
- (unsigned)sizeof(char),
|
|
|
- (unsigned)sizeof(wchar_t),
|
|
|
- (unsigned)sizeof(void *),
|
|
|
- (unsigned)sizeof(size_t),
|
|
|
- (unsigned)sizeof(time_t));
|
|
|
+ mg_snprintf(NULL,
|
|
|
+ NULL,
|
|
|
+ buf,
|
|
|
+ sizeof(buf),
|
|
|
+ "Data model: int:%u/%u/%u/%u, float:%u/%u/%u, char:%u/%u, "
|
|
|
+ "ptr:%u, size:%u, time:%u",
|
|
|
+ (unsigned)sizeof(short),
|
|
|
+ (unsigned)sizeof(int),
|
|
|
+ (unsigned)sizeof(long),
|
|
|
+ (unsigned)sizeof(long long),
|
|
|
+ (unsigned)sizeof(float),
|
|
|
+ (unsigned)sizeof(double),
|
|
|
+ (unsigned)sizeof(long double),
|
|
|
+ (unsigned)sizeof(char),
|
|
|
+ (unsigned)sizeof(wchar_t),
|
|
|
+ (unsigned)sizeof(void *),
|
|
|
+ (unsigned)sizeof(size_t),
|
|
|
+ (unsigned)sizeof(time_t));
|
|
|
+ if (prm1 == 0) {
|
|
|
+ puts(buf);
|
|
|
+ }
|
|
|
+
|
|
|
+ // WARNING: these parameters are not being used
|
|
|
+ (void)prm2;
|
|
|
|
|
|
return 0;
|
|
|
}
|