Beispiel #1
0
int getTempPath(char *buff)
{
	static const char *envname[] = {
		"TMPDIR", "TEMP", "TMP", 0
	};
	static const char *dirname[] = {
		"/tmp", "/var/tmp", "/usr/tmp", 0
	};
	int i;
	char *p;
	for ( i=0; envname[i]; i++ ) {
		p = getenv(envname[i]);
		if (p) {
			strcpy(buff, p);
			if (testTempPath(buff))
				return 1;
		}
	}
	for ( i=0; dirname[i]; i++ ) {
		strcpy(buff, dirname[i]);
		if (testTempPath(buff))
			return 1;
	}
    return 0;
}
Beispiel #2
0
int testTempPath(char *buff)
{
	char base[16];
	int n;

	n = strlen(buff);
	if ( buff[n-1] == '/' || buff[n-1] == '\\' )
		sprintf(base, "_MEI%d", getpid());
	else
		sprintf(base, "%s_MEI%d", SEP, getpid());
	strcat(buff, base);
#ifdef WIN32
	if (mkdir(buff) == 0) {
#else
	if (mkdir(buff, 0700) == 0) {
#endif
		strcat(buff, SEP);
		return 1;
	}
	return 0;
}

void getTempPath(char *buff)
{
#ifdef WIN32
	GetTempPath(MAX_PATH, buff);
	testTempPath(buff);
#else
	static const char *envname[] = {
		"TMPDIR", "TEMP", "TMP", 0
	};
	static const char *dirname[] = {
		"/tmp", "/var/tmp", "/usr/tmp", 0
	};
	int i;
	char *p;
	for ( i=0; envname[i]; i++ ) {
		p = getenv(envname[i]);
		if (p) {
			strcpy(buff, p);
			if (testTempPath(buff))
				return;
		}
	}
	for ( i=0; dirname[i]; i++ ) {
		strcpy(buff, dirname[i]);
		if (testTempPath(buff))
			return;
	}
	buff[0] = '\0';
#endif
}