add CRASHREPORT directly to browser

add CRASHREPORT for Windows
add ^P info to report (via DUMPLOG)

new options: crash_email, crash_name, crash_urlmax
new game command: #bugreport
new config option: CRASHREPORT_EXEC_NOSTDERR
new command line option: --bidshow

deleted helper scripts:
    NetHackCrashReport.Javascript
    nhcrashreport.lua

misc:
    update CRASHREPORTURL (will need to be updated before release)
    update bitrot in winchain
    winchain for Windows
    add missing synch_wait for NetHackW --showpaths
    add PANICTRACE (and CRASHREPORT) in mdlib.c:build_opts

missing:
    packaging (Windows needs the pdb file)
    no testing with MSVC command line build

port status:
    linux: working, but glibc's backtrace doesn't show static functions
    Windows VS: working.  pdb file is large - looking into options
    MacOS: working
    msdos: not supported
    VMS: not supported
    MSVC: planned, but not attempted
    MSYS2: working, but libbacktrace not showing symbols (yet?)
This commit is contained in:
nhkeni
2024-02-06 18:33:59 -05:00
parent cf3cbcf832
commit dbe5c98dca
37 changed files with 1001 additions and 315 deletions

View File

@@ -30,7 +30,7 @@ static void dump_enums(void);
void
early_init(int argc UNUSED, char *argv[] UNUSED)
{
#ifdef CRASHREPORT
#if defined(CRASHREPORT)
// Do this as early as possible, but let ports do other things first.
crashreport_init(argc, argv);
#endif
@@ -911,7 +911,7 @@ static const struct early_opt earlyopts[] = {
#ifdef WIN32
{ ARG_WINDOWS, "windows", 4, TRUE },
#endif
#ifdef CRASHREPORT
#if defined(CRASHREPORT)
{ ARG_BIDSHOW, "bidshow", 7, FALSE },
#endif
};
@@ -935,11 +935,13 @@ argcheck(int argc, char *argv[], enum earlyarg e_arg)
const char *dashdash = "";
for (idx = 0; idx < SIZE(earlyopts); idx++) {
if (earlyopts[idx].e == e_arg)
if (earlyopts[idx].e == e_arg){
break;
}
}
if (idx >= SIZE(earlyopts) || argc < 1)
if (idx >= SIZE(earlyopts) || argc < 1){
return FALSE;
}
for (i = 0; i < argc; ++i) {
if (argv[i][0] != '-')
@@ -1002,10 +1004,12 @@ argcheck(int argc, char *argv[], enum earlyarg e_arg)
dump_glyphids();
return 2;
#endif
#ifdef CRASHREPORT
#if defined(CRASHREPORT)
case ARG_BIDSHOW:
crashreport_bidshow();
return 2;
#else
#warning "CRASHREPORT CODE NOT INCLUDED"
#endif
#ifdef WIN32
case ARG_WINDOWS: