Fix cryptsetup status output if parameter is device path.

git-svn-id: https://cryptsetup.googlecode.com/svn/trunk@682 36d66b0a-2a48-0410-832c-cd162a569da5
This commit is contained in:
Milan Broz
2011-11-08 21:29:44 +00:00
parent 01938e3cdd
commit 774d1de56e
2 changed files with 18 additions and 4 deletions

View File

@@ -27,6 +27,7 @@
#include <inttypes.h>
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>
#include <limits.h>
@@ -378,9 +379,14 @@ static int action_status(int arg __attribute__((unused)))
crypt_status_info ci;
struct crypt_active_device cad;
struct crypt_device *cd = NULL;
struct stat st;
char *backing_file;
const char *device;
int r = 0;
int path = 0, r = 0;
/* perhaps a path, not a dm device name */
if (strchr(action_argv[0], '/') && !stat(action_argv[0], &st))
path = 1;
ci = crypt_status(NULL, action_argv[0]);
switch (ci) {
@@ -388,13 +394,20 @@ static int action_status(int arg __attribute__((unused)))
r = -EINVAL;
break;
case CRYPT_INACTIVE:
log_std("%s/%s is inactive.\n", crypt_get_dir(), action_argv[0]);
if (path)
log_std("%s is inactive.\n", action_argv[0]);
else
log_std("%s/%s is inactive.\n", crypt_get_dir(), action_argv[0]);
r = -ENODEV;
break;
case CRYPT_ACTIVE:
case CRYPT_BUSY:
log_std("%s/%s is active%s.\n", crypt_get_dir(), action_argv[0],
ci == CRYPT_BUSY ? " and is in use" : "");
if (path)
log_std("%s is active%s.\n", action_argv[0],
ci == CRYPT_BUSY ? " and is in use" : "");
else
log_std("%s/%s is active%s.\n", crypt_get_dir(), action_argv[0],
ci == CRYPT_BUSY ? " and is in use" : "");
r = crypt_init_by_name(&cd, action_argv[0]);
if (r < 0 || !crypt_get_type(cd))
goto out;