Re: [PATCH 3/4] btrfs-progs: delete invalid output file when btrfs-image failed
On Thu, Jun 19, 2014 at 09:46:02AM +0800, Gui Hecheng wrote: When btrfs-image failed to create an image, the invalid output file had better be deleted to prevent being used mistakenly in the future. Signed-off-by: Gui Hecheng guihc.f...@cn.fujitsu.com --- btrfs-image.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/btrfs-image.c b/btrfs-image.c index 549722c..b235b87 100644 --- a/btrfs-image.c +++ b/btrfs-image.c @@ -2598,8 +2598,16 @@ int main(int argc, char *argv[]) out: if (out == stdout) fflush(out); - else + else { fclose(out); + if (ret create) { + ret = unlink(target); The previous value is overwritten and in case of unlink() success it's returned as success of main(), which is not true. So a local variable has to be used instead. + if (ret) + fprintf(stderr, + unlink output file failed : %s\n, + strerror(errno)); + } + } return !!ret; -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 3/4] btrfs-progs: delete invalid output file when btrfs-image failed
On Mon, 2014-06-23 at 16:15 +0200, David Sterba wrote: On Thu, Jun 19, 2014 at 09:46:02AM +0800, Gui Hecheng wrote: When btrfs-image failed to create an image, the invalid output file had better be deleted to prevent being used mistakenly in the future. Signed-off-by: Gui Hecheng guihc.f...@cn.fujitsu.com --- btrfs-image.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/btrfs-image.c b/btrfs-image.c index 549722c..b235b87 100644 --- a/btrfs-image.c +++ b/btrfs-image.c @@ -2598,8 +2598,16 @@ int main(int argc, char *argv[]) out: if (out == stdout) fflush(out); - else + else { fclose(out); + if (ret create) { + ret = unlink(target); The previous value is overwritten and in case of unlink() success it's returned as success of main(), which is not true. So a local variable has to be used instead. Yes, I'll rework resend it soon. Thanks. + if (ret) + fprintf(stderr, + unlink output file failed : %s\n, + strerror(errno)); + } + } return !!ret; -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 3/4] btrfs-progs: delete invalid output file when btrfs-image failed
When btrfs-image failed to create an image, the invalid output file had better be deleted to prevent being used mistakenly in the future. Signed-off-by: Gui Hecheng guihc.f...@cn.fujitsu.com --- btrfs-image.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/btrfs-image.c b/btrfs-image.c index 549722c..b235b87 100644 --- a/btrfs-image.c +++ b/btrfs-image.c @@ -2598,8 +2598,16 @@ int main(int argc, char *argv[]) out: if (out == stdout) fflush(out); - else + else { fclose(out); + if (ret create) { + ret = unlink(target); + if (ret) + fprintf(stderr, + unlink output file failed : %s\n, + strerror(errno)); + } + } return !!ret; } -- 1.8.1.4 -- To unsubscribe from this list: send the line unsubscribe linux-btrfs in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html