Explorar el Código

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 hace 13 años
padre
commit
bbdcc403ca
Se han modificado 1 ficheros con 4 adiciones y 3 borrados
  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;
 	}