fis-gtm/sr_port/gtm_tempnam.c

55 lines
1.4 KiB
C

/****************************************************************
* *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "gtm_string.h"
#include "gtm_stdio.h"
#include "gtm_tempnam.h"
/**************************************************************
* gtm_tempnam()
* Generates a temporary file name and places it in fullname
* Note that fullname should be malloced by the caller
* It is assumed to be of proper size (MAX_FN_LEN + 1)
*
**************************************************************/
void gtm_tempnam(char *dir, char *prefix, char *fullname)
{
static int temp_file_counter = 0;
int len;
char *ptr, def_prefix[] = "GTM_TEMP_";
if (NULL == dir)
{
len = SIZEOF(SCRATCH_DIR) - 1;
memcpy(fullname, SCRATCH_DIR, len);
} else
{
len = STRLEN(dir);
memcpy(fullname, dir, len);
}
ptr = fullname + len;
if (NULL == prefix)
{
prefix = def_prefix;
len = SIZEOF(def_prefix) - 1;
memcpy(ptr, def_prefix, len);
} else
{
len = STRLEN(prefix);
memcpy(ptr, prefix, len);
}
ptr += len;
SPRINTF(ptr, "_%d.tmp", temp_file_counter++);
}