Commit Graph

734 Commits

Author SHA1 Message Date
Oliver Tappe
0bbc9d0e04 Remove some more glibc-files that are not required. 2012-02-07 22:32:19 +01:00
Oliver Tappe
86beacd179 Drop as much of gconv as possible. 2012-02-07 21:43:02 +01:00
Oliver Tappe
2370b92e15 Drop all unneeded gconv converters.
* implement wchar->multibyte & multibyte->wchar conversions, make those
  the default converters and drop all others (except for ascii)
2012-02-07 21:43:02 +01:00
Oliver Tappe
99916f57cc Adjust yet another version of mbstate_t in glibc:
* yuck, glibc uses yet another version of mbstate_t (__c_mbstate_t),
  adjusting this to match the other glibc-internal version (__mbstate_t)
  fixes another crash triggered by fwide_test.
2012-02-07 21:43:02 +01:00
Oliver Tappe
40135926f9 Adjust glibc's definition of mbstate_t
* instead of unification, we now keep both our and glibc's fields
  separate in order to allow for both our code and glibc's to use
  such a struct at the same time (independently)
2012-02-07 21:43:02 +01:00
Oliver Tappe
0d03f689b2 Fix crash in fwide():
* _IO_USER_BUF was being used to indicate a user-owned buffer without
  taking into account that there are two of those: one for the normal
  and another one for the wide version of a stream. Backport
  _IO_FLAGS2_USER_WBUF from current glibc version to fix that.
2012-02-07 21:43:01 +01:00
Oliver Tappe
174676503b Drop now unneeded glibc wchar-files (plus others). 2012-01-07 22:03:24 +01:00
Oliver Tappe
b7417fbec1 Switch wchar from glibc to our own implementations. 2012-01-07 22:02:48 +01:00
Oliver Tappe
7efc2e3a0e Add our own implementations for all wchar.h functions.
* add implementation for wcpcpy(), wcpncpy(), wcscasecmp(), wcscat(),
  wcschr(), wcscmp(), wcscpy(), wcscspn(), wcsdup(), wcslcat(),
  wcslcpy(), wcslen(), wcsncasecmp(), wcsncat(), wcsncmp(), wcsncpy(),
  wcsnlen(), wcspbrk(), wcsrchr(), wcsspn(), wcsstr(), wcstok(),
  wmemchr(), wmemcmp(), wmemcpy(), wmemmove(), wmemset
* add implementations for GNU-extensions used by our glibc and some
  other programs/libs: wcschrnul(), wmempcpy()
* add stub for wcsftime()
2012-01-07 22:01:40 +01:00
Oliver Tappe
d7965519f2 Cleanup: LocaleBackend.h is not a local header for wchar. 2012-01-07 21:48:39 +01:00
Oliver Tappe
bd55dcbefb Add our implementation for wcscoll() and wcsxfrm().
* add Wcscoll() and Wcsxfrm() ICU locale backend
* provide implementations of wcscoll() and wcsxfrm() that are using
  the respective methods of the locale backend
2012-01-07 21:47:31 +01:00
Fredrik Holmqvist
9aec8e8424 Remove strlen from PPC glibc as well.
This should fix the PPC build. Sorry for that, k thx bye.
2011-12-31 21:32:57 +01:00
Philippe Saint-Pierre
d2a423e499 driver_settings: Replace type of bufferSize from size_t to ssize_t
At various locations, checks are made so that bufferSize is >= 0, which never
occurs. CID 4197.
2011-12-29 14:08:15 -05:00
Fredrik Holmqvist
79423142ff Stylefixes as pointed out by Axel and some minor changes possible in cpp.
No functional change.
2011-12-29 18:59:00 +01:00
Fredrik Holmqvist
87dfde44f7 Stop using glibc's asm strlen and use our own.
Mostly done because olta want less dependency on glibc.
It should also make porting a tiny bit simpler.

Testresults, mean values on Haiku from libMicro:
 * with glibc: strlen_10: 0.03859S, strlen_1k: 1.67075S.
 * with strlen.cpp: strlen_10: 0.03854S, strlen_1k: 1.66938S.

