* winnt.h: Fix several SUBLANG ID errors (ref:
http://msdn.microsoft.com/en-us/library/dd318693(VS.85).aspx).
(SUBLANG_UI_CUSTOM_DEFAULT): 0x05, not 0x03.
(SUBLANG_HAUSA_NIGERIA): Bad ID name, correct one is ...
(SUBLANG_HAUSA_NIGERIA_LATIN): ... this.
(SUBLANG_INUKTITUT_CANADA_LATIN): 0x02, not 0x01.
(SUBLANG_IRISH_IRELAND): 0x02, not 0x01.
(SUBLANG_LAO_LAO_PDR): Bad ID name, correct one is ...
(SUBLANG_LAO_LAO): ... this.
(SUBLANG_LOWER_SORBIAN_GERMANY): 0x02, not 0x01.
(SUBLANG_SAMI_SKOLT_FINLAND): 0x08, not 0x03.
(SUBLANG_SAMI_INARI_FINLAND): 0x09, not 0x03.
(SUBLANG_SYRIAC_SYRIA): define as SUBLANG_SYRIAC (what MSDN mentions).
(SUBLANG_TIGRIGNA_ERITREA): 0x02, not 0x01.
(SUBLANG_BENGALI_INDIA): 0x01, not 0x00.
(SUBLANG_BENGALI_BANGLADESH): 0x02, not 0x01.
(SUBLANG_PUNJABI_INDIA): 0x01, not 0x00.
(SUBLANG_PUNJABI_PAKISTAN): not defined in MSDN.
(SUBLANG_ROMANIAN_ROMANIA): 0x01, not 0x00.
(SUBLANG_ROMANIAN_MOLDOVA): not defined in MSDN.
is_volume_mountpoint. Return valid d_type value for underlying
reparse point type.
(readdir_get_ino): Don't rely on the handle set in pc.check. Open
file here if pc.handle() is NULL.
(fhandler_disk_file::readdir_helper): Try to set a correct d_type value
more diligent.
(fhandler_disk_file::readdir): Don't reset dirent_set_d_ino unless
we're really sure it's due to an untrusted FS. Simplify usage of
FileAttributes, which is 0 if buf is NULL, anyway. Set d_type
correctly for faked "." and ".." entries. Improve debug output.
* path.cc (symlink_info::check): Don't keep handle to volume mount
point open. Explain why.
Add note and xrefs to User's Guide chapters explaining restrictions
using the Win32 API.
* new-features.sgml (ov-new1.7.6): Add note about Win CWD.
* overview2.sgml (ov-hi-intro): Add note and xrefs about Win32 API
restrictions. Tone down flexibility.
* pathnames.sgml (pathnames-intro): Add xref to pathnames-win32-api
section.
(pathnames-win32-api): New section describing Win32 CWD restriction.
* setup2.sgml (setup-env-ov): New sub-section.
(setup-env-win32): Ditto, describing Win32 environment restriction.
Add "error" member.
(cwdstuff::get_error): New inline method.
(cwdstuff::get_error_desc): Declare.
(cwdstuff::set): Change first parameter to pointer to path_conv.
* path.cc (chdir): Drop doit. Align call to cwdstuff::set to
new arguments.
(cwdstuff::init): Only call cwdstuff::set if it's not already
initialized. Add comment. Drop third parameter in call to
cwdstuff::set.
(cwdstuff::set): Partially rewrite. Add lots of comments to explain
everything. Drop "doit" since it's not used anymore. Always create
new handle to CWD if not in a virtual path. Drop PEB locking when
reading PEB values in init phase. Check for accessibility to set
correct error code. Drop Vista workaround. Never write back into PEB.
Set Win32 CWD to \\?\PIPE\ on init. Simplify creation of win32 path.
Set new error member to a meaningful value.
(cwdstuff::get_error_desc): New method to generate error message
from cwd error code.
* spawn.cc (spawn_guts): Call cwdstuff::get_error_desc to create
more meaningful error message when not being able to start native
Win32 app due to CWD restrictions. When starting native Win32 app,
lock cwd and use in calls to CreateProcessW/CreateProcessAsUserW.
* hires.h: Change hires_us to hires_ns, with nanosecond resolution.
(hires_ns::primed_ft): Remove.
(hires_ns::nsecs): New prototype.
(hires_ns::usecs): Rewrite in terms of nsecs.
(hires_ns::resolution): New prototype.
* times.cc: Change hires_us to hires_ns.
(ntod): Declare.
(systime): Remove.
(hires_ns::prime): Increase resolution to nanoseconds.
(hires_ns::nsecs): Rename usecs to nsecs to reflect increased resolution.
Remove justdelta argument.
(hires_ns::resolution): New function.
(clock_gettime): Accept CLOCK_MONOTONIC.
Use EINVAL instead of ENOSYS per POSIX.1-2004.
(clock_getres): Ditto.
(clock_setres): Use EINVAL instead of ENOSYS to conform with other
implementations.
* strace.cc (strace::microseconds): Adjust for hires_ns.
* sysconf.cc (sca): Set _SC_MONOTONIC_CLOCK to _POSIX_MONOTONIC_CLOCK.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
(format_proc_filesystems): New function.
* mount.cc (fs_names): Move to global scope. Redefine as array
of { "name", block_device? } structs.
(fillout_mntent): Use name member of fs_names.
* mount.h (fs_names): New prototype.
relative DOS path conversion. Simplify fixing the path.
In CCP_POSIX_TO_WIN_W conversion, always drop long path prefix if path
fits into MAX_PATH. Explain why.
* libm/common/s_lrint.c (lrint): Annotate shift operations with
possible shift amount ranges, and use SAFE_RIGHT_SHIFT to avoid
undefined behaviour.
* libm/common/s_llrint.c (llrint): Likewise.
* libm/common/s_lround.c (lround): Correct some comments on ranges.
* libm/common/s_llround.c (llround): Likewise.