| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
the required number of colons.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(fhandler_pty_master::flush_to_slave): Ditto.
* fhandler_tty.cc (bytes_available): Define new function.
(fhandler_pty_common::bytes_available): Ditto.
(handler_pty_master::flush_to_slave): Ditto.
(fhandler_pty_master::process_slave_output): Call flush_to_slave () here. Use
bytes_available () rather than PeekNamedPipe. Cleanup sloppy logic.
(fhandler_pty_slave::read): Use bytes_available () rather than PeekNamedPipe.
(fhandler_pty_slave::ioctl): Ditto.
(fhandler_pty_master::ioctl): Ditto.
(fhandler_pty_master::cleanup): Remove ancient #if 0.
* select.cc (peek_pipe): Call flush_to_slave whenever we're checking for a pty
master.
|
|
|
|
|
|
| |
ENOENT if non-existent file got opened for reading only. Explain why.
* path.cc (path_conv::check): Stick to ENOENT if file has been opened
for informational purposes only. Add to comment.
|
|
|
|
|
| |
non-existant files on /dev, unless /dev itself doesn't exist on disk.
Add comment to explain why.
|
|
|
|
| |
than VirtualSize.
|
|
|
|
|
|
| |
(getpass): Rework to use /dev/tty in the first place. Install
_getpass_close_fd as pthread cleanup handler. Flush prompt explicitely.
Lock input and switch off signal input handling when reading password.
|
| |
|
|
|
|
| |
with new device::is_dev_resident() call.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(dev_on_fs): Set bit size.
(is_dev_resident): Define new method.
* devices.in: Use different method for labelling requested name for dev
storage: prefix it with a ='. Use an actual ':' to denote an internal device.
(exists_console): Avoid repeated test.
(exists_ntdev_silent): Rename from the less-descriptive exists_ntdevs.
(dev_dev_storage): Delete unneeded define.
* gendevices: Add a flag to each line denoting whether the device lives in /dev
space.
(generate): Handle special ":" case here for internal devices. Parse
=something_dev as requiring a storage location. Tack the rest of the line back
onto the reformulated "$rest".
* devices.cc: Regenerate.
|
|
|
|
|
|
| |
* fhandler_dev.cc (fhandler_dev::readdir): Set st_ino to device number.
* syscalls.cc (fhandler_base::stat_fixup): Ditto. Fix link count for
CD-ROM devices. Fix typo in comment.
|
|
|
|
|
|
| |
fhandler_base::set_ino_and_dev.
* syscalls.cc (fhandler_base::stat_fixup): Ditto. Accommodate name
change throughout. Fixup link count of console devices.
|
|
|
|
|
|
|
|
|
| |
(DEV_CYGDRIVE_MAJOR): Remove.
(iscygdrive_dev): Define.
* dtable.cc (fh_alloc): Accommodate above change.
* path.cc (path_conv::check): Use iscygdrive_dev to check for cygdrive.
* syscalls.cc (fhandler_base::set_ino_and_dev): Drop check for
DEV_CYGDRIVE_MAJOR from conditional.
|
|
|
|
|
|
|
| |
(DEV_DEV_MAJOR): Remove.
* dtable.cc (fh_alloc): Accommodate above change.
* syscalls.cc (set_ino_and_dev): Drop check for DEV_DEV_MAJOR from
conditional.
|
|
|
|
|
|
|
|
| |
* syscalls.cc (fhandler_base::set_ino_and_dev): New method to set
st_ino, st_dev, and st_rdev for devices in a single spot.
(fstat64): Call fhandler_base::set_ino_and_dev instead of setting
st_ino, st_dev, and st_rdev here.
(stat_worker): Ditto.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(fhandler_dev::close): Declare.
(fhandler_dev::fstat): Declare.
(fhandler_dev::fstatvfs): Declare.
(fhandler_cygdrive::fstatvfs): Declare.
* fhandler_dev.cc (fhandler_dev::open): New method.
(fhandler_dev::close): Ditto.
(fhandler_dev::fstat): Ditto.
(fhandler_dev::fstatvfs): Ditto.
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't fill
st_rdev.
(fhandler_cygdrive::fstatvfs): New method.
* path.h (path_conv::fs_got_fs): New method.
* mount.h (fs_info::got_fs): Change type to bool, make public.
|
|
|
|
| |
FS type.
|
|
|
|
|
|
|
|
|
|
|
| |
(dtable::fixup_after_exec): Use fixup_close() and detect when it was not
possible to open an inherited file handle.
(dtable::fixup_after_fork): Defensively close any file handles which were not,
for some reason, inheritable.
* dtable.h: Make #pragma once.
(dtable::fixup_close): Declare new function.
* fhandler_console.cc (fhandler_console::set_unit): Set I/O handles to NULL
when this function fails.
|
|
|
|
|
| |
code. Use device::type() to fetch dirent compatible device type.
Add comment.
|
|
|
|
|
|
|
|
|
|
|
|
| |
(device::dev_on_fs): Remove unneeded bit field. Just make a normal boolean.
(device::exists): Redefine function.
* devices.in: Move previous functions earlier since they are now only defined
static. Rename some functions due to an as-yet unresolved bug in gendevices.
Rename posix part of internal-only devices with a double-slash. gendevices
will eventuall translate that to a ":".
(device::parse): Rework to use dev pointer and dev_storage_end.
* devices.cc: Regenerate.
* gendevices: Translate "// to ": after shilka processing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* devices.h (device::exists_func): New member function pointer,
replacing noexpose.
(device::expose): Remove.
(device::exists_never): Declare.
(device::exists_ptys): Declare.
(device::exists_cons): Declare.
(device::exists_console): Declare.
(device::exists_nt_dev): Declare.
(device::exists): Declare.
* devices.in (dev_storage): Replace former noexpose values with
pointers to matching exists_XXX method.
(device::exists_never): New method.
(device::exists_ptys): New method.
(device::exists_cons): New method.
(device::exists_console): New method.
(device::exists_nt_dev): New method.
(device::exists): New method.
* fhandler_dev.cc (fhandler_dev::readdir): Replace call to
device::expose with call to device::exists and drop all further
existence filtering since it's done in device::exists now.
* path.cc (path_conv::check): Replace call to device::expose with call
to device::exists.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* devices.cc: Regenerate.
* devices.h (device::noexpose): New field.
(device::dev_on_fs): Make a bit field.
(get_major): Use proper type for declaration.
(expose): New field.
(ext_dev_storage): Delete declaration.
(dev_storage_size): Ditto.
(dev_storage): New declaration.
(dev_storage_end): Ditto.
* devices.in: Mark /dev/ptym*, /dev/com*, /dev/pipe, /dev/fifo, and "/dev" as
"no expose".
* fhandler.h (fhandler_dev::lastrealpos): Delete declaration.
(fhandler_dev::devidx): Declare new field.
* fhandler_disk_file.cc: Move fhandler_dev functions into fhandler_dev.cc.
* fhandler_dev.cc: Add includes needed for functions moved from
fhandler_disk_file.cc.
(dev_storage_scan_start): Define place to start listing devices.
(dev_storage_size): Define size of array to scan.
(fhandler_dev::fhandler_dev): Move here from fhandler_disk_file.cc.
(fhandler_dev::opendir): Ditto.
(fhandler_dev::readdir): Just check devidx for non-NULL to determine when to go
to disk for /dev content. Use dev_storage rather than ext_dev_storage.
Iterate over dev_storage using devidx pointer. Use accessor functions rather
than raw references to the device struct. Only increment dir->__d_position
when we are actually going to be returning something. Add debug_printf for
exit.
(fhandler_dev::rewinddir): Set devidx as appropriate depending on whether
there's a /dev on disk or not.
* gendevices: Don't mark dev_storage static but do put it in the _RDATA
section.
* path.cc (path_conv::check): Use new "device::expose()" function to decide to
forbid programs from referencing internal device types.
|
| |
|
| |
|
|
|
|
|
|
|
| |
(DEV_VIRTFS_MAJOR): Ditto.
* fhandler_dev.cc (fhandler_dev::readdir): Add comments. Tweak tests
for invisible devices. Don't print comX devices, only ttySX. Drop
requirement to call stat64.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* devices.h (DEV_DEV_MAJOR): Define.
(FH_DEV): Redefine in terms of DEV_DEV_MAJOR.
(ext_dev_storage): Declare.
(dev_storage_size): Declare.
(dev_dev_storage): Declare.
(dev_dev): Define.
(isdev_dev): Define.
* devices.in (dev_dev_storage): Activate.
(ext_dev_storage): Define as externally available pointer to
dev_storage.
(dev_storage_size): Define to contain number of dev_storage elements.
* dir.cc (rmdir): Handle /dev as always not empty.
* dtable.cc (fh_alloc): Handle DEV_DEV_MAJOR.
* fhandler.h (fhandler_dev): New class, derived from fhandler_disk_file.
(fhandler_union): Add fhandler_dev member.
* fhandler_disk_file.cc (class __DIR_mounts): Handle /dev directory
to make sure it always exists.
* fhandler_dev.cc: New file implementing /dev.
* globals.cc (ro_u_dev): New R/O unicode string.
* path.cc (path_conv::check): Handle FH_DEV device.
|
|
|
|
| |
opening a console actually associated with this process.
|
| |
|
|
|
|
| |
non-cygwin process. Let the Windows process deal with it itself.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(format_process_mountstuff): New function, derived from
format_process_mounts. Only open another user's user_info shared
memory area if the process is owned by another user. Actually
access the opened shared user_info to get the right mount table.
For other users, don't print remote cygdrive mount points. Print
mountinfo or mounts output depending on the bool mountinfo argument.
(format_process_mounts): Just call format_process_mountstuff with
mountinfo set to false.
(format_process_mountinfo): Ditto with mountinfo set to true.
* new-features.sgml (ov-new1.7.11): Add mountinfo.
|
| |
|
|
|
|
|
|
|
|
|
| |
* fhandler_clipboard.cc (cygcb_t): New type for Cygwin-specific
clipboard format.
(set_clipboard): Use new clipboard format to allow setting a timestamp.
(fhandler_dev_clipboard::fstat): New method. Read modification and
access timestamp as well as length from clipboard data.
(fhandler_dev_clipboard::read): Use new clipboard format.
|
|
|
|
|
|
|
|
|
|
| |
* times.cc (JITTER): Remove.
(gtod): Revert to process-local variable.
(hires_ms::nsecs): Just return system time to disallow discrepancy with
the OS.
(hires_ms::resolution): Return coarsest timer value from OS. Add
comment to explain why.
(clock_setres): Ditto.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* fork.cc (frok::parent): Call postfork to do all of the manipulation required
prior to calling pinfo::remember.
* pinfo.h (pinfo::set_rd_proc_pipe): Just set pinfo's rd_proc_pipe. Don't
bother setting it to NULL.
* sigproc.cc (child_info_spawn::wait_for_myself): Call postfork to set up
myself for waiting.
* spawn.cc (child_info_spawn::worker): Avoid now-unnecessary global lock.
Consistently test mode rather than chtype when making wr_proc_pipe decisions.
Call postfork() to set up stuff prior to pinfo::remember.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
(child_info_spawn::wait_for_myself): Move function to sigproc.cc.
* pinfo.cc (is_toplevel_proc): Delete unneeded variable.
* sigproc.cc (child_info_spawn::wait_for_myself): Move function from header to
here. Do all setup required to properly wait for top-level execed process to
exit.
* spawn.cc (child_info_spawn::worker): Attempt to properly handle _P_DETACH.
Set wr_proc_pipe if top-level process even when execing. Just call
wait_for_myself() to... wait for myself. Don't call cleanup twice.
|
| |
|
|
|
|
|
|
| |
(dtable::release): "Close" standard handle if appropriate.
* dcrt0.cc (dll_crt0_0): Fix minor switch formatting problem.
* fork.cc (frok::parent): Make minor comment indentation change.
|
| |
|
|
|
|
| |
possible infinite loop in hires_ms::timeGetTime_ns.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(child_info::rd_proc_pipe): Declare new field.
(child_info::wr_proc_pipe): Ditto.
(child_info::prefork): Declare new function, derived from previous pinfo
version.
* dcrt0.cc (child_info_fork::handle_fork): Close previous wr_proc_pipe when
appropriate and assign new one from passed-in child_info block.
(child_info_spawn::handle_spawn): Assign our wr_proc_pipe handle from passed-in
child_info block.
* fork.cc (child_info::prefork): Define new function.
(frok::child): Clear rd_proc_pipe and wr_proc_pipe so they will not be closed
by the child_info destructor.
(frok::parent): Use child_info prefork handling, outside of retry loop. Set
rd_proc_pipe in child's pinfo after successful CreateProcess. Eliminate
postfork call.
* globals.cc (my_wr_proc_pipe): Define/declare new variable.
* pinfo.cc (pinfo::pending_rd_proc_pipe): Delete.
(pinfo::pending_wr_proc_pipe): Ditto.
(pinfo::prefork): Ditto.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(pinfo::wait): Assume that rd_proc_pipe is set up correctly prior to call.
(_pinfo::alert_parent): Replace "wr_proc_pipe" with "my_wr_proc_pipe".
* pinfo.h (_pinfo::_wr_proc_pipe): Delete declaration.
(_pinfo::set_rd_proc_pipe): Define new function.
(pinfo::pending_rd_proc_pipe): Delete declaration.
(pinfo::pending_wr_proc_pipe): Ditto.
(pinfo::prefork): Ditto.
(pinfo::postfork): Ditto.
(pinfo::postexec): Ditto.
(pinfo::wr_proc_pipe): Ditto.
* sigproc.cc (child_info::child_info): Clear rd_proc_pipe and wr_proc_pipe.
(child_info::cleanup): Close rd_proc_pipe and wr_proc_pipe if necessary.
(child_info_fork::child_info_fork): Set forker_finished to NULL by default.
(child_info_spawn::child_info_spawn): Use my_wr_proc_pipe rather than
myself->wr_proc_pipe.
(child_info::sync): Ditto.
(child_info_spawn::cleanup): Call child_info::cleanup.
* spawn.cc (child_info_spawn::worker): Remove call to myself.prefork(). Set
wr_proc_pipe when execing or set up new rd_proc_pipe/wr_proc_pipe via
child_info::prefork when spawning. Remove call to pinfo::postexec. Set
rd_proc_pipe in child pinfo when spawning. Use my_wr_proc_pipe rather than
myself->wr_proc_pipe. Remove call to postfork.
|
|
|
|
|
|
|
|
|
| |
(pinfo::wait): Change some comments.
(pinfo::prefork): Move a comment.
(pinfo::postfork): Set pending_*_pipe variables to NULL if closed.
(pinfo::postexec): Use right name when closing handle.
(_pinfo::alert_parent): Ditto.
* sigproc.h (hold_everything): Remove debugging label.
|
| |
|
|
|
|
|
|
|
| |
* mkglobals_h: Ditto for generated globals.h file.
* globals.cc: Use specific NO_GLOBALS_H flag to control inclusion of globals.h.
* winsup.h: Honor NO_GLOBALS_H to control inclusion of globals.h. Make
clear_procimptoken extern inline so that it is only defined when needed.
|