So at least on my machine it's possible to beat glibc ;)
2011-12-29 17:41:03 +01:00
Fredrik Holmqvist
55cf69968f Rename strlen.c strnlen.c to strlen.cpp strnlen.cpp.
No changes in the files themselves in this commit.
2011-12-29 15:43:23 +01:00
Oliver Tappe
f4995c1381 Improve timezone names returned by POSIX functions.
* Use TimeZone::SHORT specifier instead of SHORT_COMMONLY_USED, since
  the former yields more appropriate (textual) values. Strangely enough,
  it used to be the other way around, which is why we didn't used SHORT
  in the past.
2011-12-27 14:14:55 +01:00
Fredrik Holmqvist
7928259c69 Style fixes. No functional changes.
* Parameter renamed from s to string.
 * HasZeroByte renamed to LACKS_ZERO_BYTE and the check is inverted.
 * Removed space between cast and variable.
2011-12-26 18:24:22 +01:00
Fredrik Holmqvist
11048d3619 Reworked strlen and strnlen to follow style guide.
Fix problems pointed out by Marcus.
2011-12-25 17:00:31 +01:00
Fredrik Holmqvist
753a02c156 Reworked strlen and strnlen to look at four bytes at the time. From what I understand this should be safe.
Based on info from bit twiddling hacks: http://graphics.stanford.edu/~seander/bithacks.html
2011-12-24 22:27:44 +01:00
Oliver Tappe
2ba22cc36a Fix crash of AboutSystem on gcc4.
* Glibc declares and uses its own version of mbstate_t, which is
  incompatibly with our own. Mix our own fields into glibc's
  mbstate_t, such that the two structs are compatible.
2011-12-19 18:49:16 +01:00
Oliver Tappe
ec99f3b2a6 Adjust mbstate_t to embed the state of the ICU converter.
* make room in mbstate_t for containing an ICU-converter's state
  (well, in fact the whole converter object)
* adjust libroot's locale add-on to clone converters into a given
  mbstate_t directly
* adjust ICUThreadLocalStorageValue to contain the converter pointer
  instead of a converter-ID (if the converter is related to an
  mbstate_t, it points into the mbstate_t).
* adjust users of converters to directly use converter pointers
  instead of ICUConverterRef
* drop now unused ICUConverterManager and ICUConverterRef
* update gcc4 optional package

This brings our multibyte implementation into a fully working state,
both non-ascii and non-8-bit characters can now be handled normally
in the Terminal, i.e. this finally fixes #6276.

N.B.: Since the size of mbstate_t has changed, everything (including
the compiler!) needs to be rebuilt.
2011-12-15 13:18:11 +01:00
Oliver Tappe
5de93d5b1f Adjust libroot to invoke internal (__...) mbs-functions. 2011-12-12 17:27:44 +01:00
Oliver Tappe
8703b5fdf5 Fix gcc4-build and handling of src-pointer upon error.
* the reference to MB_CUR_MAX requires stdlib.h
* if an conversion error occurs, the returned src pointer must point to
  the character that triggered the error
2011-12-12 17:27:44 +01:00
Oliver Tappe
70dda8d85a Fix POSIX-specific mbsrtowcs() and wcsrtombs().
* src was sometimes accessed incorrectly (needs double dereference)
* the source pointers may only be adjusted in case there is the
  destination pointer is not NULL
2011-12-12 17:27:43 +01:00
Oliver Tappe
0ad71bca30 Simplify wcrtomb() wrapper.
* since the backend now supports it, we can safely pass NULL as s
  to the backend
2011-12-12 17:27:43 +01:00
Oliver Tappe
47e0423a09 Drop public symbols for mbsnrtowcs() and wcsnrtombs().
We only implement POSIX_VERSION 199009, so these needn't be exported.
2011-12-12 17:27:43 +01:00
Oliver Tappe
0cf89c88d3 Activate our own wcs*tombs()-functions.
* add our own version of these functions to the build
* drop the glibc implementations of those functions
2011-12-12 17:27:42 +01:00
Oliver Tappe
995d6d827f Implement our own version of wcsrtombs().
* add WcharStringToMultibyte() to libroot's locale backend
* implement wcstombs(), wcsrtombs() and wcsnrtombs() on top of that
  new backend function
2011-12-12 17:27:42 +01:00
Oliver Tappe
b8b6531011 Add implementation for mbstowcs().
* implement mbstowcs() on top of mbsrtowcs()
* drop glibc's version of mbstowcs()
2011-12-12 17:27:42 +01:00
Oliver Tappe
73186b2fcd Add implementation of mbsrtowcs() to our locale backend.
* add MultibyteStringToWchar() to ICU locale backend
* implement mbsrtowcs() and mbsnrtowcs() on top of 
  MultibyteStringToWchar()
