1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* Copyright (C) 1999 Aladdin Enterprises. All rights reserved.
-
- This software is provided AS-IS with no warranty, either express or
- implied.
-
- This software is distributed under license and may not be copied,
- modified or distributed except as expressly authorized under the terms
- of the license contained in the file LICENSE in this distribution.
-
- For more information about licensing, please refer to
- http://www.ghostscript.com/licensing/. For information on
- commercial licensing, go to http://www.artifex.com/licensing/ or
- contact Artifex Software, Inc., 101 Lucas Valley Road #110,
- San Rafael, CA 94903, U.S.A., +1(415)492-9861.
- */
- /* $Id: gp_mktmp.c,v 1.4 2002/02/21 22:24:52 giles Exp $ */
- /* Replacement for missing mktemp */
- #include "stat_.h"
- #include "string_.h"
- /* This procedure simulates mktemp on platforms that don't provide it. */
- char *
- mktemp(char *fname)
- {
- struct stat fst;
- int len = strlen(fname);
- char *end = fname + len - 6;
-
- if (len < 6 || strcmp(end, "XXXXXX"))
- return (char *)0; /* invalid */
- strcpy(end, "AA.AAA");
- while (stat(fname, &fst) == 0) {
- char *inc = fname + len - 1;
- while (*inc == 'Z' || *inc == '.') {
- if (inc == end)
- return (char *)0; /* failure */
- if (*inc == 'Z')
- *inc = 'A';
- --inc;
- }
- ++*inc;
- }
- return fname;
- }
|