plover/exception-handler.cpp
author J. Ali Harlow <ali@juiblex.co.uk>
Tue Jun 28 19:46:00 2016 +0100 (2016-06-28)
changeset 53 2740f1329ddc
child 109 2947214c450e
permissions -rw-r--r--
Fix make distcheck build
     1 /*
     2  * Copyright (C) 2015  J. Ali Harlow <ali@juiblex.co.uk>
     3  *
     4  * This program is free software; you can redistribute it and/or modify
     5  * it under the terms of the GNU General Public License as published by
     6  * the Free Software Foundation; either version 2 of the License, or
     7  * (at your option) any later version.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License along
    15  * with this program; if not, write to the Free Software Foundation, Inc.,
    16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    17  */
    18 
    19 #include <cstdlib>
    20 #include "plover/plover.h"
    21 #if defined(HAVE_BREAKPAD) && defined(WIN32)
    22 #include <breakpad/client/windows/crash_generation/crash_generation_client.h>
    23 #include <breakpad/client/windows/handler/exception_handler.h>
    24 #endif
    25 
    26 extern "C" {
    27 
    28 #if defined(HAVE_BREAKPAD) && defined(WIN32)
    29 static google_breakpad::ExceptionHandler *plover_exception_handler=NULL;
    30 #endif
    31 
    32 void plover_exception_handler_init(void)
    33 {
    34 #if defined(HAVE_BREAKPAD) && defined(WIN32)
    35     gchar *path;
    36     WCHAR *dump_path;
    37     if (!plover_exception_handler)
    38     {
    39 	path=plover_get_reports_directory();
    40 	dump_path=(WCHAR *)g_utf8_to_utf16(path,-1,NULL,NULL,NULL);
    41 	g_free(path);
    42 	plover_exception_handler=new
    43 	  google_breakpad::ExceptionHandler(dump_path,NULL,NULL,NULL,
    44 	  google_breakpad::ExceptionHandler::HANDLER_ALL,MiniDumpWithDataSegs,
    45 	  NULL,NULL);
    46 	g_free(dump_path);
    47     }
    48 #endif	/* HAVE_BREAKPAD && WIN32 */
    49 }
    50 
    51 }       // extern "C"