summaryrefslogtreecommitdiff
path: root/client/sql_string.cc
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-08-23 15:02:27 +0300
committerunknown <monty@donna.mysql.com>2000-08-23 15:02:27 +0300
commit844c92364e04fb17371c4a71dee52f179f8ad253 (patch)
treeb3128ac4cfef425d026d95cd4fd1a55830ef7658 /client/sql_string.cc
parent11f402b3108b0c6ef5744bd13164607dd9fba3c0 (diff)
downloadmariadb-git-844c92364e04fb17371c4a71dee52f179f8ad253.tar.gz
Fixes for Ia64
Docs/manual.texi: Updated thread safe client chapter + new links client/sql_string.cc: Update for Ia64 client/sql_string.h: Update for Ia64 extra/replace.c: Update for Ia64 include/config-win.h: Update for PHP include/global.h: Update for PHP isam/create.c: Update for Ia64 isam/delete.c: Update for Ia64 isam/write.c: Update for Ia64 libmysql/Makefile.shared: new file libmysql/libmysql.c: Update for Ia64 libmysql/net.c: Update for Ia64 myisam/mi_delete.c: Update for Ia64 myisam/mi_search.c: Update for Ia64 sql/field.cc: Update for Ia64 sql/field.h: Update for Ia64 sql/item.h: Update for Ia64 sql/item_strfunc.cc: Update for Ia64 sql/lock.cc: Update for Ia64 sql/log.cc: Update for Ia64 sql/log_event.h: Update for Ia64 sql/net_serv.cc: Update for Ia64 sql/sql_list.h: Update for Ia64 sql/sql_parse.cc: Update for Ia64 sql/sql_rename.cc: Update for Ia64 sql/sql_select.cc: Update for Ia64 sql/sql_show.cc: Update for Ia64 sql/sql_string.cc: Update for Ia64 sql/sql_string.h: Update for Ia64 sql/time.cc: Update for Ia64
Diffstat (limited to 'client/sql_string.cc')
-rw-r--r--client/sql_string.cc33
1 files changed, 24 insertions, 9 deletions
diff --git a/client/sql_string.cc b/client/sql_string.cc
index 5c3e1068649..67ce0f6ff54 100644
--- a/client/sql_string.cc
+++ b/client/sql_string.cc
@@ -1,6 +1,6 @@
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
- This library is free software; you can redistribute it and/or
+ This program file is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
@@ -127,7 +127,7 @@ bool String::set(double num,uint decimals)
if (decimals >= NOT_FIXED_DEC)
{
sprintf(buff,"%.14g",num); // Enough for a DATETIME
- return copy(buff,strlen(buff));
+ return copy(buff, (uint32) strlen(buff));
}
#ifdef HAVE_FCONVERT
int decpt,sign;
@@ -142,7 +142,7 @@ bool String::set(double num,uint decimals)
buff[0]='-';
pos=buff;
}
- return copy(pos,strlen(pos));
+ return copy(pos,(uint32) strlen(pos));
}
if (alloc((uint32) ((uint32) decpt+3+decimals)))
return TRUE;
@@ -186,12 +186,13 @@ end:
str_length=(uint32) (to-Ptr);
return FALSE;
#else
-#ifdef HAVE_SNPRINTF_
- snprintf(buff,sizeof(buff), "%.*f",(int) decimals,num);
+#ifdef HAVE_SNPRINTF
+ buff[sizeof(buff)-1]=0; // Safety
+ snprintf(buff,sizeof(buff)-1, "%.*f",(int) decimals,num);
#else
sprintf(buff,"%.*f",(int) decimals,num);
#endif
- return copy(buff,strlen(buff));
+ return copy(buff,(uint32) strlen(buff));
#endif
}
@@ -260,7 +261,7 @@ bool String::append(const String &s)
bool String::append(const char *s,uint32 arg_length)
{
if (!arg_length) // Default argument
- arg_length=strlen(s);
+ arg_length= (uint32) strlen(s);
if (realloc(str_length+arg_length))
return TRUE;
memcpy(Ptr+str_length,s,arg_length);
@@ -268,6 +269,19 @@ bool String::append(const char *s,uint32 arg_length)
return FALSE;
}
+bool String::append(FILE* file, uint32 arg_length, myf my_flags)
+{
+ if (realloc(str_length+arg_length))
+ return TRUE;
+ if (my_fread(file, (byte*) Ptr + str_length, arg_length, my_flags))
+ {
+ shrink(str_length);
+ return TRUE;
+ }
+ str_length+=arg_length;
+ return FALSE;
+}
+
uint32 String::numchars()
{
#ifdef USE_MB
@@ -305,7 +319,7 @@ int String::charpos(int i,uint32 offset)
if ( INT_MAX32-i <= (int) (mbstr-Ptr-offset))
return INT_MAX32;
else
- return (mbstr-Ptr-offset)+i;
+ return (int) ((mbstr-Ptr-offset)+i);
}
else
#endif
@@ -317,7 +331,7 @@ int String::strstr(const String &s,uint32 offset)
if (s.length()+offset <= str_length)
{
if (!s.length())
- return offset; // Empty string is always found
+ return ((int) offset); // Empty string is always found
register const char *str = Ptr+offset;
register const char *search=s.ptr();
@@ -587,6 +601,7 @@ static int wild_case_compare(const char *str,const char *str_end,
#ifdef USE_MB
const char* mb = wildstr;
int mblen;
+ LINT_INIT(mblen);
if (use_mb_flag)
mblen = my_ismbchar(default_charset_info, wildstr, wildend);
#endif