/* Copyright (C) 1999 artofcode LLC. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307. */ /*$Id: gp_mktmp.c,v 1.2.6.1.2.1 2003/01/17 00:49:02 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; }