Check-in [6b27ab3d35]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Rewrote mkstemp() implementation
Timelines: family | ancestors | descendants | both | new-driver
Files: files | file ages | folders
SHA1: 6b27ab3d3566bebbc740450038c536e3fcc9070a
User & Date: rkeene 2013-03-05 03:05:43
Context
2013-03-05
03:08
Removed much of the original source check-in: 67a663abd1 user: rkeene tags: new-driver
03:05
Rewrote mkstemp() implementation check-in: 6b27ab3d35 user: rkeene tags: new-driver
2013-03-04
23:32
Create new branch named "new-driver" check-in: 962bbd984e user: rkeene tags: new-driver
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to mkstemp.c.

31
32
33
34
35
36
37

38
39

40
41

42
43
44

45

46


47
48
49

50
51

52
53
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>

int mkstemp(char *template) {

	int retfd=-1;
	int i, temp_len;


	temp_len=strlen(template);

	if (temp_len<6) return(-1);
	if (strcmp(template+(temp_len-6), "XXXXXX")!=0) return(-1);


	srand(getpid()+temp_len);

	for (i=0; i<6; i++) {


		template[temp_len-i-1]='A'+((rand()+i)%26);
		retfd=open(template, O_EXCL|O_CREAT|O_RDWR, 0600);
		if (retfd>=0) break;

	}
	

	return(retfd);
}







>
|
<
>

|
>
|
<
|
>
|
>
|
>
>
|
|
|
>
|
|
>


31
32
33
34
35
36
37
38
39

40
41
42
43
44

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>

int mkstemp(char *template) {
	unsigned int idx, try;
	int retfd = -1;

	char *str;

	str = strstr(template, "XXXXXX");
	if (str == NULL) {
		return(-1);

	}

	srand(getpid());
	for (try = 0; try < 10; try++) {
		for (idx = 0; idx < 6; idx++) {
			str[idx] = 'A' + ((rand() + idx) % 26);
		}

		retfd = open(template, O_EXCL | O_CREAT | O_RDWR, 0600);
		if (retfd >= 0) {
			break;
		}
	}

	return(retfd);
}