|
Packit |
992a25 |
/***********************************************************************
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* This software is part of the ast package *
|
|
Packit |
992a25 |
* Copyright (c) 1985-2011 AT&T Intellectual Property *
|
|
Packit |
992a25 |
* and is licensed under the *
|
|
Packit |
992a25 |
* Eclipse Public License, Version 1.0 *
|
|
Packit |
992a25 |
* by AT&T Intellectual Property *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* A copy of the License is available at *
|
|
Packit |
992a25 |
* http://www.eclipse.org/org/documents/epl-v10.html *
|
|
Packit |
992a25 |
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Information and Software Systems Research *
|
|
Packit |
992a25 |
* AT&T Research *
|
|
Packit |
992a25 |
* Florham Park NJ *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Glenn Fowler <gsf@research.att.com> *
|
|
Packit |
992a25 |
* David Korn <dgk@research.att.com> *
|
|
Packit |
992a25 |
* Phong Vo <kpv@research.att.com> *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
***********************************************************************/
|
|
Packit |
992a25 |
#pragma prototyped
|
|
Packit |
992a25 |
/*
|
|
Packit |
992a25 |
* mktemp,mkstemp implementation
|
|
Packit |
992a25 |
*/
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#define mktemp ______mktemp
|
|
Packit |
992a25 |
#define mkstemp ______mkstemp
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include <ast.h>
|
|
Packit |
992a25 |
#include <stdio.h>
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#undef mktemp
|
|
Packit |
992a25 |
#undef mkstemp
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#undef _def_map_ast
|
|
Packit |
992a25 |
#include <ast_map.h>
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if defined(__EXPORT__)
|
|
Packit |
992a25 |
#define extern __EXPORT__
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
static char*
|
|
Packit |
992a25 |
temp(char* buf, int* fdp)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
char* s;
|
|
Packit |
992a25 |
char* d;
|
|
Packit |
992a25 |
int n;
|
|
Packit |
992a25 |
size_t len;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
len = strlen(buf);
|
|
Packit |
992a25 |
if (s = strrchr(buf, '/'))
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
*s++ = 0;
|
|
Packit |
992a25 |
d = buf;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
s = buf;
|
|
Packit |
992a25 |
d = "";
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
if ((n = strlen(s)) < 6 || strcmp(s + n - 6, "XXXXXX"))
|
|
Packit |
992a25 |
*buf = 0;
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
*(s + n - 6) = 0;
|
|
Packit |
992a25 |
if (!pathtemp(buf, len, d, s, fdp))
|
|
Packit |
992a25 |
*buf = 0;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
return buf;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
extern char*
|
|
Packit |
992a25 |
mktemp(char* buf)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
return temp(buf, NiL);
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
extern int
|
|
Packit |
992a25 |
mkstemp(char* buf)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
int fd;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
return *temp(buf, &fd) ? fd : -1;
|
|
Packit |
992a25 |
}
|