diff options
| author | Leandro Pereira <leandro@hardinfo.org> | 2010-01-02 19:03:50 -0200 | 
|---|---|---|
| committer | Leandro Pereira <leandro@hardinfo.org> | 2010-01-02 19:03:50 -0200 | 
| commit | 59076fcdc0a79731f0a12fd52eee97bc0abaced4 (patch) | |
| tree | 9ca998bb408f045d4d0765328a81e675874c23ba | |
| parent | 74db5c000b5747c32f8bdedfefe5dc50a88ba765 (diff) | |
If the module entry has the flag MODULE_FLAG_NO_REMOTE, don't their methods to be called
| -rw-r--r-- | hardinfo2/xmlrpc-server.c | 55 | 
1 files changed, 41 insertions, 14 deletions
| diff --git a/hardinfo2/xmlrpc-server.c b/hardinfo2/xmlrpc-server.c index 4cf5b682..439a7dc4 100644 --- a/hardinfo2/xmlrpc-server.c +++ b/hardinfo2/xmlrpc-server.c @@ -206,7 +206,9 @@ static void method_get_entry_list(SoupMessage * msg, GValueArray * params)              module_entry = (ShellModuleEntry *) entry->data; -            if (!(module_entry->flags & MODULE_FLAG_NO_REMOTE)) { +            if (module_entry->flags & MODULE_FLAG_NO_REMOTE) { +                /* do nothing if we're not supposed to */ +            } else {                  tuple = soup_value_array_new();                  soup_value_array_append(tuple, G_TYPE_STRING, module_entry->name); @@ -241,7 +243,7 @@ static void method_entry_get_field(SoupMessage * msg, GValueArray * params)      for (modules = modules_get_list(); modules; modules = modules->next) {  	module = (ShellModule *) modules->data; - +	  	if (!strncmp(module->name, module_name, strlen(module->name))) {  	    found = TRUE;  	    break; @@ -249,11 +251,15 @@ static void method_entry_get_field(SoupMessage * msg, GValueArray * params)      }      if (found) { -        if (entry_number < g_slist_length(module->entries)) { +	if (entry_number < g_slist_length(module->entries)) {            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; - -          answer = module_entry_get_field(entry, field_name); +           +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              answer = module_entry_get_field(entry, field_name); +          }          }      } @@ -297,7 +303,11 @@ static void method_entry_get_moreinfo(SoupMessage * msg,            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; -          answer = module_entry_get_moreinfo(entry, field_name); +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              answer = module_entry_get_moreinfo(entry, field_name); +          }          }      } @@ -339,8 +349,12 @@ static void method_entry_reload(SoupMessage * msg, GValueArray * params)            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; -          module_entry_reload(entry); -          answer = TRUE; +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              module_entry_reload(entry); +              answer = TRUE; +          }          }      } @@ -377,8 +391,12 @@ static void method_entry_scan(SoupMessage * msg, GValueArray * params)            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; -          module_entry_scan(entry); -          answer = TRUE; +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              module_entry_scan(entry); +              answer = TRUE; +          }          }      } @@ -415,16 +433,21 @@ static void method_entry_function(SoupMessage * msg, GValueArray * params)            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; -          module_entry_scan(entry); -          answer = module_entry_function(entry); +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              module_entry_scan(entry); +              answer = module_entry_function(entry); +          }          }      }      if (!answer) { -        answer = ""; +        answer = g_strdup("");      }      soup_xmlrpc_set_response(msg, G_TYPE_STRING, answer); +    g_free(answer);  } @@ -458,7 +481,11 @@ static void method_entry_get_note(SoupMessage * msg, GValueArray * params)            GSList *entry_node = g_slist_nth(module->entries, entry_number);            ShellModuleEntry *entry = (ShellModuleEntry *)entry_node->data; -          answer = g_strdup((gchar *)module_entry_get_note(entry)); +          if (entry->flags & MODULE_FLAG_NO_REMOTE) { +              /* do nothing */ +          } else { +              answer = g_strdup((gchar *)module_entry_get_note(entry)); +          }          }      } | 
