l64a.c revision 1.8
11.1Sjtc/*
21.4Sjtc * Written by J.T. Conklin <jtc@netbsd.org>.
31.4Sjtc * Public domain.
41.1Sjtc */
51.1Sjtc
61.5Schristos#include <sys/cdefs.h>
71.1Sjtc#if defined(LIBC_SCCS) && !defined(lint)
81.8Schristos__RCSID("$NetBSD: l64a.c,v 1.8 1998/11/15 17:13:51 christos Exp $");
91.1Sjtc#endif
101.1Sjtc
111.6Sjtc#include "namespace.h"
121.1Sjtc#include <stdlib.h>
131.6Sjtc
141.6Sjtc#ifdef __weak_alias
151.6Sjtc__weak_alias(l64a,_l64a);
161.6Sjtc#endif
171.1Sjtc
181.1Sjtcchar *
191.1Sjtcl64a (value)
201.1Sjtc	long value;
211.1Sjtc{
221.1Sjtc	static char buf[8];
231.1Sjtc	char *s = buf;
241.1Sjtc	int digit;
251.1Sjtc	int i;
261.8Schristos	unsigned long v = value;
271.1Sjtc
281.1Sjtc	if (!value)
291.7Skleink		goto out;
301.1Sjtc
311.8Schristos	for (i = 0; v != 0 && i < 6; i++) {
321.8Schristos		digit = (int)(v & 0x3f);
331.1Sjtc
341.1Sjtc		if (digit < 2)
351.1Sjtc			*s = digit + '.';
361.1Sjtc		else if (digit < 12)
371.1Sjtc			*s = digit + '0' - 2;
381.1Sjtc		else if (digit < 38)
391.1Sjtc			*s = digit + 'A' - 12;
401.1Sjtc		else
411.1Sjtc			*s = digit + 'a' - 38;
421.8Schristos		v >>= 6;
431.1Sjtc		s++;
441.1Sjtc	}
451.1Sjtc
461.7Skleinkout:
471.1Sjtc	*s = '\0';
481.1Sjtc
491.1Sjtc	return buf;
501.1Sjtc}
51