~ubuntu-branches/debian/jessie/file-roller/jessie

« back to all changes in this revision

Viewing changes to src/fr-error.c

  • Committer: Package Import Robot
  • Author(s): Andreas Henriksson
  • Date: 2013-05-25 13:13:26 UTC
  • mfrom: (1.8.1) (5.1.10 experimental)
  • Revision ID: package-import@ubuntu.com-20130525131326-bm7bv6b4yig6820h
Tags: 3.8.2-1
* New upstream release.
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 */
21
21
 
22
22
 
 
23
#include <config.h>
23
24
#include "fr-error.h"
24
25
 
25
26
 
26
 
GQuark 
 
27
GQuark
27
28
fr_error_quark (void)
28
29
{
29
30
        static GQuark quark;
30
 
        
 
31
 
31
32
        if (!quark)
32
 
                quark = g_quark_from_static_string ("file-roller-error");
33
 
        
 
33
                quark = g_quark_from_static_string ("FrError");
 
34
 
34
35
        return quark;
35
36
}
 
37
 
 
38
 
 
39
G_DEFINE_BOXED_TYPE (FrError,
 
40
                     fr_error,
 
41
                     fr_error_copy,
 
42
                     fr_error_free);
 
43
 
 
44
 
 
45
FrError *
 
46
fr_error_new (FrErrorType  type,
 
47
              int          status,
 
48
              GError      *gerror)
 
49
{
 
50
        FrError *error;
 
51
 
 
52
        error = g_new0 (FrError, 1);
 
53
        fr_error_set (error, type, status, gerror);
 
54
 
 
55
        return error;
 
56
}
 
57
 
 
58
 
 
59
FrError *
 
60
fr_error_copy (FrError *error)
 
61
{
 
62
        if (error != NULL)
 
63
                return fr_error_new (error->type, error->status, error->gerror);
 
64
        else
 
65
                return NULL;
 
66
}
 
67
 
 
68
 
 
69
void
 
70
fr_error_free (FrError *error)
 
71
{
 
72
        if (error == NULL)
 
73
                return;
 
74
        g_clear_error (&error->gerror);
 
75
        g_free (error);
 
76
}
 
77
 
 
78
 
 
79
void
 
80
fr_error_set (FrError     *error,
 
81
              FrErrorType  type,
 
82
              int          status,
 
83
              GError      *gerror)
 
84
{
 
85
        error->type = type;
 
86
        error->status = status;
 
87
        if (gerror != error->gerror) {
 
88
                g_clear_error (&error->gerror);
 
89
                if (gerror != NULL)
 
90
                        error->gerror = g_error_copy (gerror);
 
91
        }
 
92
}
 
93
 
 
94
 
 
95
void
 
96
fr_error_take_gerror (FrError *error,
 
97
                      GError  *gerror)
 
98
{
 
99
        if (gerror != error->gerror) {
 
100
                g_clear_error (&error->gerror);
 
101
                error->gerror = gerror;
 
102
        }
 
103
}
 
104
 
 
105
 
 
106
void
 
107
fr_error_clear_gerror (FrError *error)
 
108
{
 
109
        g_clear_error (&error->gerror);
 
110
}
 
111
 
 
112
 
 
113
void
 
114
fr_clear_error (FrError **error)
 
115
{
 
116
        if ((error == NULL) || (*error == NULL))
 
117
                return;
 
118
 
 
119
        fr_error_free (*error);
 
120
        *error = NULL;
 
121
}