This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository libx2goclient.

commit c107c90c816fa722de9a8891660ef582655bacfd
Author: Mihai Moldovan <io...@ionic.de>
Date:   Wed Apr 22 17:42:44 2020 +0200

    src/x2goclient-openssh-version.c: use preprocessor magic in 
x2goclient_openssh_version_parse () to shorten the error macros.
---
 src/x2goclient-openssh-version.c | 44 ++++++++++++++++++++++------------------
 src/x2goclient-utils.h           |  6 ++++++
 2 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/src/x2goclient-openssh-version.c b/src/x2goclient-openssh-version.c
index 6fb193a..28b50c3 100644
--- a/src/x2goclient-openssh-version.c
+++ b/src/x2goclient-openssh-version.c
@@ -51,15 +51,19 @@ static X2GoClientOpenSSHVersion* 
x2goclient_openssh_version_copy (X2GoClientOpen
 
 G_DEFINE_BOXED_TYPE (X2GoClientOpenSSHVersion, x2goclient_openssh_version, 
&x2goclient_openssh_version_copy, &x2goclient_openssh_version_free)
 
+#define ERROR_QUARK EXPAND(X2GOCLIENT_OPENSSH_VERSION_ERROR)
+#define GENERATE_ERROR_(preamble, component, error) preamble ## _ ## component 
## _ ## error
+#define GENERATE_ERROR(component, error) 
GENERATE_ERROR_(X2GOCLIENT_OPENSSH_VERSION_ERROR, component, error)
+
 void x2goclient_openssh_version_parse (X2GoClientOpenSSHVersion 
*openssh_version, const gchar *version_string, GError **gerr) {
   /* Basic sanity checks on struct and string. */
   if (!(openssh_version)) {
-    g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_STRUCT, "No version struct passed, 
cannot store extracted information.");
+    g_set_error_literal (gerr, ERROR_QUARK, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_STRUCT, "No version struct passed, 
cannot store extracted information.");
     return;
   }
 
   if (!(version_string)) {
-    g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_VERSION_STRING, "No version string 
passed, cannot extract information.");
+    g_set_error_literal (gerr, ERROR_QUARK, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_VERSION_STRING, "No version string 
passed, cannot extract information.");
     return;
   }
 
@@ -73,7 +77,7 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
   /* Start with the fixed preamble. */
   const gchar *tmp = version_string;
   if (!(g_str_has_prefix (tmp, "OpenSSH_"))) {
-    g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_PREAMBLE, "Preamble in version string 
does not match expected value 'OpenSSH_'.");
+    g_set_error_literal (gerr, ERROR_QUARK, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_INVALID_PREAMBLE, "Preamble in version string 
does not match expected value 'OpenSSH_'.");
 
     x2goclient_openssh_version_free (struct_work_copy);
     struct_work_copy = NULL;
@@ -85,7 +89,7 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
   tmp += 8;
   const gchar *dot_search = g_strstr_len (tmp, -1, ".");
   if (!(dot_search)) {
-    g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_NO_MAJOR_SEPARATOR, "Version string does not 
contain major version number separator.");
+    g_set_error_literal (gerr, ERROR_QUARK, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_NO_MAJOR_SEPARATOR, "Version string does not 
contain major version number separator.");
 
     x2goclient_openssh_version_free (struct_work_copy);
     struct_work_copy = NULL;
@@ -99,7 +103,7 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
   const gchar *int_search = NULL;
   for (int_search = tmp; int_search < dot_search; ++int_search) {
     if (!(g_ascii_isdigit (*int_search))) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_NOT_NUMERIC, "Major version number is 
not numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_NOT_NUMERIC, "Major version number is 
not numeric.");
 
       x2goclient_openssh_version_free (struct_work_copy);
       struct_work_copy = NULL;
@@ -120,22 +124,22 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
 
   if (conv_err) {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_UNDERFLOW, "Major version number is too 
small to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MAJOR, 
UNDERFLOW), "Major version number is too small to fit into long long type.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_OVERFLOW, "Major version number is too 
big to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MAJOR, 
OVERFLOW), "Major version number is too big to fit into long long type.");
     }
     else {
       end = NULL;
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_NOT_NUMERIC, "Major version number is 
not numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MAJOR, 
NOT_NUMERIC), "Major version number is not numeric.");
     }
   }
   else {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_NEGATIVE, "Major version number is not 
numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MAJOR, 
NEGATIVE), "Major version number is not numeric.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MAJOR_TOO_BIG, "Major version number is too 
big.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MAJOR, TOO_BIG), 
"Major version number is too big.");
     }
     else {
       struct_work_copy->major = conv;
@@ -167,22 +171,22 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
 
   if (conv_err) {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MINOR_UNDERFLOW, "Minor version number is too 
small to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MINOR, 
UNDERFLOW), "Minor version number is too small to fit into long long type.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MINOR_OVERFLOW, "Minor version number is too 
big to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MINOR, 
OVERFLOW), "Minor version number is too big to fit into long long type.");
     }
     else {
       end = NULL;
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MINOR_NOT_NUMERIC, "Minor version number is 
not numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MINOR, 
NOT_NUMERIC), "Minor version number is not numeric.");
     }
   }
   else {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MINOR_NEGATIVE, "Minor version number is not 
numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MINOR, 
NEGATIVE), "Minor version number is not numeric.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_MINOR_TOO_BIG, "Minor version number is too 
big.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (MINOR, TOO_BIG), 
"Minor version number is too big.");
     }
     else {
       struct_work_copy->minor = conv;
@@ -222,22 +226,22 @@ void x2goclient_openssh_version_parse 
(X2GoClientOpenSSHVersion *openssh_version
 
   if (conv_err) {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_PATCH_UNDERFLOW, "Patch version number is too 
small to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (PATCH, 
UNDERFLOW), "Patch version number is too small to fit into long long type.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_PATCH_OVERFLOW, "Patch version number is too 
big to fit into long long type.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (PATCH, 
OVERFLOW), "Patch version number is too big to fit into long long type.");
     }
     else {
       end = NULL;
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_PATCH_NOT_NUMERIC, "Patch version number is 
not numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (PATCH, 
NOT_NUMERIC), "Patch version number is not numeric.");
     }
   }
   else {
     if (min_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_PATCH_NEGATIVE, "Patch version number is not 
numeric.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (PATCH, 
NEGATIVE), "Patch version number is not numeric.");
     }
     else if (max_err) {
-      g_set_error_literal (gerr, X2GOCLIENT_OPENSSH_VERSION_ERROR, 
X2GOCLIENT_OPENSSH_VERSION_ERROR_PATCH_TOO_BIG, "Patch version number is too 
big.");
+      g_set_error_literal (gerr, ERROR_QUARK, GENERATE_ERROR (PATCH, TOO_BIG), 
"Patch version number is too big.");
     }
     else {
       struct_work_copy->patch = conv;
diff --git a/src/x2goclient-utils.h b/src/x2goclient-utils.h
index 1a100d2..02727a3 100644
--- a/src/x2goclient-utils.h
+++ b/src/x2goclient-utils.h
@@ -31,6 +31,12 @@
 
 G_BEGIN_DECLS
 
+#define EMPTY(...)
+#define DEFER(...) __VA_ARGS__ EMPTY()
+#define OBSTRUCT(...) __VA_ARGS__ DEFER(EMPTY)()
+#define EXPAND(...) __VA_ARGS__
+#define PASTER(x, y) x ## _ ## y
+
 void x2goclient_clear_strings (gpointer data);
 
 long long x2goclient_str_to_int (const gchar *restrict str, _Bool min, long 
long limit_min, _Bool max, long long limit_max, const gchar **restrict end, 
_Bool *restrict conv_err, _Bool *restrict min_err, _Bool *restrict max_err);

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on 
/srv/git/code.x2go.org/libx2goclient.git
_______________________________________________
x2go-commits mailing list
x2go-commits@lists.x2go.org
https://lists.x2go.org/listinfo/x2go-commits

Reply via email to