Browse Source

eliminate mk*temp dependency on snprintf

this helps some tiny programs be even more tiny, and barly increases
code size even if both are used.
Rich Felker 13 years ago
parent
commit
bbdcc403ca
1 changed files with 4 additions and 3 deletions
  1. 4 3
      src/temp/mktemp.c

+ 4 - 3
src/temp/mktemp.c

@@ -11,9 +11,9 @@
 char *__mktemp(char *template)
 {
 	struct timespec ts;
-	size_t l = strlen(template);
+	size_t i, l = strlen(template);
 	int retries = 10000;
-	unsigned long r;
+	unsigned long r, t;
 
 	if (l < 6 || strcmp(template+l-6, "XXXXXX")) {
 		errno = EINVAL;
@@ -23,7 +23,8 @@ char *__mktemp(char *template)
 	clock_gettime(CLOCK_REALTIME, &ts);
 	r = ts.tv_nsec + (uintptr_t)&ts / 16 + (uintptr_t)template;
 	while (retries--) {
-		snprintf(template+l-6, 7, "%06lX", r & 0xffffff);
+		for (t=r, i=1; i<=6; i++, t>>=4)
+			template[l-i] = 'A'+(t&15);
 		if (access(template, F_OK) < 0) return template;
 		r = r * 1103515245 + 12345;
 	}