4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-28 03:27:46 +08:00

17326 Commits

Author SHA1 Message Date
Corinna Vinschen
14ad5884f0 setlocale/localeconv are *not* POSIX-1.2008 2016-08-12 21:50:10 +02:00
Corinna Vinschen
f440f615bd setlocale.h: Fix current locale handling for !__HAVE_LOCALE_INFO__ targets 2016-08-12 21:50:10 +02:00
Corinna Vinschen
c92d449775 __loadlocale: Set missing val when evaluating CP874 2016-08-12 21:50:10 +02:00
Corinna Vinschen
1272ef5632 Make sure alloca is called even when optimizing, fully init _REENT 2016-08-12 21:50:10 +02:00
Corinna Vinschen
0feda2d3a9 Fix multiple thinkos in newlocale
- Setting the categories strings in tmp_locale short-circuits
  __loadlocale.  Use a new_categories array instead, just as in
  _setlocale_r.

- If we have a base, copy over the *not* defined categories in
  category_mask in the first place.  Rearrange loop accordingly.

- Free base right in newlocale.
2016-08-12 21:50:10 +02:00
Corinna Vinschen
8207fe25ec Fix _REENT_INIT initialization of _locale
Initializing a pointer to struct __locale_t to point to a string "C"
is not such a bright idea in the long run...
2016-08-12 21:50:10 +02:00
Corinna Vinschen
ef78a58a24 Fix typo in isalnum_l doc
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-12 21:50:10 +02:00
Corinna Vinschen
31df3ca11e Get rid of LCID, reformat type definitions in setlocale.h
Definition of LCID results in build problems on 32 bit Cygwin
2016-08-12 21:50:10 +02:00
Corinna Vinschen
caedee67c1 Add sys/_locale.h header and fix up headers 2016-08-12 21:50:10 +02:00
Corinna Vinschen
0f1d7e0648 Bump CygwinAPI minor. 2016-08-12 21:50:10 +02:00
Corinna Vinschen
48f079bdd1 Implement strfmon_l
Use latest code from FreeBSD
2016-08-12 21:50:09 +02:00
Corinna Vinschen
c380b6efba Rename __get_locale_XXX to __get_XXX_locale to use unified naming scheme 2016-08-12 21:50:09 +02:00
Corinna Vinschen
e0aa9234c7 Move lconv into struct __locale_t and implement __localeconv_l
Based on FreeBSD, just don't export symbol yet, unless required.
2016-08-12 21:50:09 +02:00
Corinna Vinschen
2a7a74a2c4 Implement per-locale string functions
strcasecmp_l, strcoll_l, strncasecmp_l, strxfrm_l,
wcscasecmp_l, wcscoll_l, wcstrncasecmp_l, wcstrxfrm_l,
strftime_l.

TODO: strfmon_l.
2016-08-12 21:50:09 +02:00
Corinna Vinschen
696bad6ed2 Implement all per-locale ctype functions 2016-08-12 21:50:09 +02:00
Corinna Vinschen
65ef80ead1 Move localeconv, duplocale, freelocale, newlocale, uselocale into separate files 2016-08-12 21:50:09 +02:00
Corinna Vinschen
17c22d80c8 include/locale.h: Fix POSIX guards 2016-08-12 21:50:09 +02:00
Corinna Vinschen
918283cc68 Remove non-working __part_load_locale function and any related code
Add TODO markers in case somebody wants to pick this up again
2016-08-12 21:50:09 +02:00
Corinna Vinschen
8fd5a0826b posix.xml: Note duplocale, freelocale, newlocale, uselocale as implemented 2016-08-12 21:50:09 +02:00
Corinna Vinschen
42d56ec521 Fix memory handling in functions called from loadlocale 2016-08-12 21:50:09 +02:00
Corinna Vinschen
507858891e newlocale, freelocale, duplocale, uselocale 2016-08-12 21:50:08 +02:00
Corinna Vinschen
519c0a6c26 Use __get_global_locale function where appropriate 2016-08-12 21:50:08 +02:00
Corinna Vinschen
bd80c8204b Rearrange struct __locale_t pointers into an array
This allows looping through the structs and buffers.  Also
rearrange definitions to follow order of LC_xxx values.
2016-08-12 21:50:08 +02:00
Corinna Vinschen
8605fcc455 Change loadlocale to fill a __locale_t given as parameter
Don't use global variables.  This allows to call loadlocale from
the yet to be created newlocale().

Rename _thr_locale_t to __locale_t (these locales are not restricted
to threads so the name is misleading).

