Hide the copy context menu item if not selected
[TortoiseGit.git] / ext / gitdll / die.cpp
blobd1b80f5d410aef312ed9c1640770ac201f206fc0
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2011,2013 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #include "stdafx.h"
20 #include "gitdll.h"
21 #include "stdio.h"
23 #define MAX_ERROR_STR_SIZE 512
24 extern "C" char g_last_error[MAX_ERROR_STR_SIZE]={0};
25 extern "C" int close_all();
26 static int dyingRecCnt = 0;
28 extern "C" void die_dll(const char *err, va_list params)
30 memset(g_last_error,0,MAX_ERROR_STR_SIZE);
31 vsnprintf(g_last_error, MAX_ERROR_STR_SIZE-1, err, params);
32 close_all();
33 dyingRecCnt = 0;
34 throw g_last_error;
37 void die(const char *err, ...)
39 va_list params;
41 va_start(params, err);
42 die_dll(err, params);
43 va_end(params);
46 extern "C" void vc_exit(int code)
48 if (strlen(g_last_error))
50 char old_err[MAX_ERROR_STR_SIZE];
51 memcpy(old_err, g_last_error, MAX_ERROR_STR_SIZE);
52 die("libgit called \"exit(%d)\". Last error was:\n%s", code, old_err);
54 else
55 die("libgit called \"exit(%d)\".", code);
58 extern "C" int die_is_recursing_dll()
60 return dyingRecCnt++;