summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
Commit message (Collapse)AuthorAgeFilesLines
* Fix spawned process window not foregrounding.Kaz Kylheku2017-11-162-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | This patch addresses an issue whereby the window of a process created with CreateProcess fails to come to the foreground. This occurs when the calling process itself hasn't run any Windows event processing loop. A repro test case is to make a program with a main, and and call CreateProcess to spawn calc.exe or notepad.exe before doing anything else. It turns out that a dummy call to TranslateMessage makes this issue goes away. If such a call is made before CreateProcess, then the spawned process' window comes up in the foreground as expected. * winsup/cygwin/Makefile.in (DLL_IMPORTS): We need to link in user32.dll to call TranslateMessage. Condense the multiple ${shell ...} call repetition with a foreach. * winsup/cygwin/spawn.cc (child_info_spawn::worker): Do the dummy TranslateMessage call before the section of code that calls CreateProcess or CreateProcessAsUser.
* Console: provide VT100-like end-of-line print behavior.Kaz Kylheku2017-11-162-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On the majority of VT100-like terminals, when you print a character in the last column, the cursor sits in a kind of "limbo", as if the cursor position were one column past the edge of the screen. Thus when a line feed is output next, the cursor is then at the start of the next line. The Win32 console write doesn't do this; the cursor position wraps to the start of the next line. If a newline is put out, it translates to an extra newline going to the next-next line. This spoils the behavior of programs which depend on the VT100 behavior. In this patch, the VT100 behavior is simulated as follows. A new flag in the dev_console structure is set when a character is output to the last column. This flag is then observed in order to discard a newline (or rather any character which is mapped mapped to the DWN action). * winsup/cygwin/fhandler.h (class dev_console): New boolean data member, eat_newline. This indicates that if a character is output which moves down to the next line, it should be discarded rather than sent to the console. * winsup/cygwin/fhandler_console.cc (fhandler_console::write_normal): Set the eat_newline flag if the text output ends up at column zero. Honor the eat_newline flag when processing a DWN character, and clear it when processing certain other control characters.
* Report as CYGNAL in uname syscall.Kaz Kylheku2017-11-161-1/+1
| | | | | | | | This allows applications to distinguish whether they are running on the stock Cygwin or Cygnal. * winsup/cygwin/uname.cc (uname): sysname is now filled in with CYGNAL_ prefix rather than CYGWIN_.
* Cygnal apps use cmd.exe, not /bin/sh.Kaz Kylheku2017-11-163-47/+13
| | | | | | | | | | | | | | | | | | | * winsup/cygwin/include/paths.h (_PATH_CMDEXE): New preprocessor symbol. * winsup/cygwin/spawn.cc (av_setup): Use _PATH_CMDEXE rather than "/bin/sh". * winsup/cygwin/syscalls.cc (system): Spawn _PATH_CMDEXE with /c option rather than /bin/sh. (ETC_SHELLS): Preprocessor symbol removed. (shell_fp): Global variable removed. (getusershell): Don't open ETC_SHELLS, just march through static array of shell names. That array contains only one entry: _PATH_CMDEXE. (setusershell, endusershell): Remove references to shell_fp. (popen): Exec _PATH_CMDEXE rather than "/bin/sh", and the option is /c.
* When spawning, don't try to make invisible window.Kaz Kylheku2017-11-161-2/+0
| | | | | | | | | * winsup/cygwin/spawn.cc (child_info_spawn::worker): Do not call fhandler_console::need_invisible. It's not working properly. In an application which has no console because it was compiled -mwindows, calling this funcion causes a visible console window to appear. We don't need this in Cygnal; the Microsoft spawn functions don't pop up such windows.
* Use wShowWindow when calling CreateProcess.Kaz Kylheku2017-11-161-1/+2
| | | | | | * winsup/cygwin/spawn.cc (child_info_spawn::worker): Add STARTF_USESHOWWINDOW to dwFlags of the STARTUPINFOW structure, and set wShowWindow to SW_SHOWNORMAL.
* cygwin: add strptime %F fix to release notesCorinna Vinschen2017-08-291-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* winsup/cygwin/libc/strptime.cc(__strptime) fix %F widthBrian Inglis2017-08-291-2/+4
|
* cygwin: document %s support in strptimeCorinna Vinschen2017-08-291-0/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: export strnstrCorinna Vinschen2017-08-253-2/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* winsup/cygwin/libc/strptime.cc(__strptime) add %s support to strptimeBrian Inglis2017-08-251-0/+20
|
* cygwin: only expose /dev/con{in,out,sole} when started from a Windows consoleCorinna Vinschen2017-08-231-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Document renameat2Ken Brown2017-08-191-0/+2
|
* cygwin: Implement renameat2Ken Brown2017-08-194-7/+51
| | | | | | Define the RENAME_NOREPLACE flag in <cygwin/fs.h> as defined on Linux in <linux/fs.h>. The other RENAME_* flags defined on Linux are not supported.
* headers: avoid bareword attributesEric Blake2017-08-174-5/+5
| | | | | | | | | Always use the __-decorated form of an attribute name in public headers, as the bareword form is in the user's namespace, and we don't want compilation to break just because the user defines the bareword to mean something else. Signed-off-by: Eric Blake <eblake@redhat.com>
* cygwin: pthread timed locks: actually timeout on timeoutCorinna Vinschen2017-08-031-4/+26
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: pthread_rwlock_rdlock: don't set errno, just return error codeCorinna Vinschen2017-08-031-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Implement pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlockCorinna Vinschen2017-08-035-8/+76
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Bump DLL version to 2.9.0Corinna Vinschen2017-08-032-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Implement pthread_mutex_timedlockCorinna Vinschen2017-08-035-4/+35
| | | | | | | - pthread_mutex::lock now takes a PLARGE_INTEGER timeout pointer and uses that in the call to cygwait. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: simplify pthread timedwait handlingCorinna Vinschen2017-08-032-66/+60
| | | | | | | | | | | | | - Introduce inline helper pthread_convert_abstime. It converts an absolute timespec to a Windows LARGE_INTEGER timestamp, depending on the used clock. - Use this function from pthread_cond_timedwait and semaphore::timedwait - Merge semaphore::_wait and semaphore::_timedwait into single _wait method, taking a LARGER_INTEGER timestamp. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin/signal.h: Remove SI_QUEUE unimplemented commentCorinna Vinschen2017-08-031-2/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Revert "cygwin/signal.h: Remove SI_QUEUE unimplemented comment"Corinna Vinschen2017-08-032-17/+11
| | | | This reverts commit 54ed68a781fe8a36d08352503524e61534a25e07.
* cygwin/signal.h: Remove SI_QUEUE unimplemented commentCorinna Vinschen2017-08-032-11/+17
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: add explicit_bzero, elf.h changes to releaseYaakov Selkowitz2017-08-021-0/+4
| | | | Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Add elf.h to newlibYaakov Selkowitz2017-08-027-1890/+0
| | | | | | | This is copied from musl (MIT license). This is newer and more thorough than that of FreeBSD currently shipped only on Cygwin. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* cygwin: Export explicit_bzeroYaakov Selkowitz2017-08-022-1/+3
| | | | | | This was added to newlib together with timingsafe_*cmp but never exported. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* cygwin: generate Alt-Numpad characters independent of NumLock stateCorinna Vinschen2017-08-011-1/+7
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: add console issues to release notesCorinna Vinschen2017-07-311-0/+6
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: select: use UNICODE console functionsCorinna Vinschen2017-07-311-2/+2
| | | | | | | | | | | | For historical reasons peek_console was calling the functions PeekConsoleInputA and ReadConsoleInputA. However, these functions are not working correctly under at least codepage 65001 (UTF-8) on systems prior to Windows 10. Use PeekConsoleInputW and ReadConsoleInputW instead, which work correctly under all systems and all codepages. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: console: Use memset to clear an arrayCorinna Vinschen2017-07-311-3/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: clear screen using wide char functionCorinna Vinschen2017-07-311-1/+1
| | | | | | | | | FillConsoleOutputCharacterA doesn't work correctly in codepage 65001 (UTF-8). Looks like the character conversion function from ascii char to unicode char works incorrectly then. Use FillConsoleOutputCharacterW instead. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: add release notes for reparse point patchesCorinna Vinschen2017-07-241-0/+5
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: unify reparse point checking code into single functionCorinna Vinschen2017-07-243-89/+70
| | | | | | | | | | | | | | | | | So far we had two functions checking the content of a reparse point, readdir_check_reparse_point in fhandler_disk_file.cc for the sake of readdir, and symlink_info::check_reparse_point for the sake of generic path checking. * Rename check_reparse_point_target helper to check_reparse_point_string and convert to static function. * Create new check_reparse_point_target helper containing the core reparse point checking code * Just call check_reparse_point_target from readdir_check_reparse_point and symlink_info::check_reparse_point and only perform the unique task in those functions. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: fix formatting in check_reparse_point_targetCorinna Vinschen2017-07-241-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Fix resource leak in readdir reparse point handlingCorinna Vinschen2017-07-241-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: add fflush fix to release notesCorinna Vinschen2017-07-191-0/+13
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Bump DLL version to 2.8.3Corinna Vinschen2017-07-191-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Use errno instead of _impure_ptr->_errnoCorinna Vinschen2017-07-191-2/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Revert "errno: Stop using _impure_ptr->_errno completely"Corinna Vinschen2017-07-193-5/+6
| | | | | | | | This reverts commit 44b1746a41921533d27aca414a9188314cb725b6. Bad idea. _impure_ptr->_errno is used by newlib Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: 2.8.2: add missing release message textcygwin-2_8_2-releaseCorinna Vinschen2017-07-121-0/+6
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: document signal.h fixesYaakov Selkowitz2017-07-121-1/+4
| | | | Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* cygwin: export fls, flsl, flsllCorinna Vinschen2017-07-113-1/+7
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix guard on struct siginfo_tYaakov Selkowitz2017-07-101-2/+4
| | | | | | | Add line breaks to make it clearer that the struct packing applies to more than one struct. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Rename __in and __out in headers to avoid collision with Windows APIsDavid Macek2017-07-071-1/+1
| | | | | * string.h: Local variables in expansion of strdupa and strndupa * sys/wait.h: Fields in anonymous union in expansion of __wait_status_to_int
* Add ffsl(), ffsll(), fls(), flsl(), flsll()Sebastian Huber2017-07-051-22/+0
| | | | | | | Use compiler builtin for ffs(). Remove duplicate implementation from Cygwin. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Cygwin: fix signal.h with _POSIX_C_SOURCE=1Yaakov Selkowitz2017-07-041-0/+2
| | | | | | | | struct sigaction is POSIX.1-1990 but siginfo_t, which is used by its sa_sigaction member, is POSIX.1b-1993. Therefore it needs to be guarded as well, and as part of a union, the struct size is protected. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* add scandirat patch to release notesCorinna Vinschen2017-07-041-0/+13
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: scandirat: fix path given to scandirCorinna Vinschen2017-07-041-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Bump DLL minor versionCorinna Vinschen2017-07-041-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>