Along these lines, fix _set_ctype to take a __locale_t as parameter.
2016-08-12 21:50:08 +02:00
Corinna Vinschen
7608980972 Consolidate wctomb/mbtowc calls for POSIX-1.2008
- Remove charset parameter from low level __foo_wctomb/__foo_mbtowc calls.
- Instead, create array of function for ISO and Windows codepages to point
  to function which does not require to evaluate the charset string on
  each call.  Create matching helper functions.  I.e., __iso_wctomb,
  __iso_mbtowc, __cp_wctomb and __cp_mbtowc are functions returning the
  right function pointer now.
- Create __WCTOMB/__MBTOWC macros utilizing per-reent locale and replace
  calls to __wctomb/__mbtowc with calls to __WCTOMB/__MBTOWC.
- Drop global __wctomb/__mbtowc vars.
- Utilize aforementioned changes in Cygwin to get rid of charset in other,
  calling functions and simplify the code.
- In Cygwin restrict global cygheap locale info to the job performed
  by internal_setlocale.  Use UTF-8 instead of ASCII on the fly in
  internal conversion functions.
- In Cygwin dll_entry, make sure to initialize a TLS area with a NULL
  _REENT->_locale pointer.  Add comment to explain why.
2016-08-12 21:50:08 +02:00
Corinna Vinschen
ee80233d25 groundwork part 2 2016-08-12 21:50:08 +02:00
Corinna Vinschen
94bfd1912b groundwork part 1 2016-08-12 21:50:08 +02:00
Yaakov Selkowitz
51b669f679 Do not include wctype.h in wchar.h with _GNU_SOURCE
_GNU_SOURCE generally enables all features, but in this case the POSIX
requirement to #include <wctype.h> for these is preferred.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-12 13:44:26 -05:00
Yaakov Selkowitz
b14a1dbc86 Define va_list in stdio.h and wchar.h
This typedef, along with that of FILE in wchar.h, were XSI prior to
inclusion in POSIX.1-2008.

Fixes: https://sourceware.org/ml/newlib/2016/msg00640.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-12 11:43:14 -05:00
Corinna Vinschen
9169111acf Remove unused import/rexec.c accidentally imported by commit b6e90a06
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-12 14:52:09 +02:00
Yaakov Selkowitz
1e22b408b2 Include wctype.h in wchar.h as an XSI extension
However, note that this inclusion is obsolescent in SUSv4 and therefore
may be removed in the next revision.

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-11 16:33:43 -05:00
Yaakov Selkowitz
05aca4d94d Feature test macros overhaul: wctype.h
iswblank was first introduced in C99.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-11 14:16:24 -05:00
Erik Bray
86f79af827 kill(pid, sig) before waitpid() returns -1 for sig != 0
This is a followup to a report back in 2011 about essentially the same issue:

https://cygwin.com/ml/cygwin/2011-04/msg00031.html

The same test program in that report demonstrates the issue, but with
kill sending any non-zero signal.  To reiterate, the problem here is
POSIX compliance with respect to sending signals to zombie processes.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
claims:

  Existing implementations vary on the result of a kill() with pid
  indicating an inactive process (a terminated process that has not been
  waited for by its parent). Some indicate success on such a call
  (subject to permission checking), while others give an error of
  [ESRCH].  Since the definition of process lifetime in this volume of
  POSIX.1-2008 covers inactive processes, the [ESRCH] error as described
  is inappropriate in this case. In particular, this means that an
  application cannot have a parent process check for termination of a
  particular child with kill().  (Usually this is done with the null
  signal; this can be done reliably with waitpid().)

In response to the originally issue, this was fixed *specifically* for
the case of kill(pid, 0).  But my reading of the above is that kill()
should return 0 in this case regardless of the signal (modulo
permissions, etc.).  On Linux, for example, when calling kill with pid
of a zombie process the kernel will happily deliver the signal to the
relevant task_struct; it will just never be acted on since the task
will never run again.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-11 15:57:53 +02:00
Yaakov Selkowitz
d2e0e14ef7 Feature test macros overhaul: wchar.h, part 2
Many wchar.h functions were never properly guarded; these changes should
make the header fully compliant.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-11 11:18:18 +02:00
Anton Kolesov
668033eb9f arc: Fix strcmp for big endian without barrel shifter
strcmp.S contained invalid guard for code that used barrel-shifter optional
instruction - it was checking for !ARC601 instead of whether barrel shifter
is present. While it is true that ARC601 doesn't have barrel shifter, so
does some other ARC EM configurations.

2016-07-21  Anton Kolesov  <Anton.Kolesov@synopsys.com>

	* libc/machine/arc/strcmp.S: Fix big endian without barrel shifter.

Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com>
2016-08-11 10:59:54 +02:00
Claudiu Zissulescu
1baa8bb843 arc: Add align keyword.
libgloss/
2016-06-28  Claudiu Zissulescu  <claziss@synopsys.com>

	* arc/crt0.S: Add align keyword.
