/* * pretty_feature_name - return a pleasantly displayable form * of feature name variable */ char * pretty_feature_name(char *feat, int width) { FEATURE_S *f; int i, upper = 1; static char fbuf[100]; f = feature_list(feature_list_index(feature_list_id(feat))); if(f && f->dname && f->dname[0]) return(f->dname); /* default: uppercase first letters, dashes become spaces */ for(i = 0; i < sizeof(fbuf)-1 && feat[i]; i++) if(upper){ fbuf[i] = (islower((unsigned char) feat[i])) ? toupper((unsigned char) feat[i]) : feat[i]; upper = 0; } else if(feat[i] == '-'){ fbuf[i] = SPACE; upper++; } else fbuf[i] = feat[i]; fbuf[i] = '\0'; /* cut off right hand edge if necessary */ if(width > 0){ char *p, gbuf[100]; p = short_str(fbuf, gbuf, sizeof(gbuf), width, EndDots); if(p != fbuf){ strncpy(fbuf, p, sizeof(fbuf)-1); fbuf[sizeof(fbuf)-1] = '\0'; } } return(fbuf); }
void smime_config_init_display(struct pine *ps, CONF_S **ctmp, CONF_S **first_line) { char tmp[200]; int i, ind, ln = 0; struct variable *vtmp; CONF_S *ctmpb; FEATURE_S *feature; /* find longest variable name */ for(vtmp = ps->vars; vtmp->name; vtmp++){ if(!(smime_related_var(ps, vtmp))) continue; if((i = utf8_width(pretty_var_name(vtmp->name))) > ln) ln = i; } for(vtmp = ps->vars; vtmp->name; vtmp++){ if(!(smime_related_var(ps, vtmp))) continue; new_confline(ctmp)->var = vtmp; if(first_line && !*first_line) *first_line = *ctmp; (*ctmp)->valoffset = ln+3; (*ctmp)->keymenu = &config_text_keymenu; (*ctmp)->help = config_help(vtmp - ps->vars, 0); (*ctmp)->tool = text_tool; utf8_snprintf(tmp, sizeof(tmp), "%-*.100w =", ln, pretty_var_name(vtmp->name)); tmp[sizeof(tmp)-1] = '\0'; (*ctmp)->varname = cpystr(tmp); (*ctmp)->varnamep = (*ctmp); (*ctmp)->flags = CF_STARTITEM; (*ctmp)->value = pretty_value(ps, *ctmp); } vtmp = &ps->vars[V_FEATURE_LIST]; new_confline(ctmp); ctmpb = (*ctmp); (*ctmp)->flags |= CF_NOSELECT | CF_STARTITEM; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->tool = NULL; /* put a nice delimiter before list */ new_confline(ctmp)->var = NULL; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = NO_HELP; (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr("Set Feature Name"); new_confline(ctmp)->var = NULL; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = NO_HELP; (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr("--- ----------------------"); ind = feature_list_index(F_DONT_DO_SMIME); feature = feature_list(ind); new_confline(ctmp)->var = vtmp; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = config_help(vtmp-ps->vars, feature->id); (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->varmem = ind; (*ctmp)->value = pretty_value(ps, (*ctmp)); ind = feature_list_index(F_ENCRYPT_DEFAULT_ON); feature = feature_list(ind); new_confline(ctmp)->var = vtmp; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = config_help(vtmp-ps->vars, feature->id); (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->varmem = ind; (*ctmp)->value = pretty_value(ps, (*ctmp)); ind = feature_list_index(F_REMEMBER_SMIME_PASSPHRASE); feature = feature_list(ind); new_confline(ctmp)->var = vtmp; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = config_help(vtmp-ps->vars, feature->id); (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->varmem = ind; (*ctmp)->value = pretty_value(ps, (*ctmp)); ind = feature_list_index(F_SIGN_DEFAULT_ON); feature = feature_list(ind); new_confline(ctmp)->var = vtmp; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = config_help(vtmp-ps->vars, feature->id); (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->varmem = ind; (*ctmp)->value = pretty_value(ps, (*ctmp)); #ifdef APPLEKEYCHAIN new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT | CF_B_LINE; new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr(_("Mac OS X specific features")); ind = feature_list_index(F_PUBLICCERTS_IN_KEYCHAIN); feature = feature_list(ind); new_confline(ctmp)->var = vtmp; (*ctmp)->varnamep = ctmpb; (*ctmp)->keymenu = &config_checkbox_keymenu; (*ctmp)->help = config_help(vtmp-ps->vars, feature->id); (*ctmp)->tool = checkbox_tool; (*ctmp)->valoffset = feature_indent(); (*ctmp)->varmem = ind; (*ctmp)->value = pretty_value(ps, (*ctmp)); #endif /* APPLEKEYCHAIN */ new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT | CF_B_LINE; new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr("---------------------------------------------------------------------------"); new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr(_("Be careful with the following commands, they REPLACE contents in the target")); new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT; (*ctmp)->value = cpystr("---------------------------------------------------------------------------"); new_confline(ctmp); (*ctmp)->flags |= CF_NOSELECT | CF_B_LINE; /* copy public directory to container */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_pub_to_con; (*ctmp)->value = cpystr(_("Transfer public certs FROM directory TO container")); (*ctmp)->varmem = 1; /* copy private directory to container */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_priv_to_con; (*ctmp)->value = cpystr(_("Transfer private keys FROM directory TO container")); (*ctmp)->varmem = 3; /* copy cacert directory to container */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_cacert_to_con; (*ctmp)->value = cpystr(_("Transfer CA certs FROM directory TO container")); (*ctmp)->varmem = 5; new_confline(ctmp)->var = vtmp; (*ctmp)->flags |= CF_NOSELECT | CF_B_LINE; /* copy public container to directory */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_pub_to_dir; (*ctmp)->value = cpystr(_("Transfer public certs FROM container TO directory")); (*ctmp)->varmem = 2; /* copy private container to directory */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_priv_to_dir; (*ctmp)->value = cpystr(_("Transfer private keys FROM container TO directory")); (*ctmp)->varmem = 4; /* copy cacert container to directory */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_cacert_to_dir; (*ctmp)->value = cpystr(_("Transfer CA certs FROM container TO directory")); (*ctmp)->varmem = 6; #ifdef APPLEKEYCHAIN new_confline(ctmp)->var = vtmp; (*ctmp)->flags |= CF_NOSELECT | CF_B_LINE; /* copy public container to keychain */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_pubcon_to_key; (*ctmp)->value = cpystr(_("Transfer public certs FROM container TO keychain")); (*ctmp)->varmem = 7; /* copy public keychain to container */ new_confline(ctmp); (*ctmp)->tool = smime_helper_tool; (*ctmp)->keymenu = &config_smime_helper_keymenu; (*ctmp)->help = h_config_smime_transfer_pubkey_to_con; (*ctmp)->value = cpystr(_("Transfer public certs FROM keychain TO container")); (*ctmp)->varmem = 8; #endif /* APPLEKEYCHAIN */ }