Sebastian Lackner
d48e3a0bea
kernel32: Fix file handle leak in exec_process (Coverity).
2015-03-17 14:52:08 +09:00
Austin English
fa80425242
kernel32: Add GetSystemFirmwareTable stub.
2015-01-26 12:06:04 +01:00
Hans Leidekker
b51476ad42
kernel32: Retrieve the system affinity mask from ntdll.
2015-01-21 15:30:37 +01:00
Qian Hong
bfd088dbc6
kernel32: Fixed buffer size on 64bit in IsWow64Process.
2015-01-16 20:15:32 +01:00
André Hentschel
e404d7fea3
kernel32: Set COMPUTERNAME environment variable.
2014-10-28 14:04:54 +09:00
Sebastian Lackner
d74c9e3ec2
kernel32: Implement GetProcessDEPPolicy.
2014-10-21 18:51:19 +09:00
Alexandre Julliard
ea1689e7b0
kernel32: Add detection of fake dlls when determining a binary type.
2014-08-22 12:44:24 +02:00
Austin English
fd6c5490df
kernel32: Add a stub for UnregisterApplicationRestart.
2014-06-18 16:31:14 +02:00
Alexandre Julliard
598c5816d9
kernel32: Don't allocate FLS index 0.
2014-03-28 17:46:03 +01:00
Austin English
77bd74fa25
kernel32: Improve GetNumaHighestNodeNumber stub.
2014-03-18 19:05:33 +01:00
Alexandre Julliard
7066ce0b1e
kernel32: Set correct binary type for COM and PIF files.
2014-02-12 19:15:11 +01:00
André Hentschel
8439cc9da4
kernel32: Use boolean return values in boolean functions.
2014-01-30 14:51:37 +01:00
Austin English
ea765ae005
kernel32: Quiet a noisy FIXME.
2014-01-29 14:58:35 +01:00
Alexandre Julliard
1e78c99388
kernel32: Validate the architecture of newly created processes on the server side.
2013-11-22 12:32:48 +01:00
Alexandre Julliard
f2c54dba01
kernel32: Determine the module architecture for all binary types.
2013-11-22 12:25:30 +01:00
Frédéric Delanoy
baf491b80b
kernel32: Use BOOL type where appropriate.
2013-10-03 12:54:37 +02:00
Frédéric Delanoy
6918c86544
kernel32: Use BOOL type where appropriate.
2013-09-26 21:34:13 +02:00
Alexandre Julliard
3799d55d9b
ntdll: Implement RtlExitUserProcess.
2013-07-19 12:15:15 +02:00
Alexandre Julliard
c01574d426
kernel32: Acquire the loader lock before shutting down the process.
2013-07-08 15:15:43 +02:00
Dmitry Timoshkov
bfcdf6df8e
kernel32: Terminate threads before unloading DLLs on process exit.
2013-05-17 12:29:41 +02:00
Dmitry Timoshkov
77f222505c
kernel32: Hold PEB lock during process exit.
2013-05-07 11:26:02 +02:00
Dmitry Timoshkov
37f7e7ea0c
kernel32: TerminateProcess unlike NtTerminateProcess is supposed to fail with process == 0.
2013-04-12 11:49:17 +02:00
Alexandre Julliard
9181b7e876
kernel32: Fetch the system information only once the memory limits are correct.
2013-04-04 13:28:45 +02:00
Alexandre Julliard
62f22dd4e3
kernel32: Retrieve the system info from ntdll on startup.
2013-01-09 12:15:22 +01:00
Maarten Lankhorst
7457f37e4a
ntdll: Set SO_PASSCRED before connecting to eliminate a race condition in obtaining server_pid.
2012-10-18 19:31:15 +02:00
Piotr Caban
c6ac0d0fcc
kernel32: Added GetLogicalProcessorInformation implementation.
2012-09-04 16:15:56 +02:00
Austin English
b4432a6274
kernel32: Only print a fixme once for FlushProcessWriteBuffers.
2012-05-03 11:51:38 +02:00
Austin English
80ef24b057
kernel32: Add a stub for FlushProcessWriteBuffers.
2012-05-02 20:11:54 +02:00
Alexandre Julliard
e31dd6dba1
kernel32: Only change the Unix current after exec_process to make sure it's inherited properly.
2012-01-31 13:44:40 +01:00
Alexandre Julliard
fe7652d0af
kernel32: Don't run a nonexistent builtin from CreateProcess when filename is not specified.
2011-12-14 19:35:10 +01:00
Ken Thomases
5bac5ee26e
kernel32: Use double-fork to avoid leaving zombie processes.
2011-12-01 10:27:38 +01:00
Ken Thomases
f658feb70f
kernel32: No need to reset SIGCHLD because we're not changing it anymore.
2011-12-01 10:11:06 +01:00
Alex Henrie
3aff781f63
kernel32: Output message to stderr in current Unix codepage.
...
Fixes a bug in which the command "wine /." outputs a garbled error message in languages other than English.
Supersedes "kernel32: Output message to stderr in UTF-8"
2011-10-26 12:41:34 +02:00
Marcus Meissner
615e9572f1
kernel32: Avoid shadowing variables "a", "nt" and "fd".
2011-10-24 12:34:52 +02:00
Austin English
d4ec0a19c0
kernel32: Add a stub for GetProcessDEPPolicy.
2011-10-20 11:06:22 +02:00
Francois Gouget
a2af890483
kernel32: Fix the NT path returned by QueryFullProcessImageName().
2011-10-04 15:23:03 -05:00
Alexandre Julliard
3e4a9cb4d4
kernel32: Include system headers before Windows headers.
2011-09-06 13:25:50 +02:00
Francois Gouget
3b239dbc62
kernel32: Implement K32GetProcessImageFileNameA().
2011-08-05 15:22:47 +02:00
Austin English
1344aec642
kernel32: Stub a few of the numa functions.
2011-06-28 11:57:50 -05:00
Alexandre Julliard
1b0d2330c9
kernel32: Create an orphaned process in exec_process so that all initialization is done anew in the child process.
2011-06-16 22:46:25 +02:00
Austin English
e701ca90aa
kernel32: Add a stub for RegisterApplicationRecoveryCallback.
2011-05-23 13:16:25 +02:00
Austin English
ac2c5039c9
kernel32: Add a stub for ApplicationRecoveryInProgress.
2011-05-23 13:16:25 +02:00
Austin English
d7c9723bc1
kernel32: Add a stub for ApplicationRecoveryFinished.
2011-05-23 13:16:24 +02:00
Jacek Caban
8379893f96
kernel32: Moved K32EnumProcessModules to module.c.
2011-05-12 14:28:58 +02:00
Jacek Caban
4ed94f7939
kernel32: Moved GetProcessMemoryInfo implementation to kernel32.
2011-05-12 14:28:45 +02:00
Jacek Caban
c1c70c62cb
kernel32: Moved QueryWorkingSet and QueryWorkingSetEx implementation to kernel32.
2011-05-11 14:56:49 +02:00
Jacek Caban
362a7d571e
kernel32: Moved EnumProcessModules implementation to kernel32.
2011-05-10 14:04:55 +02:00
Jacek Caban
1fa36c85bd
kernel32: Moved EnumProcesses implementation to kernel32.
2011-05-04 17:26:45 +02:00
Jacek Caban
25023c1302
psapi: Forward EmptyWorkingSet implementation to kernel32.
2011-04-19 18:29:24 +02:00
Alexandre Julliard
baa04014eb
ntdll: Implement the ProcessAffinityMask case in NtQueryInformationProcess.
2011-04-14 19:57:34 +02:00
Jacek Caban
81aa05eab6
kernel32: Moved GetProcessImageFileName implementation from psapi to kernel32.
2011-04-08 17:06:46 +02:00
Maarten Lankhorst
8b163d6fb6
kernel32: CreateProcessA should not call CreateProcessW directly.
2011-03-17 10:58:24 +01:00
Igor Egorov
b970462825
kernel32: Add stderr redirection for native Unix programs started from Windows program.
2011-02-15 17:24:26 +01:00
Henri Verbeet
4c200a2050
kernel32: Fix some memory leaks in set_wow64_environment().
2010-12-22 12:48:47 +01:00
Marcus Meissner
a601c75db3
kernel32: Fixed size to GetEnvironmentVariableW.
2010-12-17 13:26:01 +01:00
Alexandre Julliard
01af5452c5
kernel32: Update the environment variables that vary across 32-bit/64-bit/Wow64.
2010-12-14 22:48:44 +01:00
Ken Thomases
47dea9b670
loader: On Mac, reserve the process's original thread for the frameworks.
...
The frameworks expect the original thread to run its run loop, so input
sources (like distributed notifications) get processed. For example,
Core Audio on Snow Leopard doesn't track changes in the default ouput
device, such as when headphones are plugged in, without this.
2010-11-16 11:47:58 +01:00
Detlef Riekenberg
41bd5d4efa
kernel32: Add a stub for SetProcessDEPPolicy.
2010-11-12 15:49:48 +01:00
Andrew Nguyen
6d605e68f4
kernel32: Make the return type of LoadModule match the Windows SDK.
2010-10-11 17:11:28 +02:00
Austin English
e99612c4c8
kernel32: Add a stub for GetSystemDEPPolicy.
2010-09-22 12:47:39 +02:00
Eric Pouech
45ade6c2f5
ntdll: Allocate a console (without renderer) when starting a program from unix console.
2010-09-01 14:01:03 +02:00
André Hentschel
0029e64e4e
kernel32: Better describe an error.
2010-08-30 11:26:29 +02:00
Juan Lang
5e87ca772e
kernel32: Implement GetErrorMode/SetErrorMode on top of NTDLL.
2010-08-16 16:39:58 +02:00
Paul Chitescu
2e97746340
kernel32: Declare and add stubs for GetLogicalProcessorInformation(Ex).
2010-07-20 12:56:26 +02:00
Francois Gouget
7bf45b4c35
kernel32: GetProcessDword() is unused so remove it.
...
We use krnl386.exe16's implementation instead.
2010-06-24 10:35:21 +02:00
Alexandre Julliard
2b99e1c17d
kernel32: Make sure we always have a valid process title.
2010-06-08 11:53:58 +02:00
Alexandre Julliard
a10e9ba092
kernel32: Unalign the stack on process startup to work around Doom3 bug.
2010-05-28 11:20:28 +02:00
Alexandre Julliard
775e5f7b3e
kernel32: Reset stdio handles when they are closed.
2010-05-26 23:16:34 +02:00
Alexandre Julliard
f3831cf2cb
configure: Rename the 64-bit loader to wine64 and keep wine always for the 32-bit loader.
...
This provides better backwards compatibility when running with a
32-bit prefix.
2010-05-17 12:42:30 +02:00
Alexandre Julliard
ac69fcb14f
server: Check that the prefix type can support the client architecture.
2010-05-04 20:27:20 +02:00
Marcus Meissner
35dfd34a9f
kernel32: Initialize env (Coverity).
2010-03-31 11:44:30 +02:00
Alexandre Julliard
02aef1c3b8
kernel32: Increase the wineboot timeout.
2010-03-30 16:55:11 +02:00
Alexandre Julliard
be0db98a23
kernel32: Fix processing of spaces in command line for builtin exes.
2010-03-29 19:37:35 +02:00
Alexandre Julliard
808c29b908
kernel32: Add support for starting binaries in 32/64-bit mode from the other mode.
2010-03-29 17:57:15 +02:00
André Hentschel
a9a7d963c2
kernel32: Make process traces aware of 64-bit.
2010-03-25 16:08:27 +01:00
Alexandre Julliard
c7bed19c0b
kernel32: Don't try to open builtin exe files during CreateProcess, only check the path syntax.
2010-03-18 13:46:22 +01:00
Reece Dunn
1b46c0660d
kernel32/tests: Add a test case for calling TlsFree on a freed index.
2010-03-03 11:49:35 +01:00
Alexandre Julliard
6beb82e2d6
kernel32: Append the user PATH value to the system one.
2010-01-28 14:53:24 +01:00
Alexandre Julliard
17dea24f48
kernel32: Make sure the volatile environment is always loaded.
2010-01-28 13:35:03 +01:00
Alexandre Julliard
0daf0528da
kernel32: Load USERNAME and USERPROFILE from the volatile environment.
2010-01-28 13:34:05 +01:00
Alexandre Julliard
2c0e31cfdc
kernel32: Treat PWD as a special environment variable.
2010-01-28 13:29:53 +01:00
Michael Stefaniuc
4f60b6bf91
kernel32: Add missing stdarg.h includes.
2009-12-31 12:12:17 +01:00
Alexandre Julliard
8268ed9783
kernel32: Do not include 16-bit headers in 32-bit files.
2009-12-30 16:21:56 +01:00
Andrew Nguyen
9294882b94
kernel32: Ignore empty environment values from registry.
2009-12-24 17:00:08 +01:00
Andrew Nguyen
542feda6b8
ntdll: Use the HKCU\Volatile Environment key when generating the initial process environment.
2009-12-24 16:59:00 +01:00
Dmitry Timoshkov
2536bfd1d8
kernel32: Explicitly treat the current working directory name as a unix one.
2009-12-04 14:42:05 +01:00
Paul Chitescu
590cc1ad55
kernel32: Reduce registry access to KEY_READ wherever possible.
2009-11-30 16:33:54 +01:00
Alexandre Julliard
a045122754
kernel32: Pass the exe name as argument to FormatMessage.
2009-11-29 16:42:50 +01:00
Alexandre Julliard
c9e25dbe35
kernel32: Set the 64-bit flag for builtin executables based on their load directory.
2009-10-28 11:09:20 +01:00
Alexandre Julliard
4313c95526
kernel32: Retrieve the executable information as soon as we open the file.
2009-10-28 11:03:05 +01:00
Alexandre Julliard
28f13f83a6
kernel32: Add a structure to store all the information about an executable.
2009-10-28 11:03:04 +01:00
Alexandre Julliard
072b737059
kernel32: Specify the full application path when starting wineboot.exe.
2009-10-28 10:55:35 +01:00
Alexandre Julliard
c9689897d9
kernel32: Create the syswow64 directory if necessary.
2009-10-22 19:52:12 +02:00
Alexandre Julliard
f86d10ffb6
kernel32: Make sure the 32/64-bit state of the wineprefix matches the binary we are running.
2009-10-21 19:45:17 +02:00
Alexandre Julliard
87894c5f7b
kernel32: Use the PWD variable to set the initial current directory.
2009-10-15 12:06:23 +02:00
Stefan Dösinger
282cc71aed
kernel32: Make some functions hookable.
2009-10-14 12:21:05 +02:00
Alexandre Julliard
e0ce6dc32e
kernel32: Move Get/SetProcessDword to kernel16.c.
2009-10-08 11:12:21 +02:00
Alexandre Julliard
6404817de4
kernel32: Move the 16-bit handle functions to kernel16.c.
2009-10-08 11:12:14 +02:00
Alexandre Julliard
b6e0b3428d
kernel32: Move the 16-bit thread and process functions to kernel16.c.
2009-10-08 11:11:45 +02:00
Alexandre Julliard
c9d85dd576
ntdll: Route the process startup through the platform-specific thread startup code.
2009-08-29 11:24:44 +02:00
Alexandre Julliard
da8acbc47d
server: Define an architecture-independent structure for process startup info.
2009-08-21 20:00:12 +02:00
Alexandre Julliard
e49918b5a2
kernel32: Use a longer wineboot timeout for the initial prefix creation.
2009-08-18 12:17:04 +02:00
Alexandre Julliard
d492389d23
kernel32: Don't wait for wineboot once the process is no longer running.
2009-08-18 12:14:12 +02:00
Alexandre Julliard
a9feb3d271
kernel32: Check the 64-bit flag when starting a process.
2009-08-12 17:25:59 +02:00
Alexandre Julliard
f274d1d03f
kernel32: Change MODULE_GetBinaryType return value to make dll a flag instead of a type.
2009-08-12 17:04:38 +02:00
Andrew Nguyen
f63f4026cf
kernel32: Implement WTSGetActiveConsoleSessionId as a stub.
2009-07-16 11:21:21 +02:00
Alexandre Julliard
03d6da0894
kernel32: Add implementation of GetSystemWow64DirectoryA/W.
2009-07-07 11:42:03 +02:00
Alexandre Julliard
887af61219
kernel32: Avoid the close-on-exec race with pipe() on kernels that support pipe2().
2009-07-01 12:13:46 +02:00
Alexandre Julliard
d303d9dc29
kernel32: Add appropriate stdcall decorations to assembly functions.
2009-06-15 13:42:26 +02:00
Stefan Leichter
57f9236741
kernel32: Implement QueryFullProcessImageNameA.
2009-06-11 13:23:25 +02:00
Andrew Nguyen
7c2c6a575c
kernel32: Correct the last error of CreateProcessW with an empty command line string.
2009-05-18 14:31:07 +02:00
Andrew Nguyen
645e59c490
kernel32: Correct the last error of CreateProcessW with an empty application name string.
2009-05-18 14:31:07 +02:00
Andrew Nguyen
6c27fa1038
kernel32: Don't validate the command line parameter of CreateProcessW.
2009-05-18 14:31:07 +02:00
Alexandre Julliard
c6083037a8
kernel32: Make sure the string is properly terminated in QueryFullProcessImageNameW.
2009-04-22 16:56:37 +02:00
Alexandre Julliard
fc87182d19
kernel32: Set argv[0] to the full path of the binary when starting from Unix.
2009-04-02 12:59:32 +02:00
Alexandre Julliard
7b7f35aee5
kernel32: Use __wine_main_environ by default, environ is broken on FreeBSD too.
2009-04-02 12:03:35 +02:00
Alexandre Julliard
8edf353bd2
libwine: Export __wine_get_main_environment on Mac OS to make sure it's reevaluated when used.
2009-04-01 15:07:42 +02:00
Mikołaj Zalewski
9c9532265d
kernel32: Implement QueryFullProcessImageFileNameW.
2009-03-31 18:05:55 +02:00
Alexandre Julliard
f4a19c8463
loader: Merge the first and second stage loaders into a single wine binary.
2009-03-10 18:22:38 +01:00
Alexandre Julliard
825d7fda6c
kernel32: Make sure the process has an entry point before starting it.
2009-02-26 13:25:40 +01:00
Alexandre Julliard
3d0cf96f01
kernel32: Print a nicer error message when 16-bit/DOS apps cannot be launched.
2009-02-24 16:57:25 +01:00
Francois Gouget
4a8e1feeb4
kernel32: Fix an off-by-one error in build_envp().
...
We need to take into account the trailing NULL in envp.
2009-02-18 12:17:41 +01:00
Marcus Meissner
5493b77290
kernel32: Handle username conversion failure (Coverity).
2009-02-02 15:21:43 +01:00
Nikolay Sivov
2013cdc604
kernel32: Implemented GetErrorMode().
2009-01-13 16:39:45 +01:00
Maarten Lankhorst
70441d5bb8
kernel32: Change all functions to use CDECL.
2008-12-23 13:09:45 +01:00
Maarten Lankhorst
768160e944
ntdll: Make all exported wine functions CDECL.
2008-12-17 15:02:25 +01:00
Austin English
7a92db4e8b
kernel32: Convert a warn to an err.
2008-12-10 11:23:37 +01:00
Alexandre Julliard
d1b3d484f7
server: Add functions for conversions between server object handles and pointer-style handles.
2008-12-08 16:05:17 +01:00
Alexandre Julliard
fea2aa55d0
include: Fix the 64-bit value of magic handle constants.
2008-12-08 15:51:22 +01:00
Alexandre Julliard
a4e688218c
kernel32: Call build_envp in the parent process so that it can use the Win32 heap.
2008-10-31 14:55:33 +01:00
Alexandre Julliard
da03d9355d
kernel32: Call build_argv in the parent process so that it can use the Win32 heap.
2008-10-31 14:02:04 +01:00
Alexandre Julliard
5002bd21d1
kernel32: Moved the pthread emulation support to ntdll.
2008-10-30 15:39:50 +01:00
Dmitry Timoshkov
228c52de57
kernel32: Add support for foreign process handles in GetProcessVersion.
2008-10-16 11:21:40 +02:00
Andrey Turkin
7ba54ab45c
kernel32: Add ExitProcess wrapper to please Shrinker.
2008-10-08 14:26:19 +02:00
Alexandre Julliard
5861612e86
kernel32: Set the stdin/stdout file descriptors to match the specified Win32 handles when possible.
2008-07-10 12:20:56 +02:00
Louis Lenders
d9fa87382e
kernel32: Fix typo in SetProcessAffinityMask.
2008-06-20 11:18:06 +02:00
Alexandre Julliard
12de7d7591
kernel32: Move the wineboot event wait so that 16-bit processes wait too.
2008-05-13 20:26:37 +02:00
Alexandre Julliard
6477a1c1bf
kernel32: Set the USERPROFILE and ALLUSERSPROFILE environment variables based on the ProfileList registry keys.
2008-05-06 16:07:13 +02:00
Dmitry Timoshkov
fab78cdc8d
kernel32: Print in the trace pid and tid of the created process.
2008-05-06 11:25:50 +02:00
Alexandre Julliard
4073805aeb
kernel32: If necessary reload the environment after wineboot has run.
2008-04-24 11:53:45 +02:00
Alexandre Julliard
05e55edd82
kernel32: Create the windows and system directories if necessary.
2008-04-17 20:33:47 +02:00
Alexandre Julliard
7a7ef6a64c
kernel32: Moved the allocation of the process stack to ntdll.
2008-03-26 17:08:38 +01:00
Anatoly Lyutin
f773e148b0
kernel32: Implement IsWow64Process.
2008-03-24 20:39:22 +01:00
Dmitry Timoshkov
aebcbf0f6e
kernel32: Return upper cased drive letters in paths, some applications depend on it.
2008-02-27 14:52:26 +01:00
Alistair Leslie-Hughes
9d36b416a7
kernel32: Add RegisterApplicationRestart stub.
2008-02-05 12:06:09 +01:00
Gerald Pfeifer
39f672798b
kernel32: Use setproctitle where applicable to set the process name.
...
Based on a patch by Kris Moore.
2008-01-21 11:52:33 +01:00
Alexandre Julliard
9261c63ab3
kernel32: Fix the system affinity returned by GetProcessAffinityMask.
2008-01-16 21:01:33 +01:00
Alexandre Julliard
1d6d080d4b
wineboot: Add a --init option used when launched automatically at startup.
...
Don't execute Run entries in that case.
2008-01-16 19:51:14 +01:00
Alexandre Julliard
9c00a78da5
kernel32: Don't inherit stdin/stdout handles in wineboot.
2008-01-14 15:49:56 +01:00
Alexandre Julliard
5a3132343d
kernel32: Close the stdio handles when creating a detached process.
2008-01-14 15:49:12 +01:00
Alexandre Julliard
d55b2de574
kernel32: Launch wineboot on first startup of a wine process.
2008-01-04 12:51:04 +01:00
Alexandre Julliard
28aed6d9c8
kernel32: Initialize MaximumLength of the user params directory too.
2007-12-23 13:54:31 +01:00
Alexandre Julliard
a4269c8eed
kernel32: Store the initial directory as a full path in the process parameters.
2007-12-21 12:42:28 +01:00
Vitaliy Margolen
eb31959ab9
kernel32: Implement GetProcessHandleCount.
2007-11-01 12:41:48 +01:00
Louis Lenders
7475599b40
kernel32: Set USERNAME environment variable.
2007-08-17 12:21:45 +02:00
Dmitry Timoshkov
a67b689121
kernel32: Fix compilation warnings in 64-bit mode.
2007-05-23 13:13:54 +02:00
Andrew Talbot
fe933b022a
kernel32: Exclude unused headers.
2007-05-07 20:34:58 +02:00
Vitaliy Margolen
2bd4d6b180
kernel32: Fix off by one error.
2007-04-30 12:32:58 +02:00
Andrew Talbot
503b338e88
kernel32: Replace inline static with static inline.
2007-03-17 20:03:39 +01:00
Konstantin Kondratyuk
aefbef00f9
kernel32: Allow to execute .cmd files.
2007-03-07 21:34:03 +01:00
Francois Gouget
bb8e625b5b
Assorted spelling fixes.
2006-12-05 10:31:47 +01:00
Mike McCormack
f8829297da
kernel32: Downgrade a FIXME to a WARN.
2006-11-16 12:45:09 +01:00
Alexandre Julliard
ed58b1bad0
kernel32: Better workaround for the lack of locale environment variables on MacOS.
2006-11-07 18:24:15 +01:00
Dmitry Timoshkov
5ace8745ce
kernel32: Exit from initial thread with ExitThread not by ExitProcess.
2006-10-24 20:49:14 +02:00
Michael Stefaniuc
8c38b88068
kernel32: Win64 printf format warning fixes.
2006-10-13 12:08:25 +02:00
Alexandre Julliard
489d87d1e5
kernel32: Renamed the kernel directory to kernel32.
...
Also get rid of the kernel/messages subdirectory.
2006-09-12 13:34:06 +02:00