diff options
author | sb <sb@openoffice.org> | 2009-09-16 17:08:52 +0200 |
---|---|---|
committer | sb <sb@openoffice.org> | 2009-09-16 17:08:52 +0200 |
commit | a3317af7e13b45f8a2f9f42e23b9a4e6c850584f (patch) | |
tree | 73aac61918e001088fe49d660b9e05184932c8c4 /sal | |
parent | e115f1693026a78363884c95db3673894a4b937d (diff) | |
parent | 8798a1ca9f9d3d95e2f52024db82c8573b9535bc (diff) |
merged in DEV300_m59
Diffstat (limited to 'sal')
-rw-r--r-- | sal/inc/rtl/math.h | 36 | ||||
-rw-r--r-- | sal/inc/rtl/math.hxx | 29 | ||||
-rw-r--r-- | sal/inc/sal/types.h | 9 | ||||
-rw-r--r-- | sal/osl/os2/debug.c | 47 | ||||
-rw-r--r-- | sal/osl/os2/except.c | 44 | ||||
-rw-r--r-- | sal/osl/os2/helpers/debug.h | 42 | ||||
-rw-r--r-- | sal/osl/os2/helpers/dosh.h | 927 | ||||
-rw-r--r-- | sal/osl/os2/helpers/except.h | 42 | ||||
-rw-r--r-- | sal/osl/os2/helpers/setup.h | 32 | ||||
-rw-r--r-- | sal/osl/os2/module.c | 2 | ||||
-rw-r--r-- | sal/osl/os2/process.c | 10 | ||||
-rw-r--r-- | sal/osl/w32/diagnose.c | 5 | ||||
-rw-r--r-- | sal/rtl/source/math.cxx | 250 | ||||
-rwxr-xr-x | sal/util/sal.map | 4 |
14 files changed, 537 insertions, 942 deletions
diff --git a/sal/inc/rtl/math.h b/sal/inc/rtl/math.h index 704992109..6f24b5735 100644 --- a/sal/inc/rtl/math.h +++ b/sal/inc/rtl/math.h @@ -434,6 +434,42 @@ double SAL_CALL rtl_math_log1p(double fValue) SAL_THROW_EXTERN_C(); */ double SAL_CALL rtl_math_atanh(double fValue) SAL_THROW_EXTERN_C(); +/** Returns values of the Errorfunction erf. + + erf is part of the C99 standard, but not provided by some compilers. + + @param fValue + The value x in the term erf(x). + */ +double SAL_CALL rtl_math_erf(double fValue) SAL_THROW_EXTERN_C(); + +/** Returns values of the complement Errorfunction erfc. + + erfc is part of the C99 standard, but not provided by some compilers. + + @param fValue + The value x in the term erfc(x). + */ +double SAL_CALL rtl_math_erfc(double fValue) SAL_THROW_EXTERN_C(); + +/** Returns values of the inverse hyperbolic sine. + + asinh is part of the C99 standard, but not provided by some compilers. + + @param fValue + The value x in the term asinh(x). + */ +double SAL_CALL rtl_math_asinh(double fValue) SAL_THROW_EXTERN_C(); + +/** Returns values of the inverse hyperbolic cosine. + + acosh is part of the C99 standard, but not provided by some compilers. + + @param fValue + The value x in the term acosh(x). + */ +double SAL_CALL rtl_math_acosh(double fValue) SAL_THROW_EXTERN_C(); + #if defined __cplusplus } #endif /* __cplusplus */ diff --git a/sal/inc/rtl/math.hxx b/sal/inc/rtl/math.hxx index 4223415cd..2c180170d 100644 --- a/sal/inc/rtl/math.hxx +++ b/sal/inc/rtl/math.hxx @@ -221,6 +221,35 @@ inline double atanh(double fValue) return rtl_math_atanh(fValue); } +/** A wrapper around rtl_math_erf. + */ +inline double erf(double fValue) +{ + return rtl_math_erf(fValue); +} + +/** A wrapper around rtl_math_erfc. + */ +inline double erfc(double fValue) +{ + return rtl_math_erfc(fValue); +} + +/** A wrapper around rtl_math_asinh. + */ +inline double asinh(double fValue) +{ + return rtl_math_asinh(fValue); +} + +/** A wrapper around rtl_math_acosh. + */ +inline double acosh(double fValue) +{ + return rtl_math_acosh(fValue); +} + + /** Test equality of two values with an accuracy of the magnitude of the given values scaled by 2^-48 (4 bits roundoff stripped). diff --git a/sal/inc/sal/types.h b/sal/inc/sal/types.h index 89a079409..db53e7e08 100644 --- a/sal/inc/sal/types.h +++ b/sal/inc/sal/types.h @@ -124,10 +124,17 @@ typedef unsigned char sal_uInt8; #define SAL_CONST_INT64(x) x##ll #define SAL_CONST_UINT64(x) x##ull + #ifdef __MINGW32__ + #define SAL_PRIdINT64 "I64d" + #define SAL_PRIuUINT64 "I64u" + #define SAL_PRIxUINT64 "I64x" + #define SAL_PRIXUINT64 "I64X" + #else #define SAL_PRIdINT64 "lld" #define SAL_PRIuUINT64 "llu" #define SAL_PRIxUINT64 "llx" #define SAL_PRIXUINT64 "llX" + #endif #else #error "Could not find 64-bit type, add support for your architecture" #endif @@ -170,7 +177,7 @@ typedef void * sal_Handle; /* printf-style conversion specification length modifiers for size_t and ptrdiff_t (most platforms support C99, MSC has its own extension) */ -#if defined _MSC_VER +#if defined(_MSC_VER) || defined(__MINGW32__) #define SAL_PRI_SIZET "I" #define SAL_PRI_PTRDIFFT "I" #else diff --git a/sal/osl/os2/debug.c b/sal/osl/os2/debug.c index 315fed4ba..53a9d23a3 100644 --- a/sal/osl/os2/debug.c +++ b/sal/osl/os2/debug.c @@ -1,3 +1,33 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + /* *@@sourcefile debug.c: * this file contains debugging functions for the @@ -27,20 +57,15 @@ */ /* - * This file Copyright (C) 1992-99 Ulrich M”ller, + * This file Copyright (C) 1992-99 Ulrich M�ller, * Kim Rasmussen, * Marc Fiammante, * John Currier, * Anthony Cruise. * This file is part of the "XWorkplace helpers" source package. - * This is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, in version 2 as it comes in the - * "COPYING" file of the XWorkplace main distribution. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * */ //#define DEBUG_SYMDUMP // enable to dump sym file to log @@ -1484,7 +1509,7 @@ void dbgPrintVariables(FILE *LogFile, // in: text log file to write to (PVOID)stackofs, func_name); fprintf(LogFile, " Offset Name Type Value \n"); - fprintf(LogFile, " ÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\n"); + fprintf(LogFile, " ������ �������������������� ��������������������������������� �����������������\n"); } // If it's one of the simple types @@ -1880,7 +1905,7 @@ VOID dbgPrintStack(FILE *LogFile, // in: text log file to write to fprintf(LogFile, "\n\nCall stack:\n"); fprintf(LogFile, " Source Line Nearest\n"); fprintf(LogFile, " EBP Address Module Obj# File Numbr Public Symbol\n"); - fprintf(LogFile, " ÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄ- ÄÄÄÄÄÄÄÄ ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄ-\n"); + fprintf(LogFile, " �������� ��������- �������� ���� ������������ ����� ������������-\n"); do { diff --git a/sal/osl/os2/except.c b/sal/osl/os2/except.c index e1ae9fb7b..3a3436832 100644 --- a/sal/osl/os2/except.c +++ b/sal/osl/os2/except.c @@ -1,3 +1,32 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ /* *@@sourcefile except.c: @@ -178,7 +207,7 @@ * exception handling DLL, available at Hobbes). * * If not explicitly stated otherwise, the code has been written - * by me, Ulrich M”ller. + * by me, Ulrich M�ller. * * Note: Version numbering in this file relates to XWorkplace version * numbering. @@ -187,7 +216,7 @@ */ /* - * This file Copyright (C) 1992-99 Ulrich M”ller, + * This file Copyright (C) 1992-99 Ulrich M�ller, * Monte Copeland, * Roman Stangl, * Kim Rasmussen, @@ -195,14 +224,9 @@ * John Currier, * Anthony Cruise. * This file is part of the "XWorkplace helpers" source package. - * This is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, in version 2 as it comes in the - * "COPYING" file of the XWorkplace main distribution. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * */ #define OS2EMX_PLAIN_CHAR diff --git a/sal/osl/os2/helpers/debug.h b/sal/osl/os2/helpers/debug.h index be35be3d3..a2370c5a9 100644 --- a/sal/osl/os2/helpers/debug.h +++ b/sal/osl/os2/helpers/debug.h @@ -1,3 +1,32 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ /* *@@sourcefile debug.h: @@ -21,19 +50,14 @@ * Anthony Cruise (EXCEPT3.ZIP package for a generic * exception handling DLL, available at Hobbes). * - * This file Copyright (C) 1992-99 Ulrich M”ller, + * This file Copyright (C) 1992-99 Ulrich M�ller, * Kim Rasmussen, * Marc Fiammante, * John Currier, * Anthony Cruise. - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, in version 2 as it comes in the COPYING - * file of the XFolder main distribution. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * */ #ifndef DEBUG_HEADER_INCLUDED diff --git a/sal/osl/os2/helpers/dosh.h b/sal/osl/os2/helpers/dosh.h index d2e936a57..9c9cd800a 100644 --- a/sal/osl/os2/helpers/dosh.h +++ b/sal/osl/os2/helpers/dosh.h @@ -1,28 +1,39 @@ - -/* - *@@sourcefile dosh.h: - * header file for dosh.c. See remarks there. +/************************************************************************* * - * Note: Version numbering in this file relates to XWorkplace version - * numbering. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. * - *@@include #define INCL_DOSPROCESS - *@@include #define INCL_DOSDEVIOCTL // for doshQueryDiskParams only - *@@include #include <os2.h> - *@@include #include "helpers\dosh.h" - */ + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ -/* This file Copyright (C) 1997-2001 Ulrich M”ller, +/* This file Copyright (C) 1997-2006 Ulrich M�ller, * Dmitry A. Steklenev. * This file is part of the "XWorkplace helpers" source package. - * This is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, in version 2 as it comes in the - * "COPYING" file of the XWorkplace main distribution. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * */ #if __cplusplus @@ -32,886 +43,10 @@ extern "C" { #ifndef DOSH_HEADER_INCLUDED #define DOSH_HEADER_INCLUDED - /* ****************************************************************** - * - * Wrappers - * - ********************************************************************/ - - // if DOSH_STANDARDWRAPPERS is #define'd before including dosh.h, - // all the following Dos* API calls are redirected to the dosh* - // counterparts - - #ifdef DOSH_STANDARDWRAPPERS - - #ifdef INCL_DOSPROCESS - - APIRET XWPENTRY doshSleep(ULONG msec); - #define DosSleep(a) doshSleep((a)) - - #endif - - #ifdef INCL_DOSSEMAPHORES - - APIRET XWPENTRY doshCreateMutexSem(PSZ pszName, - PHMTX phmtx, - ULONG flAttr, - BOOL32 fState); - #define DosCreateMutexSem(a, b, c, d) doshCreateMutexSem((a), (b), (c), (d)) - - APIRET XWPENTRY doshRequestMutexSem(HMTX hmtx, ULONG ulTimeout); - #define DosRequestMutexSem(h, t) doshRequestMutexSem((h), (t)) - - APIRET XWPENTRY doshReleaseMutexSem(HMTX hmtx); - #define DosReleaseMutexSem(h) doshReleaseMutexSem((h)) - - #endif - - #ifdef INCL_DOSEXCEPTIONS - - APIRET XWPENTRY doshSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec); - #define DosSetExceptionHandler(a) doshSetExceptionHandler((a)) - - APIRET XWPENTRY doshUnsetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec); - #define DosUnsetExceptionHandler(a) doshUnsetExceptionHandler((a)) - - #endif - - #endif - - /* ****************************************************************** - * - * Miscellaneous - * - ********************************************************************/ - - CHAR doshGetChar(VOID); - - BOOL doshQueryShiftState(VOID); - - ULONG doshIsWarp4(VOID); - - PSZ doshQuerySysErrorMsg(APIRET arc); - - ULONG doshQuerySysUptime(VOID); - - /* ****************************************************************** - * - * Memory helpers - * - ********************************************************************/ - - PVOID doshMalloc(ULONG cb, - APIRET *parc); - - APIRET doshAllocArray(ULONG c, - ULONG cbArrayItem, - PBYTE *ppv, - PULONG pcbAllocated); - - PVOID doshAllocSharedMem(ULONG ulSize, - const char* pcszName); - - PVOID doshRequestSharedMem(PCSZ pcszName); - - /* ****************************************************************** - * - * Drive helpers - * - ********************************************************************/ - - APIRET doshIsFixedDisk(ULONG ulLogicalDrive, - PBOOL pfFixed); - - #ifdef INCL_DOSDEVIOCTL - - // #pragma pack(1) - - /* - * DRIVEPARAMS: - * structure used for doshQueryDiskParams. - * removed this, we can directly use BIOSPARAMETERBLOCK - * V0.9.13 (2001-06-14) [umoeller] - */ - - /* typedef struct _DRIVEPARAMS - { - BIOSPARAMETERBLOCK bpb; - // BIOS parameter block. This is the first sector - // (at byte 0) in each partition. This is defined - // in the OS2 headers as follows: - - typedef struct _BIOSPARAMETERBLOCK { - 0 USHORT usBytesPerSector; - // Number of bytes per sector. - 2 BYTE bSectorsPerCluster; - // Number of sectors per cluster. - 3 USHORT usReservedSectors; - // Number of reserved sectors. - 5 BYTE cFATs; - // Number of FATs. - 6 USHORT cRootEntries; - // Number of root directory entries. - 8 USHORT cSectors; - // Number of sectors. - 10 BYTE bMedia; - // Media descriptor. - 11 USHORT usSectorsPerFAT; - // Number of secctors per FAT. - 13 USHORT usSectorsPerTrack; - // Number of sectors per track. - 15 USHORT cHeads; - // Number of heads. - 17 ULONG cHiddenSectors; - // Number of hidden sectors. - 21 ULONG cLargeSectors; - // Number of large sectors. - 25 BYTE abReserved[6]; - // Reserved. - 31 USHORT cCylinders; - // Number of cylinders defined for the physical - // device. - 33 BYTE bDeviceType; - // Physical layout of the specified device. - 34 USHORT fsDeviceAttr; - // A bit field that returns flag information - // about the specified drive. - } BIOSPARAMETERBLOCK; - - // removed the following fields... these are already - // in the extended BPB structure, as defined in the - // Toolkit's BIOSPARAMETERBLOCK struct. Checked this, - // the definition is the same for the Toolkit 3 and 4.5. - - USHORT usCylinders; - // no. of cylinders - UCHAR ucDeviceType; - // device type; according to the IBM Control - // Program Reference (see DSK_GETDEVICEPARAMS), - // this value can be: - // -- 0: 48 TPI low-density diskette drive - // -- 1: 96 TPI high-density diskette drive - // -- 2: 3.5-inch 720KB diskette drive - // -- 3: 8-Inch single-density diskette drive - // -- 4: 8-Inch double-density diskette drive - // -- 5: Fixed disk - // -- 6: Tape drive - // -- 7: Other (includes 1.44MB 3.5-inch diskette drive - // and CD-ROMs) - // -- 8: R/W optical disk - // -- 9: 3.5-inch 4.0MB diskette drive (2.88MB formatted) - USHORT usDeviceAttrs; - // DEVATTR_* flags - } DRIVEPARAMS, *PDRIVEPARAMS; - #pragma pack() */ - - APIRET doshQueryDiskParams(ULONG ulLogicalDrive, - PBIOSPARAMETERBLOCK pdp); - - BYTE doshQueryDriveType(ULONG ulLogicalDrive, - PBIOSPARAMETERBLOCK pdp, - BOOL fFixed); - - APIRET XWPENTRY doshHasAudioCD(ULONG ulLogicalDrive, - HFILE hfDrive, - BOOL fMixedModeCD, - PBOOL pfAudio); - - #endif - - VOID XWPENTRY doshEnumDrives(PSZ pszBuffer, - PCSZ pcszFileSystem, - BOOL fSkipRemoveables); - typedef VOID XWPENTRY DOSHENUMDRIVES(PSZ pszBuffer, - PCSZ pcszFileSystem, - BOOL fSkipRemoveables); - typedef DOSHENUMDRIVES *PDOSHENUMDRIVES; - CHAR doshQueryBootDrive(VOID); - #define ERROR_AUDIO_CD_ROM 10000 - - #define DRVFL_MIXEDMODECD 0x0001 - #define DRVFL_TOUCHFLOPPIES 0x0002 - #define DRVFL_CHECKEAS 0x0004 - #define DRVFL_CHECKLONGNAMES 0x0008 - - APIRET doshAssertDrive(ULONG ulLogicalDrive, - ULONG fl); - - #ifdef INCL_DOSDEVIOCTL - - /* - *@@ XDISKINFO: - * - *@@added V0.9.16 (2002-01-13) [umoeller] - */ - - typedef struct _XDISKINFO - { - CHAR cDriveLetter; // drive letter - CHAR cLogicalDrive; // logical drive no. - - BOOL fPresent; // if FALSE, drive does not exist - - // the following are only valid if fPresent == TRUE - - BIOSPARAMETERBLOCK bpb; - // 0x00 USHORT usBytesPerSector; - // 0x02 BYTE bSectorsPerCluster; - // 0x03 USHORT usReservedSectors; - // 0x05 BYTE cFATs; - // 0x06 USHORT cRootEntries; - // 0x08 USHORT cSectors; - // 0x0a BYTE bMedia; - // 0x0b USHORT usSectorsPerFAT; - // 0x0d USHORT usSectorsPerTrack; - // 0x0f USHORT cHeads; - // 0x11 ULONG cHiddenSectors; - // 0x15 ULONG cLargeSectors; - // 0x19 BYTE abReserved[6]; - // 0x1a USHORT cCylinders; - // 0x1c BYTE bDeviceType; - #ifndef DEVTYPE_48TPI - #define DEVTYPE_48TPI 0x0000 - #define DEVTYPE_96TPI 0x0001 - #define DEVTYPE_35 0x0002 - #define DEVTYPE_8SD 0x0003 - #define DEVTYPE_8DD 0x0004 - #define DEVTYPE_FIXED 0x0005 - #define DEVTYPE_TAPE 0x0006 - #endif - #define DEVTYPE_OTHER 0x0007 - // includes 1.44 3.5" floppy - #define DEVTYPE_RWOPTICAL 0x0008 - #define DEVTYPE_35_288MB 0x0009 - // 0x1d USHORT fsDeviceAttr; - #define DEVATTR_REMOVEABLE 0x0001 - // drive is removeable - #define DEVATTR_CHANGELINE 0x0002 - // device can determine whether media has - // been removed since last I/O operation - #define DEVATTR_GREATER16MB 0x0004 - // physical device driver supports physical - // addresses > 16 MB - #define DEVATTR_PARTITIONALREMOVEABLE 0x0008 - // undocumented flag; set for ZIP drives - - BYTE bType; - // do not change these codes, XWorkplace relies - // on them too to parse WPDisk data - #define DRVTYPE_HARDDISK 0 - #define DRVTYPE_FLOPPY 1 - #define DRVTYPE_TAPE 2 - #define DRVTYPE_VDISK 3 - #define DRVTYPE_CDROM 4 - #define DRVTYPE_LAN 5 - #define DRVTYPE_PARTITIONABLEREMOVEABLE 6 - #define DRVTYPE_UNKNOWN 255 - - ULONG flDevice; - // any combination of the following: - #define DFL_REMOTE 0x0001 - // drive is remote (not local) - #define DFL_FIXED 0x0002 - // drive is fixed; otherwise it is removeable! - // always set for harddisks and zip drives - #define DFL_PARTITIONABLEREMOVEABLE 0x0004 - // set for zip drives; - // in that case, DFL_FIXED is set also - #define DFL_BOOTDRIVE 0x0008 - // drive was booted from - - // media flags: - - #define DFL_MEDIA_PRESENT 0x1000 - // media is present in drive; - // -- always set for harddisks, - // unless the file system is not - // understood - // -- always set for remove drives - // -- always set for A: and B: - // -- set for CD-ROMS only if data - // CD-ROM is inserted - #define DFL_AUDIO_CD 0x2000 - // set for CD-ROMs only, if an audio CD - // is currently inserted; in that case, - // DFL_MEDIA_PRESENT is _not_ set - #define DFL_SUPPORTS_EAS 0x4000 - // drive supports extended attributes - // (assumption based on DosFSCtl, - // might not be correct for remote drives; - // reports correctly for FAT32 though) - #define DFL_SUPPORTS_LONGNAMES 0x8000 - // drive supports long names; this does not - // necessarily mean that we support all IFS - // characters also - - // the following are only valid if DFL_MEDIA_PRESENT is set; - // they are always set for drives A: and B: - - CHAR szFileSystem[30]; - // e.g. "FAT" or "HPFS" or "JFS" or "CDFS" - - LONG lFileSystem; - // do not change these codes, XWorkplace relies - // on them too to parse WPDisk data - #define FSYS_UNKNOWN 0 - // drive not formatted, or unknown file system - #define FSYS_FAT 1 - #define FSYS_HPFS_JFS 2 - #define FSYS_CDFS 3 - #define FSYS_CDWFS 6 // not used by WPS! - // added V0.9.19 (2002-04-25) [umoeller] - #define FSYS_TVFS 7 // not used by WPS! - #define FSYS_FAT32_EXT2 8 // not used by WPS! - #define FSYS_RAMFS 9 // not used by WPS! - #define FSYS_REMOTE 10 - // NOTE: if this has a negative value, this is - // the APIRET code from DosQueryFSAttach - - // error codes for various operations - APIRET arcIsFixedDisk, - arcQueryDiskParams, - arcQueryMedia, - arcOpenLongnames; - - } XDISKINFO, *PXDISKINFO; - - APIRET doshGetDriveInfo(ULONG ulLogicalDrive, - ULONG fl, - PXDISKINFO pdi); - - #endif - - APIRET doshSetLogicalMap(ULONG ulLogicalDrive); - - APIRET XWPENTRY doshQueryDiskSize(ULONG ulLogicalDrive, double *pdSize); - typedef APIRET XWPENTRY DOSHQUERYDISKSIZE(ULONG ulLogicalDrive, double *pdSize); - typedef DOSHQUERYDISKSIZE *PDOSHQUERYDISKSIZE; - - APIRET XWPENTRY doshQueryDiskFree(ULONG ulLogicalDrive, double *pdFree); - typedef APIRET XWPENTRY DOSHQUERYDISKFREE(ULONG ulLogicalDrive, double *pdFree); - typedef DOSHQUERYDISKFREE *PDOSHQUERYDISKFREE; - - APIRET XWPENTRY doshQueryDiskFSType(ULONG ulLogicalDrive, PSZ pszBuf, ULONG cbBuf); - typedef APIRET XWPENTRY DOSHQUERYDISKFSTYPE(ULONG ulLogicalDrive, PSZ pszBuf, ULONG cbBuf); - typedef DOSHQUERYDISKFSTYPE *PDOSHQUERYDISKFSTYPE; - - APIRET doshQueryDiskLabel(ULONG ulLogicalDrive, - PSZ pszVolumeLabel); - - APIRET doshSetDiskLabel(ULONG ulLogicalDrive, - PSZ pszNewLabel); - - /* ****************************************************************** - * - * Module handling helpers - * - ********************************************************************/ - - APIRET doshQueryProcAddr(PCSZ pcszModuleName, - ULONG ulOrdinal, - PFN *ppfn); - - /* - *@@ RESOLVEFUNCTION: - * one of these structures each define - * a single function import to doshResolveImports. - * - *@@added V0.9.3 (2000-04-25) [umoeller] - */ - - typedef struct _RESOLVEFUNCTION - { - const char *pcszFunctionName; - PFN *ppFuncAddress; - } RESOLVEFUNCTION, *PRESOLVEFUNCTION; - - typedef const struct _RESOLVEFUNCTION *PCRESOLVEFUNCTION; - - APIRET doshResolveImports(PCSZ pcszModuleName, - HMODULE *phmod, - PCRESOLVEFUNCTION paResolves, - ULONG cResolves); - - /* ****************************************************************** - * - * Performance Counters (CPU Load) - * - ********************************************************************/ - - #define CMD_PERF_INFO 0x41 - #define CMD_KI_ENABLE 0x60 - #define CMD_KI_DISABLE 0x61 - #ifndef CMD_KI_RDCNT - #define CMD_KI_RDCNT 0x63 - typedef APIRET APIENTRY FNDOSPERFSYSCALL(ULONG ulCommand, - ULONG ulParm1, - ULONG ulParm2, - ULONG ulParm3); - typedef FNDOSPERFSYSCALL *PFNDOSPERFSYSCALL; - #endif - - typedef struct _CPUUTIL - { - ULONG ulTimeLow; // low 32 bits of time stamp - ULONG ulTimeHigh; // high 32 bits of time stamp - ULONG ulIdleLow; // low 32 bits of idle time - ULONG ulIdleHigh; // high 32 bits of idle time - ULONG ulBusyLow; // low 32 bits of busy time - ULONG ulBusyHigh; // high 32 bits of busy time - ULONG ulIntrLow; // low 32 bits of interrupt time - ULONG ulIntrHigh; // high 32 bits of interrupt time - } CPUUTIL, *PCPUUTIL; - - // macro to convert 8-byte (low, high) time value to double - #define LL2F(high, low) (4294967296.0*(high)+(low)) - - /* - *@@ DOSHPERFSYS: - * structure used with doshPerfOpen. - * - *@@added V0.9.7 (2000-12-02) [umoeller] - *@@changed V0.9.9 (2001-03-14) [umoeller]: added interrupt load - */ - - typedef struct _DOSHPERFSYS - { - // output: no. of processors on the system - ULONG cProcessors; - // output: one CPU load for each CPU - PLONG palLoads; - - // output: one CPU interrupt load for each CPU - PLONG palIntrs; - - // each of the following ptrs points to an array of cProcessors items - PCPUUTIL paCPUUtils; // CPUUTIL structures - double *padBusyPrev; // previous "busy" calculations - double *padTimePrev; // previous "time" calculations - double *padIntrPrev; // previous "intr" calculations - - // private stuff - HMODULE hmod; - BOOL fInitialized; - PFNDOSPERFSYSCALL pDosPerfSysCall; - } DOSHPERFSYS, *PDOSHPERFSYS; - - APIRET doshPerfOpen(PDOSHPERFSYS *ppPerfSys); - - APIRET doshPerfGet(PDOSHPERFSYS pPerfSys); - - APIRET doshPerfClose(PDOSHPERFSYS *ppPerfSys); - - /* ****************************************************************** - * - * File name parsing - * - ********************************************************************/ - - APIRET doshGetDriveSpec(PCSZ pcszFullFile, - PSZ pszDrive, - PULONG pulDriveLen, - PBOOL pfIsUNC); - - PSZ doshGetExtension(PCSZ pcszFilename); - - /* ****************************************************************** - * - * File helpers - * - ********************************************************************/ - - BOOL doshIsFileOnFAT(const char* pcszFileName); - - APIRET doshIsValidFileName(const char* pcszFile, - BOOL fFullyQualified); - - BOOL doshMakeRealName(PSZ pszTarget, PSZ pszSource, CHAR cReplace, BOOL fIsFAT); - - APIRET doshQueryFileSize(HFILE hFile, - PULONG pulSize); - - APIRET doshQueryPathSize(PCSZ pcszFile, - PULONG pulSize); - - APIRET doshQueryPathAttr(const char* pcszFile, - PULONG pulAttr); - - APIRET doshSetPathAttr(const char* pcszFile, - ULONG ulAttr); - - /* ****************************************************************** - * - * XFILEs - * - ********************************************************************/ - - /* - *@@ XFILE: - * - *@@added V0.9.16 (2001-10-19) [umoeller] - */ - - typedef struct _XFILE - { - HFILE hf; - - PSZ pszFilename; // as given to doshOpen - ULONG flOpenMode; // as given to doshOpen - - ULONG cbInitial, // intial file size on open (can be 0 if new) - cbCurrent; // current file size (raised with each write) - - PBYTE pbCache; // if != NULL, cached data from doshReadAt - ULONG cbCache, // size of data in cbCache - ulReadFrom; // file offset where pbCache was read from - } XFILE, *PXFILE; - - #define XOPEN_READ_EXISTING 0x0001 - #define XOPEN_READWRITE_EXISTING 0x0002 - #define XOPEN_READWRITE_APPEND 0x0003 - #define XOPEN_READWRITE_NEW 0x0004 - #define XOPEN_ACCESS_MASK 0xffff - - #define XOPEN_BINARY 0x10000000 - - APIRET doshOpen(PCSZ pcszFilename, - ULONG flOpenMode, - PULONG pcbFile, - PXFILE *ppFile); - - #define DRFL_NOCACHE 0x0001 - #define DRFL_FAILIFLESS 0x0002 - - APIRET doshReadAt(PXFILE pFile, - ULONG ulOffset, - PULONG pcb, - PBYTE pbData, - ULONG fl); - - APIRET doshWrite(PXFILE pFile, - ULONG cb, - PCSZ pbData); - - APIRET doshWriteAt(PXFILE pFile, - ULONG ulOffset, - ULONG cb, - PCSZ pbData); - - APIRET doshWriteLogEntry(PXFILE pFile, - const char* pcszFormat, - ...); - - APIRET doshClose(PXFILE *ppFile); - - APIRET doshReadText(PXFILE pFile, - PSZ* ppszContent, - PULONG pcbRead); - - APIRET doshLoadTextFile(PCSZ pcszFile, - PSZ* ppszContent, - PULONG pcbRead); - - PSZ doshCreateBackupFileName(const char* pszExisting); - - APIRET doshCreateTempFileName(PSZ pszTempFileName, - PCSZ pcszDir, - PCSZ pcszPrefix, - PCSZ pcszExt); - - APIRET doshWriteTextFile(const char* pszFile, - const char* pszContent, - PULONG pulWritten, - PSZ pszBackup); - - - /* ****************************************************************** - * - * Directory helpers - * - ********************************************************************/ - - BOOL doshQueryDirExist(PCSZ pcszDir); - - APIRET doshCreatePath(PCSZ pcszPath, - BOOL fHidden); - - APIRET doshQueryCurrentDir(PSZ pszBuf); - - APIRET doshSetCurrentDir(PCSZ pcszDir); - - #define DOSHDELDIR_RECURSE 0x0001 - #define DOSHDELDIR_DELETEFILES 0x0002 - - APIRET doshDeleteDir(PCSZ pcszDir, - ULONG flFlags, - PULONG pulDirs, - PULONG pulFiles); - - APIRET doshCanonicalize(PCSZ pcszFileIn, - PSZ pszFileOut, - ULONG cbFileOut); - - /* ****************************************************************** - * - * Process helpers - * - ********************************************************************/ - - ULONG XWPENTRY doshMyPID(VOID); - typedef ULONG XWPENTRY DOSHMYPID(VOID); - typedef DOSHMYPID *PDOSHMYPID; - - ULONG XWPENTRY doshMyTID(VOID); - typedef ULONG XWPENTRY DOSHMYTID(VOID); - typedef DOSHMYTID *PDOSHMYTID; - - APIRET doshExecVIO(PCSZ pcszExecWithArgs, - PLONG plExitCode); - - APIRET doshQuickStartSession(PCSZ pcszPath, - PCSZ pcszParams, - BOOL fForeground, - USHORT usPgmCtl, - BOOL fWait, - PULONG pulSID, - PPID ppid, - PUSHORT pusReturn); - - APIRET doshSearchPath(PCSZ pcszPath, - PCSZ pcszFile, - PSZ pszExecutable, - ULONG cbExecutable); - - APIRET doshFindExecutable(PCSZ pcszCommand, - PSZ pszExecutable, - ULONG cbExecutable, - PCSZ *papcszExtensions, - ULONG cExtensions); - - /******************************************************************** - * - * Partition functions - * - ********************************************************************/ - - /* - *@@ LVMINFO: - * informational structure created by - * doshQueryLVMInfo. - * - *@@added V0.9.9 (2001-04-07) [umoeller] - */ - - typedef struct _LVMINFO - { - HMODULE hmodLVM; - - } LVMINFO, *PLVMINFO; - - /* #define DOSH_PARTITIONS_LIMIT 10 - - #define PAR_UNUSED 0x00 // Unused - #define PAR_FAT12SMALL 0x01 // DOS FAT 12-bit < 10 Mb - #define PAR_XENIXROOT 0x02 // XENIX root - #define PAR_XENIXUSER 0x03 // XENIX user - #define PAR_FAT16SMALL 0x04 // DOS FAT 16-bit < 32 Mb - #define PAR_EXTENDED 0x05 // Extended partition - #define PAR_FAT16BIG 0x06 // DOS FAT 16-bit > 32 Mb - #define PAR_HPFS 0x07 // OS/2 HPFS - #define PAR_AIXBOOT 0x08 // AIX bootable partition - #define PAR_AIXDATA 0x09 // AIX bootable partition - #define PAR_BOOTMANAGER 0x0A // OS/2 Boot Manager - #define PAR_WINDOWS95 0x0B // Windows 95 32-bit FAT - #define PAR_WINDOWS95LB 0x0C // Windows 95 32-bit FAT with LBA - #define PAR_VFAT16BIG 0x0E // LBA VFAT (same as 06h but using LBA-mode) - #define PAR_VFAT16EXT 0x0F // LBA VFAT (same as 05h but using LBA-mode) - #define PAR_OPUS 0x10 // OPUS - #define PAR_HID12SMALL 0x11 // OS/2 hidden DOS FAT 12-bit - #define PAR_COMPAQDIAG 0x12 // Compaq diagnostic - #define PAR_HID16SMALL 0x14 // OS/2 hidden DOS FAT 16-bit - #define PAR_HID16BIG 0x16 // OS/2 hidden DOS FAT 16-bit - #define PAR_HIDHPFS 0x17 // OS/2 hidden HPFS - #define PAR_WINDOWSSWP 0x18 // AST Windows Swap File - #define PAR_NECDOS 0x24 // NEC MS-DOS 3.x - #define PAR_THEOS 0x38 // THEOS - #define PAR_VENIX 0x40 // VENIX - #define PAR_RISCBOOT 0x41 // Personal RISC boot - #define PAR_SFS 0x42 // SFS - #define PAR_ONTRACK 0x50 // Ontrack - #define PAR_ONTRACKEXT 0x51 // Ontrack extended partition - #define PAR_CPM 0x52 // CP/M - #define PAR_UNIXSYSV 0x63 // UNIX SysV/386 - #define PAR_NOVELL_64 0x64 // Novell - #define PAR_NOVELL_65 0x65 // Novell - #define PAR_NOVELL_67 0x67 // Novell - #define PAR_NOVELL_68 0x68 // Novell - #define PAR_NOVELL_69 0x69 // Novell - #define PAR_PCIX 0x75 // PCIX - #define PAR_MINIX 0x80 // MINIX - #define PAR_LINUX 0x81 // Linux - #define PAR_LINUXSWAP 0x82 // Linux Swap Partition - #define PAR_LINUXFILE 0x83 // Linux File System - #define PAR_FREEBSD 0xA5 // FreeBSD - #define PAR_BBT 0xFF // BBT - */ - - // one-byte alignment - #pragma pack(1) - - /* - *@@ PAR_INFO: - * partition table - */ - - typedef struct _PAR_INFO - { - BYTE bBootFlag; // 0=not active, 80H = active (boot this partition - BYTE bBeginHead; // partition begins at this head... - USHORT rBeginSecCyl; // ...and this sector and cylinder (see below) - BYTE bFileSysCode; // file system type - BYTE bEndHead; // partition ends at this head... - USHORT bEndSecCyl; // ...and this sector and cylinder (see below) - ULONG lBeginAbsSec; // partition begins at this absolute sector # - ULONG lTotalSects; // total sectors in this partition - } PAR_INFO, *PPAR_INFO; - - /* - *@@ MBR_INFO: - * master boot record table. - * This has the four primary partitions. - */ - - typedef struct _MBR_INFO // MBR - { - BYTE aBootCode[0x1BE]; // abBootCode master boot executable code - PAR_INFO sPrtnInfo[4]; // primary partition entries - USHORT wPrtnTblSig; // partition table signature (aa55H) - } MBR_INFO, *PMBR_INFO; - - /* - *@@ SYS_INFO: - * - */ - - typedef struct _SYS_INFO - { - BYTE startable; - BYTE unknown[3]; - BYTE bootable; - BYTE name[8]; - BYTE reservd[3]; - } SYS_INFO, *PSYS_INFO; - - /* - *@@ SYE_INFO: - * - */ - - typedef struct _SYE_INFO - { - BYTE bootable; - BYTE name[8]; - } SYE_INFO, *PSYE_INFO; - - /* - *@@ EXT_INFO: - * - */ - - typedef struct _EXT_INFO - { - BYTE aBootCode[0x18A]; // abBootCode master boot executable code - SYE_INFO sBmNames[4]; // System Names - BYTE bReserved[16]; // reserved - PAR_INFO sPrtnInfo[4]; // partitioms entrys - USHORT wPrtnTblSig; // partition table signature (aa55H) - } EXT_INFO, *PEXT_INFO; - - typedef struct _PARTITIONINFO *PPARTITIONINFO; - - /* - *@@ PARTITIONINFO: - * informational structure returned - * by doshGetPartitionsList. One of - * these items is created for each - * bootable partition. - */ - - typedef struct _PARTITIONINFO - { - BYTE bDisk; // drive number - CHAR cLetter; // probable drive letter or ' ' if none - BYTE bFSType; // file system type - PCSZ pcszFSType; // file system name (as returned by - // doshType2FSName, can be NULL!) - BOOL fPrimary; // primary partition? - BOOL fBootable; // bootable by Boot Manager? - CHAR szBootName[21]; // Boot Manager name, if (fBootable) - // extended for LVM names V0.9.20 (2002-08-10) [umoeller] - ULONG ulSize; // size MBytes - PPARTITIONINFO pNext; // next info or NULL if last - } PARTITIONINFO; - - UINT doshQueryDiskCount(VOID); - - APIRET doshReadSector(USHORT disk, - void *buff, - USHORT head, - USHORT cylinder, - USHORT sector); - - // restore original alignment - #pragma pack() - - const char* doshType2FSName(unsigned char bFSType); - - APIRET doshGetBootManager(USHORT *pusDisk, - USHORT *pusPart, - PAR_INFO *BmInfo); - - typedef struct _PARTITIONSLIST - { - PLVMINFO pLVMInfo; // != NULL if LVM is installed - - // partitions array - PPARTITIONINFO pPartitionInfo; - USHORT cPartitions; - } PARTITIONSLIST, *PPARTITIONSLIST; - - APIRET doshGetPartitionsList(PPARTITIONSLIST *ppList, - PUSHORT pusContext); - - APIRET doshFreePartitionsList(PPARTITIONSLIST ppList); - - APIRET doshQueryLVMInfo(PLVMINFO *ppLVMInfo); - - APIRET doshReadLVMPartitions(PLVMINFO pInfo, - PPARTITIONINFO *ppPartitionInfo, - PUSHORT pcPartitions); - - VOID doshFreeLVMInfo(PLVMINFO pInfo); - - /* ****************************************************************** - * - * Wildcard matching - * - ********************************************************************/ - - BOOL doshMatchCase(PCSZ pcszMask, - PCSZ pcszName); - - BOOL doshMatchCaseNoPath(const char *pcszMask, - const char *pcszName); - - BOOL doshMatch(PCSZ pcszMask, - PCSZ pcszName); - #endif #if __cplusplus } #endif - diff --git a/sal/osl/os2/helpers/except.h b/sal/osl/os2/helpers/except.h index 6a898ba84..959975bae 100644 --- a/sal/osl/os2/helpers/except.h +++ b/sal/osl/os2/helpers/except.h @@ -1,3 +1,32 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ /* *@@sourcefile except.h: @@ -15,15 +44,10 @@ */ /* - * Copyright (C) 1999-2000 Ulrich M”ller. - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, in version 2 as it comes in the COPYING - * file of the XFolder main distribution. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Copyright (C) 1999-2000 Ulrich M�ller. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * */ #if __cplusplus diff --git a/sal/osl/os2/helpers/setup.h b/sal/osl/os2/helpers/setup.h index 015d93019..bcf3154c5 100644 --- a/sal/osl/os2/helpers/setup.h +++ b/sal/osl/os2/helpers/setup.h @@ -1,3 +1,35 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile:$ + * $Revision:$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + * 2009-06-15 published under LGPL3 with Ulrich M�ller permission. + * + * + ************************************************************************/ /* * setup.h: diff --git a/sal/osl/os2/module.c b/sal/osl/os2/module.c index dfc188765..f6aabbfba 100644 --- a/sal/osl/os2/module.c +++ b/sal/osl/os2/module.c @@ -109,7 +109,7 @@ oslModule SAL_CALL osl_loadModule(rtl_uString *ustrModuleName, sal_Int32 nRtldMo pModule = (oslModule)hModule; else { - sal_Char szError[ 120 ]; + sal_Char szError[ PATH_MAX*2 ]; sprintf( szError, "Module: %s; rc: %d;\nReason: %s;\n" "Please contact technical support and report above informations.\n\n", buffer, rc, szErrorMessage ); diff --git a/sal/osl/os2/process.c b/sal/osl/os2/process.c index d903edb68..ee0e76c8f 100644 --- a/sal/osl/os2/process.c +++ b/sal/osl/os2/process.c @@ -551,7 +551,8 @@ oslProcessError SAL_CALL osl_psz_executeProcess(sal_Char *pszImageName, { for (i = first; pszArguments[i] != NULL; i++) n += strlen(pszArguments[i]) + 1; - args = (sal_Char*)malloc(n); + // YD DosStartSession requires low-mem buffers! + args = (sal_Char*)_tmalloc(n); *args = '\0'; for (i = first; pszArguments[i] != NULL; i++) { @@ -567,7 +568,8 @@ oslProcessError SAL_CALL osl_psz_executeProcess(sal_Char *pszImageName, { for (i = 0; pszEnvironments[i] != NULL; i++) n += strlen(pszEnvironments[i]) + 1; - envs = (sal_Char*)malloc(n + 1); + // YD DosStartSession requires low-mem buffers! + envs = (sal_Char*)_tmalloc(n + 1); pStr = (sal_Char*)envs; for (i = 0; pszEnvironments[i] != NULL; i++) { @@ -660,9 +662,9 @@ oslProcessError SAL_CALL osl_psz_executeProcess(sal_Char *pszImageName, if(envs) - free(envs); + _tfree(envs); if(args) - free(args); + _tfree(args); if( rc != NO_ERROR ) return osl_Process_E_Unknown; diff --git a/sal/osl/w32/diagnose.c b/sal/osl/w32/diagnose.c index f1227d6c1..dc0de3704 100644 --- a/sal/osl/w32/diagnose.c +++ b/sal/osl/w32/diagnose.c @@ -92,7 +92,10 @@ void SAL_CALL osl_trace(const sal_Char* lpszFormat, ...) sal_Char szMessage[512]; szMessage[sizeof(szMessage)-1] = 0; written = _vsnprintf( szMessage, sizeof(szMessage) - 2, lpszFormat, args ); - szMessage[ written == -1 ? sizeof(szMessage) - 2 : written ] = '\n'; + if ( written == -1 ) + written = sizeof(szMessage) - 2; + szMessage[ written++ ] = '\n'; + szMessage[ written ] = 0; OutputDebugString( szMessage ); } diff --git a/sal/rtl/source/math.cxx b/sal/rtl/source/math.cxx index 4d8be2b01..731ab18c6 100644 --- a/sal/rtl/source/math.cxx +++ b/sal/rtl/source/math.cxx @@ -79,6 +79,130 @@ static double getN10Exp( int nExp ) return 1.0; } +/** Approximation algorithm for erf for 0 < x < 0.65. */ +void lcl_Erf0065( double x, double& fVal ) +{ + static const double pn[] = { + 1.12837916709551256, + 1.35894887627277916E-1, + 4.03259488531795274E-2, + 1.20339380863079457E-3, + 6.49254556481904354E-5 + }; + static const double qn[] = { + 1.00000000000000000, + 4.53767041780002545E-1, + 8.69936222615385890E-2, + 8.49717371168693357E-3, + 3.64915280629351082E-4 + }; + double fPSum = 0.0; + double fQSum = 0.0; + double fXPow = 1.0; + for ( unsigned int i = 0; i <= 4; ++i ) + { + fPSum += pn[i]*fXPow; + fQSum += qn[i]*fXPow; + fXPow *= x*x; + } + fVal = x * fPSum / fQSum; +} + +/** Approximation algorithm for erfc for 0.65 < x < 6.0. */ +void lcl_Erfc0600( double x, double& fVal ) +{ + double fPSum = 0.0; + double fQSum = 0.0; + double fXPow = 1.0; + const double *pn; + const double *qn; + + if ( x < 2.2 ) + { + static const double pn22[] = { + 9.99999992049799098E-1, + 1.33154163936765307, + 8.78115804155881782E-1, + 3.31899559578213215E-1, + 7.14193832506776067E-2, + 7.06940843763253131E-3 + }; + static const double qn22[] = { + 1.00000000000000000, + 2.45992070144245533, + 2.65383972869775752, + 1.61876655543871376, + 5.94651311286481502E-1, + 1.26579413030177940E-1, + 1.25304936549413393E-2 + }; + pn = pn22; + qn = qn22; + } + else /* if ( x < 6.0 ) this is true, but the compiler does not know */ + { + static const double pn60[] = { + 9.99921140009714409E-1, + 1.62356584489366647, + 1.26739901455873222, + 5.81528574177741135E-1, + 1.57289620742838702E-1, + 2.25716982919217555E-2 + }; + static const double qn60[] = { + 1.00000000000000000, + 2.75143870676376208, + 3.37367334657284535, + 2.38574194785344389, + 1.05074004614827206, + 2.78788439273628983E-1, + 4.00072964526861362E-2 + }; + pn = pn60; + qn = qn60; + } + + for ( unsigned int i = 0; i < 6; ++i ) + { + fPSum += pn[i]*fXPow; + fQSum += qn[i]*fXPow; + fXPow *= x; + } + fQSum += qn[6]*fXPow; + fVal = exp( -1.0*x*x )* fPSum / fQSum; +} + +/** Approximation algorithm for erfc for 6.0 < x < 26.54 (but used for all + x > 6.0). */ +void lcl_Erfc2654( double x, double& fVal ) +{ + static const double pn[] = { + 5.64189583547756078E-1, + 8.80253746105525775, + 3.84683103716117320E1, + 4.77209965874436377E1, + 8.08040729052301677 + }; + static const double qn[] = { + 1.00000000000000000, + 1.61020914205869003E1, + 7.54843505665954743E1, + 1.12123870801026015E2, + 3.73997570145040850E1 + }; + + double fPSum = 0.0; + double fQSum = 0.0; + double fXPow = 1.0; + + for ( unsigned int i = 0; i <= 4; ++i ) + { + fPSum += pn[i]*fXPow; + fQSum += qn[i]*fXPow; + fXPow /= x*x; + } + fVal = exp(-1.0*x*x)*fPSum / (x*fQSum); +} namespace { @@ -991,3 +1115,129 @@ double SAL_CALL rtl_math_atanh( double fValue ) SAL_THROW_EXTERN_C() { return 0.5 * rtl_math_log1p( 2.0 * fValue / (1.0-fValue) ); } + + +/** Parent error function (erf) that calls different algorithms based on the + value of x. It takes care of cases where x is negative as erf is an odd + function i.e. erf(-x) = -erf(x). + + Kramer, W., and Blomquist, F., 2000, Algorithms with Guaranteed Error Bounds + for the Error Function and the Complementary Error Function + + http://www.math.uni-wuppertal.de/wrswt/literatur_en.html + + @author Kohei Yoshida <kohei@openoffice.org> + + @see #i55735# + */ +double SAL_CALL rtl_math_erf( double x ) SAL_THROW_EXTERN_C() +{ + if( x == 0.0 ) + return 0.0; + + bool bNegative = false; + if ( x < 0.0 ) + { + x = fabs( x ); + bNegative = true; + } + + double fErf = 1.0; + if ( x < 1.0e-10 ) + fErf = (double) (x*1.1283791670955125738961589031215452L); + else if ( x < 0.65 ) + lcl_Erf0065( x, fErf ); + else + fErf = 1.0 - rtl_math_erfc( x ); + + if ( bNegative ) + fErf *= -1.0; + + return fErf; +} + + +/** Parent complementary error function (erfc) that calls different algorithms + based on the value of x. It takes care of cases where x is negative as erfc + satisfies relationship erfc(-x) = 2 - erfc(x). See the comment for Erf(x) + for the source publication. + + @author Kohei Yoshida <kohei@openoffice.org> + + @see #i55735#, moved from module scaddins (#i97091#) + + */ +double SAL_CALL rtl_math_erfc( double x ) SAL_THROW_EXTERN_C() +{ + if ( x == 0.0 ) + return 1.0; + + bool bNegative = false; + if ( x < 0.0 ) + { + x = fabs( x ); + bNegative = true; + } + + double fErfc = 0.0; + if ( x >= 0.65 ) + { + if ( x < 6.0 ) + lcl_Erfc0600( x, fErfc ); + else + lcl_Erfc2654( x, fErfc ); + } + else + fErfc = 1.0 - rtl_math_erf( x ); + + if ( bNegative ) + fErfc = 2.0 - fErfc; + + return fErfc; +} + +/** improved accuracy of asinh for |x| large and for x near zero + @see #i97605# + */ +double SAL_CALL rtl_math_asinh( double fX ) SAL_THROW_EXTERN_C() +{ + double fSign = 1.0; + if ( fX == 0.0 ) + return 0.0; + else + { + if ( fX < 0.0 ) + { + fX = - fX; + fSign = -1.0; + } + if ( fX < 0.125 ) + return fSign * rtl_math_log1p( fX + fX*fX / (1.0 + sqrt( 1.0 + fX*fX))); + else if ( fX < 1.25e7 ) + return fSign * log( fX + sqrt( 1.0 + fX*fX)); + else + return fSign * log( 2.0*fX); + } +} + +/** improved accuracy of acosh for x large and for x near 1 + @see #i97605# + */ +double SAL_CALL rtl_math_acosh( double fX ) SAL_THROW_EXTERN_C() +{ + volatile double fZ = fX - 1.0; + if ( fX < 1.0 ) + { + double fResult; + ::rtl::math::setNan( &fResult ); + return fResult; + } + else if ( fX == 1.0 ) + return 0.0; + else if ( fX < 1.1 ) + return rtl_math_log1p( fZ + sqrt( fZ*fZ + 2.0*fZ)); + else if ( fX < 1.25e7 ) + return log( fX + sqrt( fX*fX - 1.0)); + else + return log( 2.0*fX); +} diff --git a/sal/util/sal.map b/sal/util/sal.map index ad063f379..d5faa563a 100755 --- a/sal/util/sal.map +++ b/sal/util/sal.map @@ -591,6 +591,10 @@ UDK_3.9 { # OOo 3.1 UDK_3.10 { # OOo 3.2 global: rtl_logfile_hasLogFile; + rtl_math_erf; + rtl_math_erfc; + rtl_math_asinh; + rtl_math_acosh; } UDK_3.9; PRIVATE_1.0 { |