I didn't spot any errors as such, but there are some sections that can be simplified a great deal so marking as needsfixing. But really good work I must say.
Why not use g_strdupv()? Or just g_value_set_boxed(&value, domains); Or even simpler g_object_set (self, "domains-configuration", domains, NULL); ? ;-) (this works because you have registered a boxed pspec of G_TYPE_STRV)
And some C nitpickery... The 'gchar**' you pass around are really 'const gchar* const*' - not saying you have to use this signature, but I personally like being anal with that :-)
I didn't spot any errors as such, but there are some sections that can be simplified a great deal so marking as needsfixing. But really good work I must say.
313 +void connman_ service_ set_passphrase( ConnmanService *self, rivate *priv = GET_PRIVATE(self); if_fail( CONNMAN_ IS_SERVICE( self)); if_fail( priv != NULL); init(&value, G_TYPE_STRING); set_string( &value, passphrase); set_property( G_OBJECT( self), "passphrase", &value); unset(& value);
314 + const gchar *passphrase)
315 +{
316 + ConnmanServiceP
317 + GValue value = {0};
318 +
319 + g_return_
320 + g_return_
321 +
322 + g_value_
323 + g_value_
324 +
325 + g_object_
326 +
327 + g_value_
328 +}
Considering all places you apply this pattern - you can do this a lot easier in 1 of 2 ways:
1)
const gchar *newval;
priv->stringprop = g_strup (newval);
g_object_notify (self, "stringprop");
2)
const gchar *newval;
g_object_set (self, "stringprop", newval, NULL);
580 +void connman_ service_ set_domains_ configuration( ConnmanService *self, rivate *priv = GET_PRIVATE(self); if_fail( CONNMAN_ IS_SERVICE( self)); if_fail( priv != NULL); length( domains) ; domains[ i]); init(&value, G_TYPE_STRV); take_boxed( &value, array); set_property( G_OBJECT( self), "domains- configuration" , &value); unset(& value);
581 + gchar **domains)
582 +{
583 + ConnmanServiceP
584 + GValue value = {0};
585 + gchar **array;
586 + guint i, len;
587 +
588 + g_return_
589 + g_return_
590 +
591 + /* FIXME: figure out and _document_ how to clear the domains */
592 + if (domains == NULL)
593 + return;
594 +
595 + len = g_strv_
596 +
597 + array = g_new0(gchar *, len + 1);
598 +
599 + for (i = 0; i < len; i++)
600 + array[i] = g_strdup(
601 +
602 + array[len] = NULL;
603 +
604 + g_value_
605 + g_value_
606 +
607 + g_object_
608 +
609 + g_value_
610 +}
Why not use g_strdupv()? Or just g_value_ set_boxed( &value, domains); Or even simpler g_object_set (self, "domains- configuration" , domains, NULL); ? ;-) (this works because you have registered a boxed pspec of G_TYPE_STRV)
And some C nitpickery... The 'gchar**' you pass around are really 'const gchar* const*' - not saying you have to use this signature, but I personally like being anal with that :-)
811 +static void nameservers_ updated( ConnmanService *self, GVariant *variant) rivate *priv = GET_PRIVATE(self); priv->nameserve rs); iter_init( &iter, variant); iter_next( &iter, "s", &server)) { "libconnman: nameserver limit reached!"); notify( G_OBJECT( self), "nameservers"); unref(variant) ;
812 +{
813 + ConnmanServiceP
814 + GVariantIter iter;
815 + gchar **array, *server;
816 + guint i;
817 +
818 + g_strfreev(
819 +
820 + g_variant_
821 + i = 0;
822 + array = g_new0(char *, MAX_NAMESERVERS);
823 +
824 + while (g_variant_
825 + array[i] = server;
826 + i++;
827 + if (i >= MAX_NAMESERVERS) {
828 + g_warning(
829 + break;
830 + }
831 + }
832 +
833 + if (i == 0) {
834 + g_free(array);
835 + array = NULL;
836 + }
837 +
838 + priv->nameservers = array;
839 + g_object_
840 +
841 + g_variant_
842 +}
g_variant_ get_strv( )?
And no need to prefix the g_warning() if you define a log domian on compile time. Something like -DG_LOG_ DOMAIN= \"libconnman\ "
1548 +static string list2str(string[] list) {
1549 + var result = "";
1550 + foreach (var s in list) {
1551 + result += s + " ";
1552 + }
1553 +
1554 + return result;
1555 +}
You can do:
string.joinv(" ", list);
or
string.join(" ", "elt1", "elt2", "elt3", ...);