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 Jefferyint 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 Jefferyvoid 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