updates.
[silc.git] / apps / irssi / src / silc / core / silc-core.c
index 510bdff2bc9c3a2c637173422dbf1d8ccf4998da..ffc5e2a7f77368fb651e2f7b1df8392e8851d7f6 100644 (file)
 
 /* Command line option variables */
 static bool opt_create_keypair = FALSE;
-static bool opt_debug = FALSE;
 static bool opt_list_ciphers = FALSE;
 static bool opt_list_hash = FALSE;
 static bool opt_list_hmac = FALSE;
 static bool opt_list_pkcs = FALSE;
 static bool opt_version = FALSE;
+static char *opt_debug = FALSE;
 static char *opt_pkcs = NULL;
 static char *opt_keyfile = NULL;
 static int opt_bits = 0;
@@ -66,7 +66,7 @@ uint32 sims_count = 0;
 
 static int my_silc_scheduler(void)
 {
-  silc_schedule_one(0);
+  silc_schedule_one(silc_client->schedule, 0);
   return 1;
 }
 
@@ -193,7 +193,7 @@ void silc_core_init(void)
       "List supported HMACs", NULL },
     { "list-pkcs", 'P', POPT_ARG_NONE, &opt_list_pkcs, 0,
       "List supported PKCSs", NULL },
-    { "debug", 'd', POPT_ARG_NONE, &opt_debug, 0,
+    { "debug", 'd', POPT_ARG_STRING, &opt_debug, 0,
       "Enable debugging", NULL },
     { "version", 'V', POPT_ARG_NONE, &opt_version, 0,
       "Show version", NULL },
@@ -203,11 +203,18 @@ void silc_core_init(void)
   args_register(options);
 }
 
+static void silc_nickname_format_parse(const char *nickname,
+                                      char **ret_nickname)
+{
+  silc_parse_userfqdn(nickname, ret_nickname, NULL);
+}
+
 /* Finalize init. Called from src/fe-text/silc.c */
 
 void silc_core_init_finish(void)
 {
   CHAT_PROTOCOL_REC *rec;
+  SilcClientParams params;
 
   if (opt_create_keypair == TRUE) {
     /* Create new key pair and exit */
@@ -255,30 +262,47 @@ void silc_core_init_finish(void)
   }
 
   if (opt_version) {
-    printf("SILC Secure Internet Live Conferencing, version %s\n", 
-          silc_version);
-    printf("(c) 1997 - 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>\n");
+    printf("SILC Secure Internet Live Conferencing, version %s "
+          "(base: SILC Toolkit %s)\n", silc_dist_version, silc_version);
+    printf("(c) 1997 - 2001 Pekka Riikonen <priikone@silcnet.org>\n");
     exit(0); 
   }
 
-  silc_debug = opt_debug;
-  silc_log_set_callbacks(silc_log_info, silc_log_warning,
-                        silc_log_error, NULL);
+  if (opt_debug) {
+    silc_debug = TRUE;
+    silc_log_set_debug_string(opt_debug);
+    silc_log_set_callbacks(silc_log_info, silc_log_warning,
+                          silc_log_error, NULL);
+  }
 
   /* Do some irssi initializing */
   settings_add_bool("server", "skip_motd", FALSE);
   settings_add_str("server", "alternate_nick", NULL);
+  
+  /* Initialize the auto_addr variables Is "server" the best choice for
+   * this?  No existing category seems to apply.
+   */
+  
+  settings_add_bool("server", "use_auto_addr", FALSE);
+  settings_add_str("server", "auto_bind_ip", "");
+  settings_add_str("server", "auto_public_ip", "");
+  settings_add_int("server", "auto_bind_port", 0);
+                               
   silc_init_userinfo();
 
+  /* Initialize client parameters */
+  memset(&params, 0, sizeof(params));
+  strcat(params.nickname_format, "%n@%h%a");
+  params.nickname_parse = silc_nickname_format_parse;
+
   /* Allocate SILC client */
-  silc_client = silc_client_alloc(&ops, NULL);
+  silc_client = silc_client_alloc(&ops, &params, NULL, silc_version_string);
 
   /* Load local config file */
   silc_config = silc_client_config_alloc(SILC_CLIENT_HOME_CONFIG_FILE);
 
   /* Get user information */
-//  silc_client->username = g_strdup(settings_get_str("user_name"));
-  silc_client->username = strdup("priikone@pelle.palle.polle.puu");
+  silc_client->username = g_strdup(settings_get_str("user_name"));
   silc_client->hostname = silc_net_localhost();
   silc_client->realname = g_strdup(settings_get_str("real_name"));
 
@@ -342,7 +366,7 @@ void silc_core_init_finish(void)
   silc_channels_init();
   silc_queries_init();
 
-  idletag = g_timeout_add(50, (GSourceFunc) my_silc_scheduler, NULL);
+  idletag = g_timeout_add(5, (GSourceFunc) my_silc_scheduler, NULL);
 }
 
 /* Deinit SILC. Called from src/fe-text/silc.c */