~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mystrings/int2str.c

  • Committer: Monty Taylor
  • Date: 2008-10-16 06:32:30 UTC
  • mto: (511.1.5 codestyle)
  • mto: This revision was merged to the branch mainline in revision 521.
  • Revision ID: monty@inaugust.com-20081016063230-4brxsra0qsmsg84q
Added -Wunused-macros.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
16
 
#include <my_global.h>
17
16
#include "m_string.h"
18
17
 
19
18
/*
46
45
    optimized int10_to_str() function.
47
46
 
48
47
  RETURN VALUE
49
 
    Pointer to ending NUL character or NullS if radix is bad.
 
48
    Pointer to ending NUL character or (char *)0 if radix is bad.
50
49
*/
51
50
  
52
51
char *
53
 
int2str(register long int val, register char *dst, register int radix, 
 
52
int2str(register int32_t val, register char *dst, register int radix, 
54
53
        int upcase)
55
54
{
56
55
  char buffer[65];
57
56
  register char *p;
58
57
  long int new_val;
59
58
  char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower;
60
 
  ulong uval= (ulong) val;
 
59
  unsigned long uval= (unsigned long) val;
61
60
 
62
61
  if (radix < 0)
63
62
  {
64
63
    if (radix < -36 || radix > -2)
65
 
      return NullS;
 
64
      return (char *)0;
66
65
    if (val < 0)
67
66
    {
68
67
      *dst++ = '-';
69
68
      /* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
70
 
      uval = (ulong)0 - uval;
 
69
      uval = (unsigned long)0 - uval;
71
70
    }
72
71
    radix = -radix;
73
72
  }
74
73
  else if (radix > 36 || radix < 2)
75
 
    return NullS;
 
74
    return (char *)0;
76
75
 
77
76
  /*
78
77
    The slightly contorted code which follows is due to the fact that
88
87
  */
89
88
  p = &buffer[sizeof(buffer)-1];
90
89
  *p = '\0';
91
 
  new_val= uval / (ulong) radix;
92
 
  *--p = dig_vec[(uchar) (uval- (ulong) new_val*(ulong) radix)];
 
90
  new_val= uval / (unsigned long) radix;
 
91
  *--p = dig_vec[(unsigned char) (uval- (unsigned long) new_val*(unsigned long) radix)];
93
92
  val = new_val;
94
93
#ifdef HAVE_LDIV
95
94
  while (val != 0)
103
102
  while (val != 0)
104
103
  {
105
104
    new_val=val/radix;
106
 
    *--p = dig_vec[(uchar) (val-new_val*radix)];
 
105
    *--p = dig_vec[(unsigned char) (val-new_val*radix)];
107
106
    val= new_val;
108
107
  }
109
108
#endif
130
129
    Pointer to ending NUL character.
131
130
*/
132
131
 
133
 
char *int10_to_str(long int val,char *dst,int radix)
 
132
char *int10_to_str(int32_t val,char *dst,int radix)
134
133
{
135
134
  char buffer[65];
136
135
  register char *p;
137
 
  long int new_val;
138
 
  unsigned long int uval = (unsigned long int) val;
 
136
  int32_t new_val;
 
137
  uint32_t uval = (uint32_t) val;
139
138
 
140
139
  if (radix < 0)                                /* -10 */
141
140
  {
142
141
    if (val < 0)
143
142
    {
144
143
      *dst++ = '-';
145
 
      /* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
146
 
      uval = (unsigned long int)0 - uval;
 
144
      /* Avoid integer overflow in (-val) for INT32_MIN (BUG#31799). */
 
145
      uval = (uint32_t)0 - uval;
147
146
    }
148
147
  }
149
148
 
150
149
  p = &buffer[sizeof(buffer)-1];
151
150
  *p = '\0';
152
 
  new_val= (long) (uval / 10);
153
 
  *--p = '0'+ (char) (uval - (unsigned long) new_val * 10);
 
151
  new_val= (int32_t) (uval / 10);
 
152
  *--p = '0'+ (char) (uval - (uint32_t) new_val * 10);
154
153
  val = new_val;
155
154
 
156
155
  while (val != 0)