* drop respective glibc files
2011-12-12 17:27:41 +01:00
Oliver Tappe
d0e7bc307c Reset ICU-converter in case of error. 2011-12-12 17:27:41 +01:00
Oliver Tappe
cf13327bef Whitespace cleanup. 2011-12-12 17:27:40 +01:00
Jérôme Duval
86216323af Fixed math.h part of #2696
* added lgammal_r wrapper
* removed gamma_r and gammaf_r functions from math.h
2011-12-11 12:28:53 +01:00
Jérôme Duval
04fccd250f added hcreate, hdestroy, hsearch from glibc 2011-12-11 10:49:18 +01:00
Michael Lotz
268ddbd76f Fix a few function signatures in the guarded heap.
* Not including malloc.h caused the memalign() signature to not be a C
  signature, therefore leading to linking errors. Fix the missing
  include and explicitly add extern "C" as well.
* Some remaining asterisk style cleanup.
2011-12-10 17:24:10 +01:00
Michael Lotz
3de380692a Update the guarded heap areas after fork.
We don't actually use them for anything yet though.
2011-12-10 17:24:09 +01:00
Michael Lotz
97680106f0 Add a userland version of the guarded heap to libroot_debug.
The guarded heap uses mprotect() to protect freed/unallocated pages so
that any access to such a page results in a segfault. It also installs
a segfault handler that in such an event prints some info about the
accessed page and then calls the debugger with a meaningful message.

It implements the same interface as the debug heap so it can simply be
swapped out by changing the Jamfile. As it doesn't support most of the
extra debug features (wall checking is obviously superfluous, but it
also doesn't help in leak checking) and as it is hugely space
inefficient I left it disabled for now.
2011-12-07 00:40:47 +01:00
Michael Lotz
da3ce43440 Erase the entry only after its last use. CID 11042. 2011-12-06 20:00:48 +01:00
Ingo Weinhold
dbe2a683f0 find_directory(): Fix package links path 2011-11-25 06:19:48 +01:00
Ingo Weinhold
37c83f4e8f Made the check for B_BUFFER_OVERFLOW more flexible. 2011-11-25 06:17:30 +01:00
Oliver Tappe
323b65468e Filtered flat import of Oliver's svn package management branch
Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
  deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
  <directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
  DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
  ~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.
2011-11-25 06:17:07 +01:00
Oliver Tappe
8fd51c0819 Use ErrnoMaintainer in setlocale() to protect errno.
* this avoids spurious errno changes leaking into application code,
  which could become confused - i.e. 'rm' on a gcc4 build would always
  prompt for confirmation

I spend a couple of hours hunting down the behavioural difference
between gcc2- and gcc4-builds and it turns out that the reason for that
is that gcc4's libstdc++-code initializes its own locale data via the
POSIX calls, which trigger (correct) errno value changes, which were the
ones leaking into application code.
2011-11-24 23:48:19 +01:00
Oliver Tappe
59e43b2ac9 Add tracing to some locale backend functions. 2011-11-24 23:48:18 +01:00
Oliver Tappe
ae90193596 Introduce __set_errno() throughout libroot.
* add errno_private.h, which defines the __set_errno() macro with
  and without tracing
* instead of setting errno manually, all libroot's code now invokes
  __set_errno(), which makes it much easier to trace changes to errno
* redirect glibc's use of __set_errno() to our own version
2011-11-24 23:48:18 +01:00
Oliver Tappe
c894d1868e Bring rewritten multibyte-support into repository.
* update copyrights of locale backend files

Multibyte-support has been rewritten to use ICU as backend.
While this does not necessarily work properly in every aspect
(e.g. the shell still has [different] problems with multibyte-
characters now), it does fix #6263 and #7700.
2011-11-23 19:55:34 +01:00
Oliver Tappe
53c09cffcb Actually store & use our assigned TLS-key (OOPS!) 2011-11-23 19:32:17 +01:00
Oliver Tappe
5c112a16ff Reset mbstate to initial in wcrtomb() with 0 wchar. 2011-11-23 19:31:13 +01:00
Oliver Tappe
9161a59746 Fix build of libroot-addon-icu with gcc4. 2011-11-22 23:27:17 +01:00
Oliver Tappe
bb79d18614 Drop no longer needed multibyte stuff from glibc. 2011-11-22 18:56:41 +01:00