-
Notifications
You must be signed in to change notification settings - Fork 1
/
wincache_error.c
99 lines (90 loc) · 5.32 KB
/
wincache_error.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
+----------------------------------------------------------------------------------------------+
| Windows Cache for PHP |
+----------------------------------------------------------------------------------------------+
| Copyright (c) 2009, Microsoft Corporation. All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without modification, are |
| permitted provided that the following conditions are met: |
| - Redistributions of source code must retain the above copyright notice, this list of |
| conditions and the following disclaimer. |
| - Redistributions in binary form must reproduce the above copyright notice, this list of |
| conditions and the following disclaimer in the documentation and/or other materials provided |
| with the distribution. |
| - Neither the name of the Microsoft Corporation nor the names of its contributors may be |
| used to endorse or promote products derived from this software without specific prior written|
| permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS |
| OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE|
| GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
| AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| OF THE POSSIBILITY OF SUCH DAMAGE. |
+----------------------------------------------------------------------------------------------+
| Module: wincache_error.c |
+----------------------------------------------------------------------------------------------+
| Author: Kanwaljeet Singla <[email protected]> |
+----------------------------------------------------------------------------------------------+
*/
#include "precomp.h"
error_context wincache_errors[] =
{
{ FATAL_OUT_OF_MEMORY, "Fatal: Out of memory error" },
{ FATAL_OUT_OF_LMEMORY, "Fatal: Out of local memory error" },
{ FATAL_OUT_OF_SMEMORY, "Fatal: Out of shared memor error" },
{ FATAL_ACCESS_DENIED, "Fatal: Access Denied" },
{ FATAL_LOCK_INIT_CREATEMUTEX, "Fatal: CreateMutex operation failed in lock_initialize" },
{ FATAL_LOCK_LONGNAME, "Fatal: Lock prefix is too long" },
{ FATAL_FILEMAP_CREATION, "Fatal: Filemap creation error" },
{ FATAL_FILEMAP_INFOCREATE, "Fatal: CreateFileMapping operation for information filemap failed" },
{ FATAL_FILEMAP_INFOMAP, "Fatal: MapViewOfFileEx operation for information filemap failed" },
{ FATAL_FILEMAP_CREATE_SNAPSHOT, "Fatal: CreateToolhelp32Snapshot call failed unexpectedly" },
{ FATAL_FILEMAP_INITIALIZE, "Fatal: New filemap couldn't be created" },
{ FATAL_FILEMAP_NOFREE, "Fatal: No free filemap_information_entry found in info filemap" },
{ FATAL_ALLOC_NO_MEMORY, "Fatal: Shared memory segment is completely full" },
{ FATAL_FCACHE_CREATION, "" },
{ FATAL_FCACHE_CREATEFILE, "Fatal: CreateFile call failed" },
{ FATAL_FCACHE_GETFILETYPE, "Fatal: GetFileType call failed" },
{ FATAL_FCACHE_GETFILESIZE, "Fatal: GetFileSize call failed" },
{ FATAL_FCACHE_READFILE, "Fatal: ReadFile call failed" },
{ FATAL_FCACHE_INITIALIZE, "Fatal: Failure while initializing file cache module" },
{ WARNING_FCACHE_TOOBIG, "Warning: File too big for file cache" },
{ FATAL_FCACHE_FILEINFO, "Fatal: Failure in FileInfo" }
};
/* Windows maintain last error code for each thread */
/* We are only maintaining for the process */
unsigned int error_glerror = 0;
unsigned int error_getlasterror()
{
return error_glerror;
}
unsigned int error_setlasterror()
{
error_glerror = GetLastError();
WCG(lasterror) = error_glerror;
return error_glerror;
}
char * error_gethrmessage()
{
return error_getmessage(error_glerror);
}
char * error_getmessage(unsigned int error_code)
{
int count = 0;
int index = 0;
char * message = NULL;
count = sizeof(wincache_errors)/sizeof(wincache_errors[0]);
for(index = 0; index < count; index++)
{
if(wincache_errors[index].error_code == error_glerror)
{
message = wincache_errors[index].error_message;
break;
}
}
return message;
}