Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "primpl.h"
7 :
8 : #include <string.h>
9 : #include <stdlib.h>
10 :
11 : PR_IMPLEMENT(PRErrorCode) PR_GetError(void)
12 : {
13 20 : PRThread *thread = PR_GetCurrentThread();
14 20 : return thread->errorCode;
15 : }
16 :
17 : PR_IMPLEMENT(PRInt32) PR_GetOSError(void)
18 : {
19 1 : PRThread *thread = PR_GetCurrentThread();
20 1 : return thread->osErrorCode;
21 : }
22 :
23 : PR_IMPLEMENT(void) PR_SetError(PRErrorCode code, PRInt32 osErr)
24 : {
25 : PRThread *thread = PR_GetCurrentThread();
26 1638 : thread->errorCode = code;
27 1638 : thread->osErrorCode = osErr;
28 1638 : thread->errorStringLength = 0;
29 1638 : }
30 :
31 : PR_IMPLEMENT(void) PR_SetErrorText(PRIntn textLength, const char *text)
32 : {
33 0 : PRThread *thread = PR_GetCurrentThread();
34 :
35 0 : if (0 == textLength)
36 : {
37 0 : if (NULL != thread->errorString)
38 0 : PR_DELETE(thread->errorString);
39 0 : thread->errorStringSize = 0;
40 : }
41 : else
42 : {
43 0 : PRIntn size = textLength + 31; /* actual length to allocate. Plus a little extra */
44 0 : if (thread->errorStringSize < textLength+1) /* do we have room? */
45 : {
46 0 : if (NULL != thread->errorString)
47 0 : PR_DELETE(thread->errorString);
48 0 : thread->errorString = (char*)PR_MALLOC(size);
49 0 : if ( NULL == thread->errorString ) {
50 0 : thread->errorStringSize = 0;
51 0 : thread->errorStringLength = 0;
52 0 : return;
53 : }
54 0 : thread->errorStringSize = size;
55 : }
56 0 : memcpy(thread->errorString, text, textLength+1 );
57 : }
58 0 : thread->errorStringLength = textLength;
59 : }
60 :
61 : PR_IMPLEMENT(PRInt32) PR_GetErrorTextLength(void)
62 : {
63 0 : PRThread *thread = PR_GetCurrentThread();
64 0 : return thread->errorStringLength;
65 : } /* PR_GetErrorTextLength */
66 :
67 : PR_IMPLEMENT(PRInt32) PR_GetErrorText(char *text)
68 : {
69 0 : PRThread *thread = PR_GetCurrentThread();
70 0 : if (0 != thread->errorStringLength)
71 0 : memcpy(text, thread->errorString, thread->errorStringLength+1);
72 0 : return thread->errorStringLength;
73 : } /* PR_GetErrorText */
74 :
75 :
|