2016-08-11 10:59:54 +02:00
Claudiu Zissulescu
7b1080d9aa arc: Use prefetch instead of prealloc.
Prealloc instruction may not be present in all HS variants. Hence, use
prefetch instead of prealloc.

newlib/
2016-04-26  Claudiu Zissulescu  <claziss@synopsys.com>

	* libc/machine/arc/memset-archs.S: Use prefetch.
2016-08-11 10:59:53 +02:00
Claudiu Zissulescu
67c5af5b85 arc: Use unaligned loads/stores for memcopy.
newlib/
2016-04-26  Claudiu Zissulescu  <claziss@synopsys.com>

	* libc/machine/arc/memcpy-archs.S: Add and enable memcpy using
	unaligned loads/stores.
2016-08-11 10:59:53 +02:00
Gedare Bloom
9a80679aae rtems: define _POSIX_CLOCK_SELECTION feature
Enable definition of clock_nanosleep() since it was added to RTEMS.

Signed-off-by: Joel Sherrill <joelemail@rtems.org>
2016-08-08 11:12:23 -05:00
Gedare Bloom
644e40dd9c rtems: add sys/mman.h
This file was copied verbatim from FreeBSD and is in sync
	with the FreeBSD svn version used by rtems-libbsd.

Signed-off-by: Joel Sherrill <joelemail@rtems.org>
2016-08-08 11:11:48 -05:00
Corinna Vinschen
9c4113f0c7 Workaround for filesystems with broken FileAllInformation info class (NcFsd)
See discussion starting at https://cygwin.com/ml/cygwin/2016-07/msg00350.html

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-05 10:47:37 +02:00
Corinna Vinschen
99a3f266c1 Fix console clear screen if buffer is full
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-03 14:34:01 +02:00
Corinna Vinschen
05847ad6e9 Fix console clear screen in case of partial scrolling
Commit d7586cb incorrectly checked only for the new cursor position
beyond the old cursor position to decide if we have to correct for user
scrolling.  Since this situation is handled just fine if the cursor is
still visible, only perform the subsequent correction if the cursor is
not in the visible console window.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-01 12:42:54 +02:00
Corinna Vinschen
11dcf9cb5c Open process with PROCESS_QUERY_INFORMATION to fetch maps
Commit ba58e5f lowered permission requirements when opening threads
and processes to {PROCESS,THREAD}_QUERY_LIMITED_INFORMATION.  However,
when creating the /proc/<PID>/maps file, the call to VirtualQueryEx
requires PROCESS_QUERY_INFORMATION access

Note: It seems PROCESS_QUERY_LIMITED_INFORMATION is sufficient starting
with Windows 8.1, but this is neither documented on MSDN, nor is it a
safe bet.  It may have to do with a fixed implementation of the UAC
trust levels.  Let's better follow the docs for now.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-01 11:52:30 +02:00
Corinna Vinschen
d7586cb66c Fix clear screen behaviour of console when user scrolled up or down
We must call SetConsoleCursorPosition prior to SetConsoleWindowInfo,
otherwise the scroll bars will not be updated by the OS.  Make sure
to scroll the console window by just the right amount to have the
new cursor position one line after the used console buffer area at
the top of the console window, no matter the scroll state.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-29 12:07:46 +02:00
Corinna Vinschen
08da3bfc41 Fix buffer scrolling when performing a "clear screen"
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-28 08:50:09 +02:00
Corinna Vinschen
32b668d966 Don't raise SIGTTIN from poll/select
SIGTTIN should be raised when read() is made on a tty in a backgrounded
process, but not when it's tested with poll()/select().

I guess poll()/select() does need to call bg_check(), in order to detect the
error conditions that notices (that is, if bg_check() returns bg_eof or
bg_error, then fd is ready as an error condition exists) so add an optional
parameter to fhandler_base::bg_select() to indicate that signals aren't
desired.

See https://cygwin.com/ml/cygwin-developers/2016-07/msg00004.html
2016-07-27 17:02:08 +01:00
Corinna Vinschen
10a30e7a25 Remove redundant macro and function called `__getreent'
Just rely on the inline version in include/cygwin/config.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-27 14:00:30 +02:00
Corinna Vinschen
886f89ac39 posix.xml: Add missing unimplemented functions from POSIX-1.2013
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-23 13:56:52 +02:00
Corinna Vinschen
25cb82a55e Change "nodomain+nobody" to "no+body"
Per https://cygwin.com/ml/cygwin-apps/2016-07/msg00059.html

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-07-22 09:41:23 +02:00