mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 09:27:59 +00:00
Include 'build info' in all --version text and About boxes.
This shows the build platform (32- vs 64-bit in particular, and also whether Unix GTK builds were compiled with or without the X11 pieces), what compiler was used to build the binary, and any interesting build options that might have been set on the make command line (especially, but not limited to, the security-damaging ones like NO_SECURITY or UNPROTECT). This will probably be useful all over the place, but in particular it should allow the different Windows binaries to be told apart! Commits21101c739
and2eb952ca3
laid the groundwork for this, by allowing the various About boxes to contain free text and also ensuring they could be copied and pasted easily as part of a bug report.
This commit is contained in:
parent
960ad594a3
commit
7e14730b83
4
cmdgen.c
4
cmdgen.c
@ -129,7 +129,9 @@ void sk_cleanup(void)
|
||||
|
||||
void showversion(void)
|
||||
{
|
||||
printf("puttygen: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("puttygen: %s\n%s", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
}
|
||||
|
||||
void usage(int standalone)
|
||||
|
62
misc.c
62
misc.c
@ -1147,3 +1147,65 @@ int strendswith(const char *s, const char *t)
|
||||
size_t slen = strlen(s), tlen = strlen(t);
|
||||
return slen >= tlen && !strcmp(s + (slen - tlen), t);
|
||||
}
|
||||
|
||||
char *buildinfo(const char *newline)
|
||||
{
|
||||
strbuf *buf = strbuf_new();
|
||||
|
||||
strbuf_catf(buf, "Build platform: %d-bit %s",
|
||||
(int)(CHAR_BIT * sizeof(void *)),
|
||||
BUILDINFO_PLATFORM);
|
||||
|
||||
#ifdef __clang_version__
|
||||
strbuf_catf(buf, "%sCompiler: clang %s", newline, __clang_version__);
|
||||
#elif defined __GNUC__ && defined __VERSION__
|
||||
strbuf_catf(buf, "%sCompiler: gcc %s", newline, __VERSION__);
|
||||
#elif defined _MSC_VER
|
||||
strbuf_catf(buf, "%sCompiler: Visual Studio", newline);
|
||||
#if _MSC_VER == 1900
|
||||
strbuf_catf(buf, " 2015 / MSVC++ 14.0");
|
||||
#elif _MSC_VER == 1800
|
||||
strbuf_catf(buf, " 2013 / MSVC++ 12.0");
|
||||
#elif _MSC_VER == 1700
|
||||
strbuf_catf(buf, " 2012 / MSVC++ 11.0");
|
||||
#elif _MSC_VER == 1600
|
||||
strbuf_catf(buf, " 2010 / MSVC++ 10.0");
|
||||
#elif _MSC_VER == 1500
|
||||
strbuf_catf(buf, " 2008 / MSVC++ 9.0");
|
||||
#elif _MSC_VER == 1400
|
||||
strbuf_catf(buf, " 2005 / MSVC++ 8.0");
|
||||
#elif _MSC_VER == 1310
|
||||
strbuf_catf(buf, " 2003 / MSVC++ 7.1");
|
||||
#else
|
||||
strbuf_catf(buf, ", unrecognised version");
|
||||
#endif
|
||||
strbuf_catf(buf, " (_MSC_VER=%d)", (int)_MSC_VER);
|
||||
#endif
|
||||
|
||||
#ifdef NO_SECURITY
|
||||
strbuf_catf(buf, "%sBuild option: NO_SECURITY", newline);
|
||||
#endif
|
||||
#ifdef NO_SECUREZEROMEMORY
|
||||
strbuf_catf(buf, "%sBuild option: NO_SECUREZEROMEMORY", newline);
|
||||
#endif
|
||||
#ifdef NO_IPV6
|
||||
strbuf_catf(buf, "%sBuild option: NO_IPV6", newline);
|
||||
#endif
|
||||
#ifdef NO_GSSAPI
|
||||
strbuf_catf(buf, "%sBuild option: NO_GSSAPI", newline);
|
||||
#endif
|
||||
#ifdef STATIC_GSSAPI
|
||||
strbuf_catf(buf, "%sBuild option: STATIC_GSSAPI", newline);
|
||||
#endif
|
||||
#ifdef UNPROTECT
|
||||
strbuf_catf(buf, "%sBuild option: UNPROTECT", newline);
|
||||
#endif
|
||||
#ifdef FUZZING
|
||||
strbuf_catf(buf, "%sBuild option: FUZZING", newline);
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
strbuf_catf(buf, "%sBuild option: DEBUG", newline);
|
||||
#endif
|
||||
|
||||
return strbuf_to_str(buf);
|
||||
}
|
||||
|
2
misc.h
2
misc.h
@ -118,6 +118,8 @@ int get_ssh_uint32(int *datalen, const void **data, unsigned *ret);
|
||||
* form, check if it equals an ordinary C zero-terminated string. */
|
||||
int match_ssh_id(int stringlen, const void *string, const char *id);
|
||||
|
||||
char *buildinfo(const char *newline);
|
||||
|
||||
/*
|
||||
* Debugging functions.
|
||||
*
|
||||
|
4
pscp.c
4
pscp.c
@ -2263,7 +2263,9 @@ static void usage(void)
|
||||
|
||||
void version(void)
|
||||
{
|
||||
printf("pscp: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("pscp: %s\n%s\n", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
cleanup_exit(1);
|
||||
}
|
||||
|
||||
|
4
psftp.c
4
psftp.c
@ -2665,7 +2665,9 @@ static void usage(void)
|
||||
|
||||
static void version(void)
|
||||
{
|
||||
printf("psftp: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("psftp: %s\n%s\n", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
cleanup_exit(1);
|
||||
}
|
||||
|
||||
|
@ -3701,9 +3701,10 @@ void about_box(void *window)
|
||||
gtk_widget_show(w);
|
||||
|
||||
{
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
char *label_text = dupprintf
|
||||
("%s\n\n%s\n\n%s",
|
||||
appname, ver,
|
||||
("%s\n\n%s\n\n%s\n\n%s",
|
||||
appname, ver, buildinfo_text,
|
||||
"Copyright " SHORT_COPYRIGHT_DETAILS ". All rights reserved");
|
||||
w = gtk_label_new(label_text);
|
||||
gtk_label_set_justify(GTK_LABEL(w), GTK_JUSTIFY_CENTER);
|
||||
|
@ -287,10 +287,13 @@ static void help(FILE *fp) {
|
||||
}
|
||||
|
||||
static void version(FILE *fp) {
|
||||
if(fprintf(fp, "%s: %s\n", appname, ver) < 0 || fflush(fp) < 0) {
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
if(fprintf(fp, "%s: %s\n%s\n", appname, ver, buildinfo_text) < 0 ||
|
||||
fflush(fp) < 0) {
|
||||
perror("output error");
|
||||
exit(1);
|
||||
}
|
||||
sfree(buildinfo_text);
|
||||
}
|
||||
|
||||
static struct gui_data *the_inst;
|
||||
|
11
unix/unix.h
11
unix/unix.h
@ -30,6 +30,17 @@
|
||||
#define META_MANUAL_MASK (GDK_MOD1_MASK)
|
||||
#define JUST_USE_GTK_CLIPBOARD_UTF8 /* low-level gdk_selection_* fails */
|
||||
#define DEFAULT_CLIPBOARD GDK_SELECTION_CLIPBOARD /* OS X has no PRIMARY */
|
||||
|
||||
#define BUILDINFO_PLATFORM "OS X (GTK)"
|
||||
|
||||
#elif defined NOT_X_WINDOWS
|
||||
|
||||
#define BUILDINFO_PLATFORM "Unix (pure GTK)"
|
||||
|
||||
#else
|
||||
|
||||
#define BUILDINFO_PLATFORM "Unix (GTK + X11)"
|
||||
|
||||
#endif
|
||||
|
||||
struct Filename {
|
||||
|
@ -141,7 +141,9 @@ static void usage(void)
|
||||
|
||||
static void version(void)
|
||||
{
|
||||
printf("pageant: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("pageant: %s\n%s\n", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -594,7 +594,9 @@ static void usage(void)
|
||||
|
||||
static void version(void)
|
||||
{
|
||||
printf("plink: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("plink: %s\n%s\n", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -36,14 +36,14 @@ BEGIN
|
||||
END
|
||||
|
||||
/* Accelerators used: cl */
|
||||
213 DIALOG DISCARDABLE 140, 40, 214, 74
|
||||
213 DIALOG DISCARDABLE 140, 40, 214, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About Pageant"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&Close", IDOK, 160, 56, 48, 14
|
||||
PUSHBUTTON "View &Licence", 101, 6, 56, 70, 14
|
||||
EDITTEXT 1000, 10, 6, 194, 48, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
DEFPUSHBUTTON "&Close", IDOK, 160, 72, 48, 14
|
||||
PUSHBUTTON "View &Licence", 101, 6, 72, 70, 14
|
||||
EDITTEXT 1000, 10, 6, 194, 64, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
END
|
||||
|
||||
/* No accelerators used */
|
||||
|
@ -29,14 +29,14 @@ BEGIN
|
||||
END
|
||||
|
||||
/* Accelerators used: cl */
|
||||
213 DIALOG DISCARDABLE 140, 40, 214, 74
|
||||
213 DIALOG DISCARDABLE 140, 40, 214, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About PuTTYgen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&Close", IDOK, 160, 56, 48, 14
|
||||
PUSHBUTTON "View &Licence", 101, 6, 56, 70, 14
|
||||
EDITTEXT 1000, 10, 6, 194, 48, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
DEFPUSHBUTTON "&Close", IDOK, 160, 72, 48, 14
|
||||
PUSHBUTTON "View &Licence", 101, 6, 72, 70, 14
|
||||
EDITTEXT 1000, 10, 6, 194, 64, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
END
|
||||
|
||||
/* No accelerators used */
|
||||
|
@ -16,15 +16,15 @@ IDI_MAINICON ICON "putty.ico"
|
||||
IDI_CFGICON ICON "puttycfg.ico"
|
||||
|
||||
/* Accelerators used: clw */
|
||||
IDD_ABOUTBOX DIALOG DISCARDABLE 140, 40, 214, 74
|
||||
IDD_ABOUTBOX DIALOG DISCARDABLE 140, 40, 270, 106
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About PuTTY"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&Close", IDOK, 160, 56, 48, 14
|
||||
PUSHBUTTON "View &Licence", IDA_LICENCE, 6, 56, 70, 14
|
||||
PUSHBUTTON "Visit &Web Site", IDA_WEB, 84, 56, 70, 14
|
||||
EDITTEXT IDA_TEXT, 10, 6, 194, 48, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
DEFPUSHBUTTON "&Close", IDOK, 216, 88, 48, 14
|
||||
PUSHBUTTON "View &Licence", IDA_LICENCE, 6, 88, 70, 14
|
||||
PUSHBUTTON "Visit &Web Site", IDA_WEB, 140, 88, 70, 14
|
||||
EDITTEXT IDA_TEXT, 10, 6, 250, 80, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE
|
||||
END
|
||||
|
||||
/* Accelerators used: aco */
|
||||
|
@ -200,10 +200,12 @@ static INT_PTR CALLBACK AboutProc(HWND hwnd, UINT msg,
|
||||
SetWindowText(hwnd, str);
|
||||
sfree(str);
|
||||
{
|
||||
char *buildinfo_text = buildinfo("\r\n");
|
||||
char *text = dupprintf
|
||||
("%s\r\n\r\n%s\r\n\r\n%s",
|
||||
appname, ver,
|
||||
("%s\r\n\r\n%s\r\n\r\n%s\r\n\r\n%s",
|
||||
appname, ver, buildinfo_text,
|
||||
"\251 " SHORT_COPYRIGHT_DETAILS ". All rights reserved.");
|
||||
sfree(buildinfo_text);
|
||||
SetDlgItemText(hwnd, IDA_TEXT, text);
|
||||
sfree(text);
|
||||
}
|
||||
|
@ -297,10 +297,12 @@ static INT_PTR CALLBACK AboutProc(HWND hwnd, UINT msg,
|
||||
}
|
||||
|
||||
{
|
||||
char *buildinfo_text = buildinfo("\r\n");
|
||||
char *text = dupprintf
|
||||
("PuTTYgen\r\n\r\n%s\r\n\r\n%s",
|
||||
ver,
|
||||
("PuTTYgen\r\n\r\n%s\r\n\r\n%s\r\n\r\n%s",
|
||||
ver, buildinfo_text,
|
||||
"\251 " SHORT_COPYRIGHT_DETAILS ". All rights reserved.");
|
||||
sfree(buildinfo_text);
|
||||
SetDlgItemText(hwnd, 1000, text);
|
||||
sfree(text);
|
||||
}
|
||||
|
@ -152,10 +152,12 @@ static INT_PTR CALLBACK AboutProc(HWND hwnd, UINT msg,
|
||||
switch (msg) {
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
char *buildinfo_text = buildinfo("\r\n");
|
||||
char *text = dupprintf
|
||||
("Pageant\r\n\r\n%s\r\n\r\n%s",
|
||||
ver,
|
||||
("Pageant\r\n\r\n%s\r\n\r\n%s\r\n\r\n%s",
|
||||
ver, buildinfo_text,
|
||||
"\251 " SHORT_COPYRIGHT_DETAILS ". All rights reserved.");
|
||||
sfree(buildinfo_text);
|
||||
SetDlgItemText(hwnd, 1000, text);
|
||||
sfree(text);
|
||||
}
|
||||
|
@ -223,7 +223,9 @@ static void usage(void)
|
||||
|
||||
static void version(void)
|
||||
{
|
||||
printf("plink: %s\n", ver);
|
||||
char *buildinfo_text = buildinfo("\n");
|
||||
printf("plink: %s\n%s\n", ver, buildinfo_text);
|
||||
sfree(buildinfo_text);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
|
||||
#include "winhelp.h"
|
||||
|
||||
#define BUILDINFO_PLATFORM "Windows"
|
||||
|
||||
struct Filename {
|
||||
char *path;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user