mcabber/mcabber/commands.c
changeset 2266 bdee1ede7572
parent 2265 b79a34e21076
child 2268 f5402d705f67
equal deleted inserted replaced
2265:b79a34e21076 2266:bdee1ede7572
  2301   update_roster = TRUE;
  2301   update_roster = TRUE;
  2302 }
  2302 }
  2303 
  2303 
  2304 static void list_option_cb(char *k, char *v, void *f)
  2304 static void list_option_cb(char *k, char *v, void *f)
  2305 {
  2305 {
  2306   if (strcmp(k, "password")) {
  2306   if (strncmp(k, "password", 8) && strcmp(k, "pgp_passphrase")) {
  2307     GSList **list = f;
  2307     GSList **list = f;
  2308     *list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp);
  2308     *list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp);
  2309   }
  2309   }
  2310 }
  2310 }
  2311 
  2311 
  2314   guint assign;
  2314   guint assign;
  2315   gchar *option, *value;
  2315   gchar *option, *value;
  2316   gchar *option_utf8;
  2316   gchar *option_utf8;
  2317 
  2317 
  2318   if (!*arg) {
  2318   if (!*arg) {
  2319     // list all set options
  2319     // List all set options
       
  2320     gsize max = 0;
       
  2321     gsize maxmax = scr_gettextwidth() / 3;
       
  2322     GSList *lel;
       
  2323     gchar *format;
  2320     GSList *list = NULL;
  2324     GSList *list = NULL;
  2321     // Get sorted list of keys
  2325     // Get sorted list of keys
  2322     settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list);
  2326     settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list);
  2323     if (list) {
  2327     if (!list) {
  2324       gsize max = 0;
  2328       scr_LogPrint(LPRINT_NORMAL, "No options found.");
  2325       gsize maxmax = scr_gettextwidth() / 3;
  2329       return;
  2326       GSList *lel;
  2330     }
  2327       gchar *format;
  2331     // Find out maximum key length
  2328       // Find out maximum key length
  2332     for (lel = list; lel; lel = lel->next) {
  2329       for (lel = list; lel; lel = lel->next) {
  2333       const gchar *key = lel->data;
  2330         const gchar *key = lel->data;
  2334       gsize len = strlen(key);
  2331         gsize len = strlen(key);
  2335       if (len > max) {
  2332         if (len > max) {
  2336         max = len;
  2333           max = len;
  2337         if (max > maxmax) {
  2334           if (max > maxmax) {
  2338           max = maxmax;
  2335             max = maxmax;
  2339           break;
  2336             break;
       
  2337           }
       
  2338         }
  2340         }
  2339       }
  2341       }
  2340       // Print out list of options
  2342     }
  2341       format = g_strdup_printf("%%-%us = [%%s]", (unsigned)max);
  2343     // Print out list of options
  2342       for (lel = list; lel; lel = lel->next) {
  2344     format = g_strdup_printf("%%-%us = [%%s]", (unsigned)max);
  2343         const gchar *key = lel->data;
  2345     for (lel = list; lel; lel = lel->next) {
  2344         if (g_ascii_strncasecmp(key, "password", 8) != 0)
  2346       const gchar *key = lel->data;
  2345           scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key));
  2347       scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key));
  2346       }
  2348     }
  2347       g_free(format);
  2349     g_free(format);
  2348       scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
  2350     scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
  2349       scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
  2351     scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
  2350                                  ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
  2352                                ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
  2351     } else {
       
  2352       scr_LogPrint(LPRINT_NORMAL, "No options found.");
       
  2353     }
       
  2354     return;
  2353     return;
  2355   }
  2354   }
  2356 
  2355 
  2357   assign = parse_assigment(arg, &option, &value);
  2356   assign = parse_assigment(arg, &option, &value);
  2358   if (!option) {
  2357   if (!option) {
  2362   option_utf8 = to_utf8(option);
  2361   option_utf8 = to_utf8(option);
  2363   g_free(option);
  2362   g_free(option);
  2364   if (!assign) {  // This is a query
  2363   if (!assign) {  // This is a query
  2365     const gchar *val = settings_opt_get(option_utf8);
  2364     const gchar *val = settings_opt_get(option_utf8);
  2366     if (val) {
  2365     if (val) {
  2367       if (g_ascii_strncasecmp(option_utf8, "password", 8) == 0)
  2366       if (g_ascii_strncasecmp(option_utf8, "password", 8) == 0 ||
  2368         val = NULL;
  2367           g_ascii_strcasecmp(option_utf8, "pgp_passphrase") == 0)
       
  2368         val = "***";
  2369       scr_LogPrint(LPRINT_NORMAL, "%s = [%s]", option_utf8, val);
  2369       scr_LogPrint(LPRINT_NORMAL, "%s = [%s]", option_utf8, val);
  2370     } else {
  2370     } else {
  2371       scr_LogPrint(LPRINT_NORMAL, "Option %s is not set", option_utf8);
  2371       scr_LogPrint(LPRINT_NORMAL, "Option %s is not set", option_utf8);
  2372     }
  2372     }
  2373     g_free(option_utf8);
  2373     g_free(option_utf8);