diff options
Diffstat (limited to 'testing/open-vm-tools/ecvt.patch')
-rw-r--r-- | testing/open-vm-tools/ecvt.patch | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/testing/open-vm-tools/ecvt.patch b/testing/open-vm-tools/ecvt.patch deleted file mode 100644 index 53e88e9989..0000000000 --- a/testing/open-vm-tools/ecvt.patch +++ /dev/null @@ -1,205 +0,0 @@ -commit e996e91ca5951c50769dcaa8e074daa973006849 -Author: Natanael Copa <ncopa@alpinelinux.org> -Date: Thu Jul 8 06:39:36 2010 +0000 - - add ecvt() implementation - -diff --git a/lib/string/Makefile.am b/lib/string/Makefile.am -index 1edab81..5f2e7ab 100644 ---- a/lib/string/Makefile.am -+++ b/lib/string/Makefile.am -@@ -23,6 +23,7 @@ libString_la_SOURCES += bsd_vsnprintf.c - libString_la_SOURCES += bsd_vsnwprintf.c - libString_la_SOURCES += convertutf.c - libString_la_SOURCES += str.c -+libString_la_SOURCES += ecvt.c - - AM_CFLAGS = @LIB_STRING_CPPFLAGS@ - -diff --git a/lib/string/bsd_output_shared.c b/lib/string/bsd_output_shared.c -index 3616947..321d6f1 100644 ---- a/lib/string/bsd_output_shared.c -+++ b/lib/string/bsd_output_shared.c -@@ -64,6 +64,9 @@ - - #ifndef NO_FLOATING_POINT - -+extern char* ecvt(double arg, int ndigits, int *decptp, int *signp); -+extern char* fcvt(double arg, int ndigits, int *decptp, int *signp); -+ - /* - *----------------------------------------------------------------------------- - * -diff --git a/lib/string/ecvt.c b/lib/string/ecvt.c -new file mode 100644 -index 0000000..1979c3d ---- /dev/null -+++ b/lib/string/ecvt.c -@@ -0,0 +1,167 @@ -+/* -+ * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. -+ * -+ * @APPLE_LICENSE_HEADER_START@ -+ * -+ * This file contains Original Code and/or Modifications of Original Code -+ * as defined in and that are subject to the Apple Public Source License -+ * Version 2.0 (the 'License'). You may not use this file except in -+ * compliance with the License. Please obtain a copy of the License at -+ * http://www.opensource.apple.com/apsl/ and read it before using this -+ * file. -+ * -+ * The Original Code and all software distributed under the License are -+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER -+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. -+ * Please see the License for the specific language governing rights and -+ * limitations under the License. -+ * -+ * @APPLE_LICENSE_HEADER_END@ -+ */ -+/* -+ * ecvt converts to decimal -+ * the number of digits is specified by ndigit -+ * decptp is set to the position of the decimal point -+ * signp is set to 0 for positive, 1 for negative -+ */ -+ -+ -+static double ecvt_rint(double x); -+ -+static char *cvt(); -+ -+/* big enough to handle %.20f conversion of 1e308 */ -+#define NDIG 350 -+ -+char* -+ecvt(arg, ndigits, decptp, signp) -+double arg; -+int ndigits, *decptp, *signp; -+{ -+ return(cvt(arg, ndigits, decptp, signp, 1)); -+} -+ -+char* -+fcvt(arg, ndigits, decptp, signp) -+double arg; -+int ndigits, *decptp, *signp; -+{ -+ return(cvt(arg, ndigits, decptp, signp, 0)); -+} -+ -+static char* -+cvt(arg, ndigits, decptp, signp, eflag) -+double arg; -+int ndigits, *decptp, *signp; -+int eflag; -+{ -+ register int decpt; -+ double fi, fj; -+ register char *p, *p1; -+ static char buf[NDIG] = { 0 }; -+ double modf(); -+ -+ if (ndigits < 0) -+ ndigits = 0; -+ if (ndigits >= NDIG-1) -+ ndigits = NDIG-2; -+ -+ decpt = 0; -+ *signp = 0; -+ p = &buf[0]; -+ -+ if (arg == 0) { -+ *decptp = 0; -+ while (p < &buf[ndigits]) -+ *p++ = '0'; -+ *p = '\0'; -+ return(buf); -+ } else if (arg < 0) { -+ *signp = 1; -+ arg = -arg; -+ } -+ -+ arg = modf(arg, &fi); -+ p1 = &buf[NDIG]; -+ -+ /* -+ * Do integer part -+ */ -+ if (fi != 0) { -+ while (fi != 0) { -+ fj = modf(fi/10, &fi); -+ /**--p1 = (int)((fj+.03)*10) + '0';*/ -+ *--p1 = (int)ecvt_rint((fj)*10) + '0'; -+ decpt++; -+ } -+ while (p1 < &buf[NDIG]) -+ *p++ = *p1++; -+ } else if (arg > 0) { -+ while ((fj = arg*10) < 1) { -+ arg = fj; -+ decpt--; -+ } -+ } -+ *decptp = decpt; -+ -+ /* -+ * do fraction part -+ * p pts to where fraction should be concatenated -+ * p1 is how far conversion must go to -+ */ -+ p1 = &buf[ndigits]; -+ if (eflag==0) { -+ /* fcvt must provide ndigits after decimal pt */ -+ p1 += decpt; -+ /* if decpt was negative, we might done for fcvt */ -+ if (p1 < &buf[0]) { -+ buf[0] = '\0'; -+ return(buf); -+ } -+ } -+ while (p <= p1 && p < &buf[NDIG]) { -+ arg *= 10; -+ arg = modf(arg, &fj); -+ *p++ = (int)fj + '0'; -+ } -+ /* -+ * if we converted all the way to the end of the -+ * buf, don't mess with rounding since there's nothing -+ * significant out here anyway -+ */ -+ if (p1 >= &buf[NDIG]) { -+ buf[NDIG-1] = '\0'; -+ return(buf); -+ } -+ /* -+ * round by adding 5 to last digit and propagating -+ * carries -+ */ -+ p = p1; -+ *p1 += 5; -+ while (*p1 > '9') { -+ *p1 = '0'; -+ if (p1 > buf) -+ ++*--p1; -+ else { -+ *p1 = '1'; -+ (*decptp)++; -+ if (eflag == 0) { -+ if (p > buf) -+ *p = '0'; -+ p++; -+ } -+ } -+ } -+ *p = '\0'; -+ return(buf); -+} -+ -+static double ecvt_rint(double x) -+{ -+ asm("frndint" : "=t" (x) : "0" (x)); -+ return(x); -+} -+ |