Sat, 27 Aug 2016 18:16:01 -0500
connection: Add purple_connection_take_error()
This patch adds a purple_connection_take_error() function, which
is functionally equivalent to purple_connection_g_error(), except
that it takes ownership of the passed GError.
This is useful to simplify error handling so that the GError doesn't
have to be freed, or, in the future potentially copied, if it's no
longer needed where it's generated. It can also allow for GErrors
being generated without storing them in a variable. This would be
reasonably common if/when all PurpleConnection errors are passed
in via GError.
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1 | /* |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
2 | * An example plugin that demonstrates exporting of a cipher object |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
3 | * type to be used in another plugin. |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
4 | * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
5 | * This plugin only provides the CaesarCipher type. See caesarcipher_consumer |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
6 | * plugin for its use. |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
7 | * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
8 | * Copyright (C) 2013, Ankit Vani <a@nevitus.org> |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
9 | * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
11 | * modify it under the terms of the GNU General Public License as |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
12 | * published by the Free Software Foundation; either version 2 of the |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
13 | * License, or (at your option) any later version. |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
14 | * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, but |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
16 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
18 | * General Public License for more details. |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
19 | * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
23 | * 02111-1301, USA. |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
24 | */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
25 | |
|
36957
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
26 | /* When writing a third-party plugin, do not include libpurple's internal.h |
|
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
27 | * included below. This file is for internal libpurple use only. We're including |
|
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
28 | * it here for our own convenience. */ |
|
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
29 | #include "internal.h" |
|
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
30 | |
|
95cfd176b193
Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents:
36907
diff
changeset
|
31 | /* This file defines PURPLE_PLUGINS and includes all the libpurple headers */ |
|
36836
84cfc0d40789
Simplify includes for caesarcipher*
Ankit Vani <a@nevitus.org>
parents:
36802
diff
changeset
|
32 | #include <purple.h> |
|
36907
ffc29f017e1e
Included internal.h in caesarcipher plugins
Ankit Vani <a@nevitus.org>
parents:
36836
diff
changeset
|
33 | |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
34 | #include "caesarcipher.h" |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
35 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
36 | #define CAESAR_CIPHER_GET_PRIVATE(obj) \ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
37 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), CAESAR_TYPE_CIPHER, CaesarCipherPrivate)) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
38 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
39 | typedef struct { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
40 | gint8 offset; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
41 | } CaesarCipherPrivate; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
42 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
43 | enum { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
44 | PROP_NONE, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
45 | PROP_OFFSET, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
46 | PROP_LAST, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
47 | }; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
48 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
49 | /****************************************************************************** |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
50 | * Cipher stuff |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
51 | *****************************************************************************/ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
52 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
53 | caesar_shift(const guchar input[], size_t in_len, guchar output[], gint8 offset) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
54 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
55 | size_t i; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
56 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
57 | for (i = 0; i < in_len; ++i) { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
58 | if (input[i] >= 'a' && input[i] <= 'z') |
|
36779
0201d9d091ab
Fixed silly omissions in caesarcipher
Ankit Vani <a@nevitus.org>
parents:
36777
diff
changeset
|
59 | output[i] = (((input[i] - 'a') + offset + 26) % 26) + 'a'; |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
60 | else if (input[i] >= 'A' && input[i] <= 'Z') |
|
36779
0201d9d091ab
Fixed silly omissions in caesarcipher
Ankit Vani <a@nevitus.org>
parents:
36777
diff
changeset
|
61 | output[i] = (((input[i] - 'A') + offset + 26) % 26) + 'A'; |
|
0201d9d091ab
Fixed silly omissions in caesarcipher
Ankit Vani <a@nevitus.org>
parents:
36777
diff
changeset
|
62 | else |
|
0201d9d091ab
Fixed silly omissions in caesarcipher
Ankit Vani <a@nevitus.org>
parents:
36777
diff
changeset
|
63 | output[i] = input[i]; |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
64 | } |
| 36777 | 65 | |
| 66 | output[i] = '\0'; | |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
67 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
68 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
69 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
70 | caesar_cipher_set_offset(PurpleCipher *cipher, gint8 offset) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
71 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
72 | CaesarCipherPrivate *priv = CAESAR_CIPHER_GET_PRIVATE(cipher); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
73 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
74 | priv->offset = offset % 26; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
75 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
76 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
77 | static ssize_t |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
78 | caesar_cipher_encrypt(PurpleCipher *cipher, const guchar input[], size_t in_len, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
79 | guchar output[], size_t out_size) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
80 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
81 | CaesarCipherPrivate *priv = CAESAR_CIPHER_GET_PRIVATE(cipher); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
82 | |
| 36777 | 83 | g_return_val_if_fail(out_size > in_len, -1); |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
84 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
85 | caesar_shift(input, in_len, output, priv->offset); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
86 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
87 | return in_len; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
88 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
89 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
90 | static ssize_t |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
91 | caesar_cipher_decrypt(PurpleCipher *cipher, const guchar input[], size_t in_len, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
92 | guchar output[], size_t out_size) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
93 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
94 | CaesarCipherPrivate *priv = CAESAR_CIPHER_GET_PRIVATE(cipher); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
95 | |
| 36777 | 96 | g_return_val_if_fail(out_size > in_len, -1); |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
97 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
98 | caesar_shift(input, in_len, output, -priv->offset); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
99 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
100 | return in_len; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
101 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
102 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
103 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
104 | caesar_cipher_set_key(PurpleCipher *cipher, const guchar *key, size_t len) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
105 | { |
| 36777 | 106 | caesar_cipher_set_offset(cipher, len); |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
107 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
108 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
109 | /****************************************************************************** |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
110 | * Object stuff |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
111 | *****************************************************************************/ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
112 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
113 | caesar_cipher_set_property(GObject *obj, guint param_id, const GValue *value, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
114 | GParamSpec *pspec) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
115 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
116 | PurpleCipher *cipher = PURPLE_CIPHER(obj); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
117 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
118 | switch(param_id) { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
119 | case PROP_OFFSET: |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
120 | #if GLIB_CHECK_VERSION(2, 32, 0) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
121 | caesar_cipher_set_offset(cipher, g_value_get_schar(value)); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
122 | #else |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
123 | caesar_cipher_set_offset(cipher, g_value_get_char(value)); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
124 | #endif |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
125 | break; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
126 | default: |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
127 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
128 | break; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
129 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
130 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
131 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
132 | /* initialize the cipher object. used in PURPLE_DEFINE_TYPE. */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
133 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
134 | caesar_cipher_init(CaesarCipher *cipher) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
135 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
136 | /* classic caesar cipher uses a shift of 3 */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
137 | CAESAR_CIPHER_GET_PRIVATE(cipher)->offset = 3; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
138 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
139 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
140 | /* initialize the cipher class. used in PURPLE_DEFINE_TYPE. */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
141 | static void |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
142 | caesar_cipher_class_init(PurpleCipherClass *klass) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
143 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
144 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
145 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
146 | obj_class->set_property = caesar_cipher_set_property; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
147 | g_type_class_add_private(obj_class, sizeof(CaesarCipherPrivate)); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
148 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
149 | klass->encrypt = caesar_cipher_encrypt; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
150 | klass->decrypt = caesar_cipher_decrypt; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
151 | klass->set_key = caesar_cipher_set_key; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
152 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
153 | g_object_class_install_property(obj_class, PROP_OFFSET, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
154 | g_param_spec_char("offset", "offset", |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
155 | "The offset by which to shift alphabets", |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
156 | -25, 25, 3, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
157 | G_PARAM_WRITABLE) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
158 | ); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
159 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
160 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
161 | /* |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
162 | * define the CaesarCipher type. this function defines |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
163 | * caesar_cipher_get_type() and caesar_cipher_register_type(). |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
164 | */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
165 | PURPLE_DEFINE_TYPE(CaesarCipher, caesar_cipher, PURPLE_TYPE_CIPHER); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
166 | |
| 36777 | 167 | G_MODULE_EXPORT PurpleCipher * |
|
36774
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
168 | caesar_cipher_new(void) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
169 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
170 | return g_object_new(CAESAR_TYPE_CIPHER, NULL); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
171 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
172 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
173 | /****************************************************************************** |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
174 | * Plugin stuff |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
175 | *****************************************************************************/ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
176 | static PurplePluginInfo * |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
177 | plugin_query(GError **error) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
178 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
179 | const gchar * const authors[] = { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
180 | "Ankit Vani <a@nevitus.org>", |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
181 | NULL |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
182 | }; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
183 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
184 | return purple_plugin_info_new( |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
185 | "id", "core-caesarcipher", |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
186 | "name", N_("Caesar Cipher Provider Example"), |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
187 | "version", DISPLAY_VERSION, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
188 | "category", N_("Example"), |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
189 | "summary", N_("An example plugin that demonstrates exporting of a " |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
190 | "cipher type."), |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
191 | "description", N_("An example plugin that demonstrates exporting of " |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
192 | "a cipher object type to be used in another " |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
193 | "plugin."), |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
194 | "authors", authors, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
195 | "website", PURPLE_WEBSITE, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
196 | "abi-version", PURPLE_ABI_VERSION, |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
197 | NULL |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
198 | ); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
199 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
200 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
201 | static gboolean |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
202 | plugin_load(PurplePlugin *plugin, GError **error) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
203 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
204 | /* register the CaesarCipher type in the type system */ |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
205 | caesar_cipher_register_type(plugin); |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
206 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
207 | return TRUE; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
208 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
209 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
210 | static gboolean |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
211 | plugin_unload(PurplePlugin *plugin, GError **error) |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
212 | { |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
213 | return TRUE; |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
214 | } |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
215 | |
|
d757fbddbe3d
Added example plugins caesarcipher and caesarcipher_consumer
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
216 | PURPLE_PLUGIN_INIT(caesarcipher, plugin_query, plugin_load, plugin_unload); |