]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/sh/itos.c
Imported from ../bash-2.03.tar.gz.
[thirdparty/bash.git] / lib / sh / itos.c
CommitLineData
cce855bc
JA
1/* itos.c -- Convert integer to string. */
2
3/* Copyright (C) 1998, Free Software Foundation, Inc.
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
7 Bash is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Bash is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License along
18 with Bash; see the file COPYING. If not, write to the Free Software
19 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21#include <config.h>
22
23#if defined (HAVE_UNISTD_H)
24# include <unistd.h>
25#endif
26
27#include "bashansi.h"
28#include "shell.h"
29
30/* Number of characters that can appear in a string representation
31 of an integer. 32 is larger than the string rep of 2^^31 - 1. */
32#define MAX_INT_LEN 32
33
b72432fd
JA
34/* Integer to string conversion. The caller passes the buffer and
35 the size. This should check for buffer underflow, but currently
36 does not. */
cce855bc 37char *
b72432fd 38inttostr (i, buf, len)
cce855bc 39 int i;
b72432fd
JA
40 char *buf;
41 int len;
cce855bc 42{
b72432fd 43 char *p;
cce855bc
JA
44 int negative = 0;
45 unsigned int ui;
46
47 if (i < 0)
48 {
49 negative++;
50 i = -i;
51 }
52
53 ui = (unsigned int) i;
54
b72432fd 55 p = buf + len - 2;
cce855bc
JA
56 p[1] = '\0';
57
58 do
59 *p-- = (ui % 10) + '0';
60 while (ui /= 10);
61
62 if (negative)
63 *p-- = '-';
64
b72432fd
JA
65 return (p + 1);
66}
67
68/* Integer to string conversion. This conses the string; the
69 caller should free it. */
70char *
71itos (i)
72 int i;
73{
74 char *p, lbuf[MAX_INT_LEN];
75
76 p = inttostr (i, lbuf, sizeof(lbuf));
77 return (savestring (p));
cce855bc 78}