Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
bbdcc403ca
1 değiştirilmiş dosya ile 4 ekleme ve 3 silme
  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;
 	}