OSDN Git Service

Git DLL get hash basic work
[tortoisegit/TortoiseGitJp.git] / ext / gitdll / gitdll.c
1 // gitdll.cpp : Defines the exported functions for the DLL application.\r
2 //\r
3 \r
4 #include "stdafx.h"\r
5 #include "gitdll.h"\r
6 #include "cache.h"\r
7 #if 0\r
8 \r
9 // This is an example of an exported variable\r
10 GITDLL_API int ngitdll=0;\r
11 \r
12 // This is an example of an exported function.\r
13 GITDLL_API int fngitdll(void)\r
14 {\r
15         return 42;\r
16 }\r
17 \r
18 // This is the constructor of a class that has been exported.\r
19 // see gitdll.h for the class definition\r
20 Cgitdll::Cgitdll()\r
21 {\r
22         return;\r
23 }\r
24 #endif\r
25 \r
26 #define MAX_ERROR_STR_SIZE 512\r
27 char g_last_error[MAX_ERROR_STR_SIZE]={0};\r
28 \r
29 char * get_git_last_error()\r
30 {\r
31         return g_last_error;\r
32 }\r
33 \r
34 static void die_dll(const char *err, va_list params)\r
35 {\r
36         memset(g_last_error,0,MAX_ERROR_STR_SIZE);\r
37         vsnprintf(g_last_error, MAX_ERROR_STR_SIZE-1, err, params);     \r
38 }\r
39 \r
40 void dll_entry()\r
41 {\r
42         set_die_routine(die_dll);\r
43 }\r
44 \r
45 int git_get_sha1(const char *name, unsigned char *sha1)\r
46 {\r
47         return get_sha1(name,sha1);\r
48 }\r
49 \r
50 static int convert_slash(char * path)\r
51 {\r
52         while(*path)\r
53         {\r
54                 if(*path == '\\' )\r
55                         *path = '/';\r
56                 path++;\r
57         }\r
58 }\r
59 int git_init()\r
60 {\r
61         char *home;\r
62         char path[MAX_PATH+1];\r
63         char *prefix;\r
64         size_t homesize,size,httpsize;\r
65 \r
66         // set HOME if not set already\r
67         getenv_s(&homesize, NULL, 0, "HOME");\r
68         if (!homesize)\r
69         {\r
70                 _dupenv_s(&home,&size,"USERPROFILE"); \r
71                 _putenv_s("HOME",home);\r
72                 free(home);\r
73         }\r
74         GetModuleFileName(NULL, path, MAX_PATH);\r
75         convert_slash(path);\r
76 \r
77         git_extract_argv0_path(path);\r
78         prefix = setup_git_directory();\r
79         git_config(git_default_config, NULL);\r
80 }