xref: /openbmc/hiomapd/test/tmpf.c (revision 68a24c9ea5ce11c87fab22a3f4648c7d88c98fee)
1*4fe996c2SAndrew Jeffery // SPDX-License-Identifier: Apache-2.0
2*4fe996c2SAndrew Jeffery // Copyright (C) 2018 IBM Corp.
345cfc384SAndrew Jeffery 
445cfc384SAndrew Jeffery #define _GNU_SOURCE
545cfc384SAndrew Jeffery #include <stdio.h>
645cfc384SAndrew Jeffery #include <stdlib.h>
745cfc384SAndrew Jeffery #include <string.h>
845cfc384SAndrew Jeffery #include <unistd.h>
945cfc384SAndrew Jeffery 
1045cfc384SAndrew Jeffery #include "test/tmpf.h"
1145cfc384SAndrew Jeffery 
12c3144042SAndrew Jeffery static const char *tmpf_dir = "/tmp/";
13c3144042SAndrew Jeffery 
tmpf_init(struct tmpf * tmpf,const char * template)1445cfc384SAndrew Jeffery int tmpf_init(struct tmpf *tmpf, const char *template)
1545cfc384SAndrew Jeffery {
16c3144042SAndrew Jeffery 	strcpy(tmpf->path, tmpf_dir);
17c3144042SAndrew Jeffery 	strncat(tmpf->path, template, sizeof(tmpf->path) - sizeof(tmpf_dir));
1845cfc384SAndrew Jeffery 
1945cfc384SAndrew Jeffery 	tmpf->fd = mkstemp(tmpf->path);
2045cfc384SAndrew Jeffery 	if (tmpf->fd < 0) {
2145cfc384SAndrew Jeffery 		perror("mkstemp");
2245cfc384SAndrew Jeffery 		return -1;
2345cfc384SAndrew Jeffery 	}
2445cfc384SAndrew Jeffery 
2545cfc384SAndrew Jeffery 	return 0;
2645cfc384SAndrew Jeffery }
2745cfc384SAndrew Jeffery 
tmpf_destroy(struct tmpf * tmpf)2845cfc384SAndrew Jeffery void tmpf_destroy(struct tmpf *tmpf)
2945cfc384SAndrew Jeffery {
3045cfc384SAndrew Jeffery 	if (tmpf->fd)
3145cfc384SAndrew Jeffery 		close(tmpf->fd);
3245cfc384SAndrew Jeffery 
3345cfc384SAndrew Jeffery 	unlink(tmpf->path);
3445cfc384SAndrew Jeffery }
35