1/* 2 * Written by J.T. Conklin <jtc@netbsd.org>. 3 * Public domain. 4 */ 5 6#if defined(LIBC_SCCS) && !defined(lint) 7static char *rcsid = "$OpenBSD: l64a.c,v 1.3 1997/08/17 22:58:34 millert Exp $"; 8#endif /* LIBC_SCCS and not lint */ 9 10#include <errno.h> 11#include <stdlib.h> 12 13char * 14#ifdef __LP64__ 15l64a(v) 16 long v; 17#else /* !__LP64__ */ 18l64a(value) 19 long value; 20#endif /* __LP64__ */ 21{ 22 static char buf[8]; 23#ifdef __LP64__ 24 int value = v; 25#endif /* __LP64__ */ 26 char *s = buf; 27 int digit; 28 int i; 29 30#ifndef __LP64__ 31 if (value < 0) { 32 errno = EINVAL; 33 return(NULL); 34 } 35#endif /* __LP64__ */ 36 37 for (i = 0; value != 0 && i < 6; i++) { 38 digit = value & 0x3f; 39 40 if (digit < 2) 41 *s = digit + '.'; 42 else if (digit < 12) 43 *s = digit + '0' - 2; 44 else if (digit < 38) 45 *s = digit + 'A' - 12; 46 else 47 *s = digit + 'a' - 38; 48 49 value >>= 6; 50 s++; 51 } 52 53 *s = '\0'; 54 55 return(buf); 56} 57 58