+#ifndef SILC_PLUGIN
+static gboolean list_ciphers(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_cipher_register_default();
+ silc_client_list_ciphers();
+ exit(0);
+ return true;
+}
+
+static gboolean list_hash_funcs(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_hash_register_default();
+ silc_client_list_hash_funcs();
+ exit(0);
+ return true;
+}
+
+static gboolean list_hmacs(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_hmac_register_default();
+ silc_client_list_hmacs();
+ exit(0);
+ return true;
+}
+
+static gboolean list_pkcs(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_pkcs_register_default();
+ silc_client_list_pkcs();
+ exit(0);
+ return true;
+}
+
+#ifdef SILC_DEBUG
+static gboolean enable_debug(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ /* Set debug string setting but don't enable it. User must be
+ /set enable on to get the debugs. */
+ settings_set_str("debug_string", (char *)value);
+
+ /* Default debugging when -d was given in command line */
+ silc_log_debug(TRUE);
+ silc_log_debug_hexdump(TRUE);
+ silc_log_set_debug_string((char *)value);
+ return true;
+}
+#else
+static gboolean enable_debug(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ fprintf(stdout,
+ "Run-time debugging is not enabled. To enable it recompile\n"
+ "the client with --enable-debug configuration option.\n");
+ sleep(1);
+ return true;
+}
+#endif /* SILC_DEBUG */
+
+static gboolean create_keypair(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_cipher_register_default();
+ silc_pkcs_register_default();
+ silc_hash_register_default();
+ silc_hmac_register_default();
+ silc_create_key_pair(opt_pkcs, opt_bits, NULL, NULL, NULL, NULL,
+ NULL, NULL, TRUE);
+ exit(0);
+ return true;
+}
+
+static gboolean change_passphrase(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_cipher_register_default();
+ silc_pkcs_register_default();
+ silc_hash_register_default();
+ silc_hmac_register_default();
+ silc_change_private_key_passphrase((char *)value, NULL, NULL);
+ exit(0);
+ return true;
+}
+
+static gboolean show_key(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ silc_cipher_register_default();
+ silc_pkcs_register_default();
+ silc_hash_register_default();
+ silc_hmac_register_default();
+ silc_show_public_key_file((char *)value);
+ exit(0);
+ return true;
+}
+#endif /* !SILC_PLUGIN */
+