summaryrefslogtreecommitdiffhomepage
path: root/src/driver/mdso_unit_ctx.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-05-13 09:03:23 +0000
committermidipix <writeonce@midipix.org>2021-05-13 09:12:34 +0000
commit761416a628f6468920db6ac52a36fdbd9eb83ab3 (patch)
tree10329014be02bb53a64b2cebac8174828b671345 /src/driver/mdso_unit_ctx.c
parent7efccc6ee25a57fd539d2521c6a85759cd6248b2 (diff)
downloadmdso-761416a628f6468920db6ac52a36fdbd9eb83ab3.tar.bz2
mdso-761416a628f6468920db6ac52a36fdbd9eb83ab3.tar.xz
driver: stdin input: unlink temporary file upon freeing of driver context.
Diffstat (limited to 'src/driver/mdso_unit_ctx.c')
-rw-r--r--src/driver/mdso_unit_ctx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/driver/mdso_unit_ctx.c b/src/driver/mdso_unit_ctx.c
index d14beed..1c6212c 100644
--- a/src/driver/mdso_unit_ctx.c
+++ b/src/driver/mdso_unit_ctx.c
@@ -42,7 +42,7 @@ static int mdso_stdin_to_tmp(const struct mdso_driver_ctx * dctx)
ssize_t cnt;
char * ch;
char buf[4096];
- char template[] = "/tmp/mdso_stdin_to_tmp_XXXXXX";
+ char tmpname[] = "/tmp/mdso_stdin_to_tmp_XXXXXX";
addr = (uintptr_t)dctx - offsetof(struct mdso_driver_ctx_impl,ctx);
ictx = (struct mdso_driver_ctx_impl *)addr;
@@ -50,14 +50,17 @@ static int mdso_stdin_to_tmp(const struct mdso_driver_ctx * dctx)
if (ictx->fdtmpin >= 0)
return dup(ictx->fdtmpin);
- if ((fdtmp = mkstemp(template)) < 0)
+ if ((fdtmp = mkstemp(tmpname)) < 0)
return -1;
if ((ictx->fdtmpin = dup(fdtmp)) < 0) {
close(fdtmp);
+ unlink(tmpname);
return -1;
}
+ strcpy(ictx->tmpname,tmpname);
+
for (;;) {
ret = read(0,buf,sizeof(buf)-1);