[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 04/16] block: Move filename_decompose to block.c
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [RFC PATCH 04/16] block: Move filename_decompose to block.c |
Date: |
Tue, 26 Jan 2016 18:38:13 +0800 |
With the return value decoupled from VMDK, it can be reused by other block
code.
Signed-off-by: Fam Zheng <address@hidden>
---
block.c | 40 ++++++++++++++++++++++++++++++++++++++++
block/vmdk.c | 40 ----------------------------------------
include/block/block.h | 2 ++
3 files changed, 42 insertions(+), 40 deletions(-)
diff --git a/block.c b/block.c
index fa6ad1d..78db342 100644
--- a/block.c
+++ b/block.c
@@ -144,6 +144,46 @@ int path_is_absolute(const char *path)
#endif
}
+int filename_decompose(const char *filename, char *path, char *prefix,
+ char *postfix, size_t buf_len, Error **errp)
+{
+ const char *p, *q;
+
+ if (filename == NULL || !strlen(filename)) {
+ error_setg(errp, "No filename provided");
+ return -EINVAL;
+ }
+ p = strrchr(filename, '/');
+ if (p == NULL) {
+ p = strrchr(filename, '\\');
+ }
+ if (p == NULL) {
+ p = strrchr(filename, ':');
+ }
+ if (p != NULL) {
+ p++;
+ if (p - filename >= buf_len) {
+ return -EINVAL;
+ }
+ pstrcpy(path, p - filename + 1, filename);
+ } else {
+ p = filename;
+ path[0] = '\0';
+ }
+ q = strrchr(p, '.');
+ if (q == NULL) {
+ pstrcpy(prefix, buf_len, p);
+ postfix[0] = '\0';
+ } else {
+ if (q - p >= buf_len) {
+ return -EINVAL;
+ }
+ pstrcpy(prefix, q - p + 1, p);
+ pstrcpy(postfix, buf_len, q);
+ }
+ return 0;
+}
+
/* if filename is absolute, just copy it to dest. Otherwise, build a
path to it by considering it is relative to base_path. URL are
supported. */
diff --git a/block/vmdk.c b/block/vmdk.c
index f8f7fcf..505e0c2 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -1764,46 +1764,6 @@ exit:
return ret;
}
-static int filename_decompose(const char *filename, char *path, char *prefix,
- char *postfix, size_t buf_len, Error **errp)
-{
- const char *p, *q;
-
- if (filename == NULL || !strlen(filename)) {
- error_setg(errp, "No filename provided");
- return VMDK_ERROR;
- }
- p = strrchr(filename, '/');
- if (p == NULL) {
- p = strrchr(filename, '\\');
- }
- if (p == NULL) {
- p = strrchr(filename, ':');
- }
- if (p != NULL) {
- p++;
- if (p - filename >= buf_len) {
- return VMDK_ERROR;
- }
- pstrcpy(path, p - filename + 1, filename);
- } else {
- p = filename;
- path[0] = '\0';
- }
- q = strrchr(p, '.');
- if (q == NULL) {
- pstrcpy(prefix, buf_len, p);
- postfix[0] = '\0';
- } else {
- if (q - p >= buf_len) {
- return VMDK_ERROR;
- }
- pstrcpy(prefix, q - p + 1, p);
- pstrcpy(postfix, buf_len, q);
- }
- return VMDK_OK;
-}
-
static int vmdk_create(const char *filename, QemuOpts *opts, Error **errp)
{
int idx = 0;
diff --git a/include/block/block.h b/include/block/block.h
index bfb76f8..b9b30cb 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -449,6 +449,8 @@ int bdrv_is_snapshot(BlockDriverState *bs);
int path_has_protocol(const char *path);
int path_is_absolute(const char *path);
+int filename_decompose(const char *filename, char *path, char *prefix,
+ char *postfix, size_t buf_len, Error **errp);
void path_combine(char *dest, int dest_size,
const char *base_path,
const char *filename);
--
2.4.3
- [Qemu-devel] [RFC PATCH 00/16] Qemu Bit Map (QBM) - an overlay format for persistent dirty bitmap, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 01/16] doc: Add QBM format specification, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 02/16] block: Set dirty before doing write, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 03/16] block: Allow .bdrv_close callback to release dirty bitmaps, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 04/16] block: Move filename_decompose to block.c,
Fam Zheng <=
- [Qemu-devel] [RFC PATCH 05/16] block: Make bdrv_get_cluster_size public, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 06/16] block: Introduce bdrv_dirty_bitmap_set_persistent, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 07/16] block: Only swap non-persistent dirty bitmaps, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 08/16] qmp: Add optional parameter "persistent" in block-dirty-bitmap-add, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 09/16] qmp: Add block-dirty-bitmap-set-persistent, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 11/16] qapi: Add "qbm" as a generic cow format driver, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 10/16] qbm: Implement format driver, Fam Zheng, 2016/01/26
- [Qemu-devel] [RFC PATCH 12/16] iotests: Add qbm format to 041, Fam Zheng, 2016/01/26