1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-16 00:29:50 +02:00

g10: Allow relative path for specifying the file for bkuptocard.

* g10/keyedit.c (keyedit_menu): Assume the file is under GNUPGHOME.
Also support tilda expansion.
This commit is contained in:
NIIBE Yutaka 2015-12-24 10:41:23 +09:00
parent 40959add1b
commit ee433d2b00

View File

@ -1927,17 +1927,23 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
backup key as generated by the card generation, parse backup key as generated by the card generation, parse
that key and store it on card. */ that key and store it on card. */
KBNODE node; KBNODE node;
const char *fname; char *fname;
PACKET *pkt; PACKET *pkt;
IOBUF a; IOBUF a;
fname = arg_string; if (!*arg_string)
if (!*fname)
{ {
tty_printf (_("Command expects a filename argument\n")); tty_printf (_("Command expects a filename argument\n"));
break; break;
} }
if (*arg_string == DIRSEP_C)
fname = xstrdup (arg_string);
else if (*arg_string == '~')
fname = make_filename (arg_string, NULL);
else
fname = make_filename (opt.homedir, arg_string, NULL);
/* Open that file. */ /* Open that file. */
a = iobuf_open (fname); a = iobuf_open (fname);
if (a && is_secured_file (iobuf_get_fd (a))) if (a && is_secured_file (iobuf_get_fd (a)))
@ -1946,12 +1952,13 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
a = NULL; a = NULL;
gpg_err_set_errno (EPERM); gpg_err_set_errno (EPERM);
} }
if (!a) if (!a)
{ {
tty_printf (_("Can't open '%s': %s\n"), tty_printf (_("Can't open '%s': %s\n"),
fname, strerror (errno)); fname, strerror (errno));
break; xfree (fname);
} break;
}
/* Parse and check that file. */ /* Parse and check that file. */
pkt = xmalloc (sizeof *pkt); pkt = xmalloc (sizeof *pkt);
@ -1962,14 +1969,17 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
if (!err && pkt->pkttype != PKT_SECRET_KEY if (!err && pkt->pkttype != PKT_SECRET_KEY
&& pkt->pkttype != PKT_SECRET_SUBKEY) && pkt->pkttype != PKT_SECRET_SUBKEY)
err = GPG_ERR_NO_SECKEY; err = GPG_ERR_NO_SECKEY;
if (err) if (err)
{ {
tty_printf (_("Error reading backup key from '%s': %s\n"), tty_printf (_("Error reading backup key from '%s': %s\n"),
fname, gpg_strerror (err)); fname, gpg_strerror (err));
free_packet (pkt); xfree (fname);
xfree (pkt); free_packet (pkt);
break; xfree (pkt);
} break;
}
xfree (fname);
node = new_kbnode (pkt); node = new_kbnode (pkt);
if (cmd == cmdCHECKBKUPKEY) if (cmd == cmdCHECKBKUPKEY)