843 |
gpgme_error_t rc; |
gpgme_error_t rc; |
844 |
GPGME *ctx; |
GPGME *ctx; |
845 |
struct keycache_s *c; |
struct keycache_s *c; |
846 |
char *fname; |
char *fname, *uid; |
847 |
int pos; |
int pos, n; |
|
int n; |
|
848 |
|
|
849 |
if (listview_count_items (lv, 1) > 1) { |
if (listview_count_items (lv, 1) > 1) { |
850 |
msg_box (dlg, _("Please only select one key."), |
msg_box (dlg, _("Please only select one key."), |
857 |
return WPTERR_GENERAL; |
return WPTERR_GENERAL; |
858 |
} |
} |
859 |
key = km_get_key_ptr (lv, pos, &c); |
key = km_get_key_ptr (lv, pos, &c); |
860 |
|
uid = m_strdup (c->uids->name); |
861 |
n = strlen (c->uids->name)+1 + MAX_PATH + 5; |
secure_filename (uid, strlen (uid)); |
862 |
|
n = strlen (uid) + 1 + MAX_PATH + 5; |
863 |
fname = new char[n+1]; |
fname = new char[n+1]; |
864 |
get_temp_name (fname, n-5, c->uids->name); |
get_temp_name (fname, n-5-strlen (uid)-1, uid); |
|
secure_filename (fname, strlen (fname)); |
|
865 |
strcat (fname, ".asc"); |
strcat (fname, ".asc"); |
866 |
ctx = new GPGME (); |
ctx = new GPGME (); |
867 |
ctx->setArmor (true); |
ctx->setArmor (true); |
873 |
|
|
874 |
delete ctx; |
delete ctx; |
875 |
free_if_alloc (fname); |
free_if_alloc (fname); |
876 |
|
free_if_alloc (uid); |
877 |
return rc; |
return rc; |
878 |
} |
} |
879 |
|
|
880 |
|
|
881 |
/* Refresh the selected key in the listview @lv at position @pos. |
/* Refresh the selected key in the listview @lv at position @pos. |
882 |
Legal flags are 0 = single key. */ |
Legal flags are 0 = single key. */ |
883 |
static void |
static int |
884 |
km_refresh_one_key (listview_ctrl_t lv, HWND dlg, int pos, int flags) |
km_refresh_one_key (listview_ctrl_t lv, HWND dlg, int pos, int flags) |
885 |
{ |
{ |
886 |
winpt_key_s pk; |
winpt_key_s pk; |
913 |
if (!flags && !err) |
if (!flags && !err) |
914 |
keycache_update (0, keyid); |
keycache_update (0, keyid); |
915 |
} |
} |
916 |
|
return err; |
917 |
} |
} |
918 |
|
|
919 |
|
|
921 |
int |
int |
922 |
km_refresh_from_keyserver (listview_ctrl_t lv, HWND dlg) |
km_refresh_from_keyserver (listview_ctrl_t lv, HWND dlg) |
923 |
{ |
{ |
924 |
int cnt, id, i; |
int cnt, id, i; |
925 |
|
int err = 0; |
926 |
|
|
927 |
cnt = listview_count_items (lv, 0); |
cnt = listview_count_items (lv, 0); |
928 |
if (listview_count_items (lv, 1) == cnt) { |
if (listview_count_items (lv, 1) == cnt) { |
937 |
} |
} |
938 |
} |
} |
939 |
if (listview_count_items (lv, 1) == 1) |
if (listview_count_items (lv, 1) == 1) |
940 |
km_refresh_one_key (lv, dlg, listview_get_curr_pos (lv), 0); |
err = km_refresh_one_key (lv, dlg, listview_get_curr_pos (lv), 0); |
941 |
else { |
else { |
942 |
for (i=0; i < cnt; i++) { |
for (i=0; i < cnt; i++) { |
943 |
if (listview_get_item_state (lv, i)) |
if (listview_get_item_state (lv, i)) |
944 |
km_refresh_one_key (lv, dlg, i, KM_KS_REFRESH); |
km_refresh_one_key (lv, dlg, i, KM_KS_REFRESH); |
945 |
} |
} |
946 |
} |
} |
947 |
return 0; |
return err; |
948 |
} |
} |
949 |
|
|
950 |
|
|