Chris Sutcliffe
89a45c6f61
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/oleacc.h (AccessibleObjectFromEvent): Correct definition.
Thank you to Rick Walsh for reporting the issue.
2010-08-24 22:41:36 +00:00
Chris Sutcliffe
6d480dc617
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winbase.h (MoveFileWithProcessA, MoveFileWithProgressW): Define.
2010-08-24 22:35:39 +00:00
Chris Sutcliffe
c7a5ff6c03
2010-08-24 Vinky <rabbit_vinky@users.sourceforge.net>
...
* include/winbase.h (OVERLAPPED): Correct definition.
2010-08-24 22:25:44 +00:00
Chris Sutcliffe
b075ce0ecd
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/winnt.h (IMAGE_NT_HEADERS32, IMAGE_NT_HEADERS64): Correct
definition.
Thank you to Pasi Ruokola for reporting the issue.
2010-08-24 22:20:33 +00:00
Chris Sutcliffe
a5791e0e69
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* include/exdisp.h (get_RegisterAsBrowser): Fix typo.
Thank you to cheznonnon for reporting the issue.
2010-08-24 22:10:28 +00:00
Chris Sutcliffe
a3a74aa453
2010-08-24 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/ws2_32.def: Regenerate using gendef on a Win7 machine.
2010-08-24 22:05:38 +00:00
Chris Sutcliffe
af02b239ea
2010-08-24 Ozkan Sezer <sezero@users.sourceforge.net>
...
* 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.
2010-08-24 21:26:51 +00:00
Chris Sutcliffe
57bcacf206
2010-08-24 LRN <lrn1986@gmail.com>
...
* include/mmreg.h (MPEGLAYER3WAVEFORMAT, WAVE_FORMAT_UNKNOWN,
WAVE_FORMAT_PCM, WAVE_FORMAT_ADPCM, WAVE_FORMAT_IEEE_FLOAT,
WAVE_FORMAT_VSELP, WAVE_FORMAT_IBM_CVSD, WAVE_FORMAT_ALAW,
WAVE_FORMAT_MULAW, WAVE_FORMAT_OKI_ADPCM, WAVE_FORMAT_DVI_ADPCM,
WAVE_FORMAT_MEDIASPACE_ADPCM, WAVE_FORMAT_SIERRA_ADPCM,
WAVE_FORMAT_G723_ADPCM, WAVE_FORMAT_DIGIFIX, WAVE_FORMAT_DIALOGIC_OKI_ADPCM,
WAVE_FORMAT_MEDIAVISION_ADPCM, WAVE_FORMAT_CU_CODEC,
WAVE_FORMAT_YAMAHA_ADPCM, WAVE_FORMAT_SONARC,
WAVE_FORMAT_DSPGROUP_TRUESPEECH, WAVE_FORMAT_ECHOSC1,
WAVE_FORMAT_AUDIOFILE_AF36, WAVE_FORMAT_APTX, WAVE_FORMAT_AUDIOFILE_AF10,
WAVE_FORMAT_PROSODY_1612, WAVE_FORMAT_LRC, WAVE_FORMAT_DOLBY_AC2,
WAVE_FORMAT_GSM610, WAVE_FORMAT_MSNAUDIO, WAVE_FORMAT_ANTEX_ADPCME,
WAVE_FORMAT_CONTROL_RES_VQLPC, WAVE_FORMAT_DIGIREAL, WAVE_FORMAT_DIGIADPCM,
WAVE_FORMAT_CONTROL_RES_CR10, WAVE_FORMAT_NMS_VBXADPCM,
WAVE_FORMAT_ROLAND_RDAC, WAVE_FORMAT_ECHOSC3, WAVE_FORMAT_ROCKWELL_ADPCM,
WAVE_FORMAT_ROCKWELL_DIGITALK, WAVE_FORMAT_XEBEC, WAVE_FORMAT_G721_ADPCM,
WAVE_FORMAT_G728_CELP, WAVE_FORMAT_MSG723, WAVE_FORMAT_MPEG,
WAVE_FORMAT_RT24, WAVE_FORMAT_PAC, WAVE_FORMAT_MPEGLAYER3,
WAVE_FORMAT_LUCENT_G723, WAVE_FORMAT_CIRRUS, WAVE_FORMAT_ESPCM,
WAVE_FORMAT_VOXWARE, WAVE_FORMAT_CANOPUS_ATRAC, WAVE_FORMAT_G726_ADPCM,
WAVE_FORMAT_G722_ADPCM, WAVE_FORMAT_DSAT, WAVE_FORMAT_DSAT_DISPLAY,
WAVE_FORMAT_VOXWARE_BYTE_ALIGNED, WAVE_FORMAT_VOXWARE_AC8,
WAVE_FORMAT_VOXWARE_AC10, WAVE_FORMAT_VOXWARE_AC16,
WAVE_FORMAT_VOXWARE_AC20, WAVE_FORMAT_VOXWARE_RT24,
WAVE_FORMAT_VOXWARE_RT29, WAVE_FORMAT_VOXWARE_RT29HW,
WAVE_FORMAT_VOXWARE_VR12, WAVE_FORMAT_VOXWARE_VR18,
WAVE_FORMAT_VOXWARE_TQ40, WAVE_FORMAT_SOFTSOUND, WAVE_FORMAT_VOXWARE_TQ60,
WAVE_FORMAT_MSRT24, WAVE_FORMAT_G729A, WAVE_FORMAT_MVI_MV12,
WAVE_FORMAT_DF_G726, WAVE_FORMAT_DF_GSM610, WAVE_FORMAT_ISIAUDIO,
WAVE_FORMAT_ONLIVE, WAVE_FORMAT_SBC24, WAVE_FORMAT_DOLBY_AC3_SPDIF,
WAVE_FORMAT_ZYXEL_ADPCM, WAVE_FORMAT_PHILIPS_LPCBB, WAVE_FORMAT_PACKED,
WAVE_FORMAT_RHETOREX_ADPCM, WAVE_FORMAT_IRAT, WAVE_FORMAT_VIVO_G723,
WAVE_FORMAT_VIVO_SIREN, WAVE_FORMAT_DIGITAL_G723,
WAVE_FORMAT_CREATIVE_ADPCM, WAVE_FORMAT_CREATIVE_FASTSPEECH8,
WAVE_FORMAT_CREATIVE_FASTSPEECH10, WAVE_FORMAT_QUARTERDECK,
WAVE_FORMAT_FM_TOWNS_SND, WAVE_FORMAT_BTV_DIGITAL, WAVE_FORMAT_VME_VMPCM,
WAVE_FORMAT_OLIGSM, WAVE_FORMAT_OLIADPCM, WAVE_FORMAT_OLICELP,
WAVE_FORMAT_OLISBC, WAVE_FORMAT_OLIOPR, WAVE_FORMAT_LH_CODEC,
WAVE_FORMAT_NORRIS, WAVE_FORMAT_ISIAUDIO,
WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS, WAVE_FORMAT_DVM, WAVE_FORMAT_RAW_AAC1,
WAVE_FORMAT_MPEG_HEAAC, WAVE_FORMAT_MPEG_ADTS_AAC, WAVE_FORMAT_DRM,
WAVE_FORMAT_DTS, WAVE_FORMAT_WMAVOICE9, WAVE_FORMAT_WMASPDIF,
WAVE_FORMAT_WMAUDIO_LOSSLESS, WAVE_FORMAT_WMAUDIO2, WAVE_FORMAT_WMAUDIO3,
WAVE_FORMAT_MPEG_LOAS, WAVE_FORMAT_RAW_SPORT, WAVE_FORMAT_ESST_AC3,
WAVE_FORMAT_DTS2): Define.
* include/msacm.h (HACMDRIVERID, HACMDRIVER, HACMSTREAM, HACMOBJ,
ACMSTREAMHEADER, WAVEFILTER, acmDriverAddA, acmDriverAddW, acmDriverRemove,
acmMetrics, acmStreamOpen, acmStreamSize, acmStreamPrepareHeader,
acmStreamUnprepareHeader, acmStreamReset, acmStreamClose, acmStreamConvert):
Define.
2010-08-24 19:09:50 +00:00
Corinna Vinschen
48f6c6c664
* include/cygwin/version.h: Fix comment.
2010-08-24 15:25:46 +00:00
Corinna Vinschen
8ae578d6ae
* external.cc (cygwin_internal): In CW_CVT_MNT_OPTS case, initialize
...
flags with *pflags to restore original behaviour.
2010-08-24 15:11:24 +00:00
Chris Sutcliffe
bfb9c22649
2010-08-23 LRN <lrn1986@gmail.com>
...
* include/winbase.h (SYMBOLIC_LINK_FLAG_DIRECTORY, FILE_NAME_NORMALIZED,
FILE_NAME_OPENED, VOLUME_NAME_DOS, VOLUME_NAME_GUID, VOLUME_NAME_NONE,
VOLUME_NAME_NT, FILE_BASIC_INFO, FILE_STANDARD_INFO, FILE_NAME_INFO,
FILE_STREAM_INFO, FILE_COMPRESSION_INFO, FILE_ATTRIBUTE_TAG_INFO,
FILE_ID_BOTH_DIR_INFO, FILE_REMOTE_PROTOCOL_INFO, FILE_INFO_BY_HANDLE_CLASS,
GetFileInformationByHandleEx, GetFinalPathNameByHandleA,
GetFinalPathNameByHandleW): Define.
2010-08-24 00:15:51 +00:00
Jeff Johnston
8fcd3c7367
Fix location of this file to be where it was initially intended.
2010-08-23 15:51:27 +00:00
Corinna Vinschen
16e1c98c1b
* ldd.cc (report): Drop long pathname considerations which result in
...
invalid path, now that this is done in cygwin_conv_path.
2010-08-23 11:04:04 +00:00
Chris Sutcliffe
59ecc5766c
2010-08-22 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/CheckConflicts.sh: New file.
2010-08-22 04:03:33 +00:00
Chris Sutcliffe
f6ce088fb3
2010-08-21 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/kernel32.def (CopyLZFile, GetExpandedNameA, GetExpandedNameW, LZClose,
LZCopy, LZInit, LZOpenFileA, LZOpenFileW, LZRead, LZSeek, OpenProcessToken,
OpenThreadToken, RegCloseKey, RegCreateKeyExA, RegCreateKeyExW,
RegDeleteKeyExA, RegDeleteKeyExW, RegDeleteValueA, RegDeleteValueW,
RegEnumKeyExA, RegEnumKeyExW, RegEnumValueA, RegEnumValueW, RegFlushKey,
RegGetKeySecurity, RegLoadKeyA, RegLoadKeyW, RegNotifyChangeKeyValue,
RegOpenCurrentUser, RegOpenKeyExA, RegOpenKeyExW, RegOpenUserClassesRoot,
RegQueryInfoKeyA, RegQueryInfoKeyW, RegQueryValueExA, RegQueryValueExW,
RegRestoreKeyA, RegRestoreKeyW, RegSetKeySecurity, RegSetValueExA,
RegSetValueW, RegUnLoadKeyA, RegUnLoadKeyW, RtlCaptureStackBackTrace,
RtlFillMemory, RtlMoveMemory, RtlZeroMemory, SetThreadToken): Remove
conflicting definition.
* lib/th32.def: Remove.
* lib/ntdll.def (RtlUnwind): Remove conflicting definition.
* lib/version.def (VerLanguageNameA, VerLanguageNameW): Remove conflicting
definition.
2010-08-22 03:52:59 +00:00
Chris Sutcliffe
387589c4a4
2010-08-21 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/kernel32.def (CreateProcessAsUserW): Remove definition.
2010-08-21 19:21:33 +00:00
Corinna Vinschen
43c394deb6
* Makefile.in (DLL_IMPORTS): Link against advapi32.a before kernel32.a.
2010-08-21 18:57:36 +00:00
Ralf Wildenhues
9cbecf07a9
Fix misquoting in stdint.m4.
...
config/:
PR target/45084
* stdint.m4 (GCC_HEADER_STDINT): Use m4 quotes for arguments
of AC_MSG_ERROR.
libdecnumber/:
* configure: Regenerate.
bfd/:
* configure: Regenerate.
2010-08-21 12:34:06 +00:00
Christopher Faylor
ff7fca61df
* cygthread.cc: Update copyright.
2010-08-20 15:28:28 +00:00
Corinna Vinschen
a6fc3a61c2
* path.cc (path_conv::check): Close handle in conv_handle if we're
...
following a symlink.
2010-08-20 14:29:56 +00:00
Corinna Vinschen
74f50846a9
* endian.h (htobe16, htobe32, htobe64, be16toh, be32toh, be64toh,
...
htole16, htole32, htole64, le16toh, le32toh, le64toh): Define.
2010-08-20 12:18:47 +00:00
Corinna Vinschen
a6c83569dc
* fhandler_disk_file.cc (readdir_check_reparse_point): Rename from
...
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.
2010-08-20 11:18:58 +00:00
Corinna Vinschen
dd442880af
* fhandler_disk_file.cc (fhandler_disk_file::fstatvfs): Revert usage
...
of get_stat_handle () to get_handle (). Add comment to explain why.
* syscalls.cc (statvfs): Drop using PC_KEEP_HANDLE.
2010-08-20 08:52:25 +00:00
Chris Sutcliffe
fb20493f3d
2010-08-20 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
...
* lib/kernel32.def: Regenerate using gendef on a Win7 machine.
2010-08-20 04:14:18 +00:00
Corinna Vinschen
e8c4b3427c
* include/winnt.h: Define FILE_ATTRIBUTE_VIRTUAL. Change
...
FILE_ATTRIBUTE_VALID_FLAGS accordingly.
* include/ddk/winddk.h: Ditto.
2010-08-19 16:08:56 +00:00
Corinna Vinschen
f43eed1c08
* new-features.sgml (ov-new1.7.7): New section.
...
* pathnames.sgml: Throughout, align style of screen elements.
Throughout, make all emphasis elements bold.
(pathnames-win32-api): Rewrite section.
2010-08-19 10:35:25 +00:00
Corinna Vinschen
e652eb9230
* external.cc (sync_wincwd): New function.
...
(cygwin_internal): Rename CW_SETCWD to CW_SYNC_WINCWD. Call
sync_wincwd from here.
* include/sys/cygwin.h (cygwin_getinfo_types): Rename CW_SETCWD to
CW_SYNC_WINCWD.
2010-08-19 10:14:31 +00:00
Chris Sutcliffe
1087b2462f
2010-08-18 Ladislav Michl <ladis@users.sourceforge.net>
...
* include/winbase.h (SYMBOLIC_LINK_FLAG_DIRECTORY, CreateSymbolicLinkW,
CreateSymbolicLinkA, CreateSymbolicLink): Define
2010-08-18 23:34:08 +00:00
Christopher Faylor
590ad4793f
* external.cc (CW_SETCWD): New option.
...
* include/cygwin/version.h: Bump api minor to 231.
* include/sys/cygwin.h (CW_SETCWD): Define.
2010-08-18 19:15:37 +00:00
Corinna Vinschen
6a84234cd2
* pathnames.sgml (pathnames-win32-api): Try to use a more clear wording.
2010-08-18 15:28:15 +00:00
Corinna Vinschen
ce9898da68
* syscalls.cc (rename): Fix renaming file-based devices.
2010-08-18 15:21:35 +00:00
Corinna Vinschen
75a3b85877
* exceptions.cc (open_stackdumpfile): Don't try to open file if we
...
have no filesystem based CWD. Add comment.
* path.cc (cwdstuff::set): Set CWD handle to NULL if CWD is a virtual
path. Simplify matching comment.
2010-08-18 14:22:07 +00:00
Corinna Vinschen
d15ed91c04
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Set st_rdev
...
to correct device number for fs_special devices.
2010-08-18 10:10:14 +00:00
Keith Marshall
0f0a0b7361
Make PATH_MAX consistent with MAX_PATH
2010-08-17 21:18:21 +00:00
Corinna Vinschen
adb4e0f3de
* include/cygwin/version.h: Bump DLL minor version number to 6.
2010-08-16 13:41:19 +00:00
Corinna Vinschen
f5a51f9187
* pipe.cc (fhandler_pipe::open): Duplicate content of opened pipe
...
fhandler before calling dup method.
2010-08-14 11:16:09 +00:00
Corinna Vinschen
5578c33733
* mount.cc (from_fstab): Fix potentially fatal typo.
2010-08-13 19:10:22 +00:00
Corinna Vinschen
a016fed8ba
* faq-programming.xml (faq.programming.win32-api): Remove simplicity.
...
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.
2010-08-13 11:52:13 +00:00
Corinna Vinschen
260b80740e
* cygheap.h (class cwdstuff): Make drive_length private.
...
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.
2010-08-13 11:51:54 +00:00
Yaakov Selkowitz
7aba919b5e
* libc/include/sys/dir.h: New BSD-compatibility header.
2010-08-11 18:14:54 +00:00
Corinna Vinschen
841003a9b3
* new-features.sgml (ov-new1.7.6): Document "bind" option.
...
* pathnames.sgml (mount-table): Add "bind" option with example.
2010-08-11 11:12:10 +00:00
Corinna Vinschen
68a178b37c
* mount.cc (do_mount): Don't treat "bind" mount as remote mount.
...
(mount_entries): Drop the "bind" option from output.
* utils.sgml (mount): Match examples to actual mount output. Add
"bind" option and add example.
2010-08-11 11:01:14 +00:00
Corinna Vinschen
a5fe426282
* mount.cc (struct opt): Add "bind" option.
...
(mount_info::from_fstab_line): Handle "bind" option.
(fillout_mntent): Add "bind" option to mnt_opts.
(mount): Handle "bind" option.
* include/sys/mount.h (MOUNT_BIND): New mount flag.
2010-08-11 10:58:06 +00:00
Yaakov Selkowitz
ac8050277c
* mingw: Use sysroot, if present, for mingw_dir.
2010-08-11 03:01:55 +00:00
Christopher Faylor
92514fd261
* sigproc.cc (init_sig_pipe): Add retry loop.
2010-08-10 16:44:37 +00:00
Christopher Faylor
514fdad34d
* cygheap.h (cygheap_fdmanip): Delete fh and use fd index into cygheap->fdtab
...
throughout.
(cygheap_fdnew): Replace fh by using fd index into cygheap->fdtab throughout.
(cygheap_fdget): Ditto. (cygheap_fdenum): Ditto.
2010-08-09 16:53:35 +00:00
Yaakov Selkowitz
6d27f82985
* new-features.sgml (ov-new1.7.6): Document POSIX Monotonic Clock.
2010-08-09 16:49:28 +00:00
Yaakov Selkowitz
b150f5236b
Implement POSIX.1-2004 Monotonic Clock.
...
* 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.
2010-08-09 16:47:48 +00:00
Corinna Vinschen
f717289618
* libc/include/sys/features.h: Define _POSIX_MONOTONIC_CLOCK for Cygwin.
2010-08-09 08:29:22 +00:00
Corinna Vinschen
95fe28c61e
* new-features.sgml (ov-new1.7.6): Document /proc/filesystems.
2010-08-09 08:20:51 +00:00