1 #include <time.h> 2 #include <stdint.h> 3 4 /* This assumes that a check for the 5 template size has already been made */ __randname(char * template)6char *__randname(char *template) 7 { 8 int i; 9 struct timespec ts; 10 unsigned long r; 11 12 __clock_gettime(CLOCK_REALTIME, &ts); 13 r = ts.tv_nsec*65537 ^ (uintptr_t)&ts / 16 + (uintptr_t)template; 14 for (i=0; i<6; i++, r>>=5) 15 template[i] = 'A'+(r&15)+(r&16)*2; 16 17 return template; 18 } 19