dd7dd399a551b141d11d6a953df67e9b6e15f4e1
[mono.git] / mono / io-layer / ChangeLog
1 2004-05-27  Dick Porter  <dick@ximian.com>
2
3         * io.h:
4         * io.c: Implemented LockFile() and UnlockFile()
5
6 2004-05-21  Dick Porter  <dick@ximian.com>
7
8         * io.c (CreateFile): Check for existing share modes when opening
9         a file.
10
11         * handles.c: 
12         * handles-private.h: 
13         * daemon-messages.h: 
14         * daemon.c: Maintain a hash of file share modes, keying on device
15         and inode (to cope with symlinks.)
16
17 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18
19         * daemon-messages.c: Retry if the communication with the daemon is
20           interrupted by a signal.
21         * io.c, sockets.c: Check for EINTR in every syscall that can be interrumped. 
22           Only return an error in this case if there is something in the apc queue
23           (which means that it is an interruption requested by the "user").
24         * processes.c: Use WaitForSingleObjectEx. No need to pass "alertable" as
25           true since the wait is small.
26         * shared.c: Retry write calls when interrumped by a signal.
27         * timed-thread.h, timed-thread.c: added _wapi_thread_apc_pending, which
28           returns TRUE if there are pending asynchronous calls (APC) for the
29           provided thread. Also added _wapi_thread_dispatch_apc_queue which calls
30           the enqueued APCs. Defined a new struct ApcInfo that holds information
31           about an enqueued APC.
32         * thread-private.h, threads.c: Implemented QueueUserAPC (which does the same
33           as in win32),_wapi_thread_apc_pending and _wapi_thread_dispatch_apc_queue. 
34           These last two methods call the corresponding apc methods in 
35           thread-private using the provided thread handle.
36         * threads.h: Added QueueUserAPC.
37         * uglify.h: Added WapiApcProc (needed by QueueUserAPC).
38         * wait.c, wait.h: Changed WaitForSingleObject to WaitForSingleObjectEx, and
39           WaitForMultipleObjects to WaitForMultipleObjectsEx. Implemented support
40           for APCs in those two methods and also in SleepEx.
41
42 2004-05-17  Dick Porter  <dick@ximian.com>
43
44         * io.c (CopyFile): Speed up.  Fixes bug 57859.
45
46 2004-05-13  Dick Porter  <dick@ximian.com>
47         * mono-mutex.c (mono_mutex_unlock): Return EPERM when the current
48         thread doesn't own the mutex, rather than assert()ing.
49
50 2004-05-11  Dick Porter  <dick@ximian.com>
51
52         * shared.c (_wapi_shm_attach): Cope when a previous daemon startup
53         attempt failed, leaving shared files that look like a daemon is
54         still starting.
55
56 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
57
58         * io.c:
59         (SetFileAttributes): don't the the exec bit if the corresponding read
60         bit is not set.
61
62 2004-05-10  Zoltan Varga  <vargaz@freemail.hu>
63
64         * io.c (FindFirstFile): Fix invalid free.
65
66 2004-05-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
67
68         * io.c: translate from GFileError to errno codes and don't free
69         variables right after calling mono_io_scandir, as we may overwrite
70         errno value.
71
72 2004-05-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
73
74         * io.c: g_dir_open return ENOENT for directories on which we don't have
75         read/execute permission, while returning EPERM for anything below those.
76         So, change ENOENT by EPERM if the directory exists.
77
78 2004-05-07  Dick Porter  <dick@ximian.com>
79
80         * io.c (SetFileAttributes): Don't have failed chmod()s cause a
81         "file not found" error.  Fixes bug 54032.
82         
83 2004-05-07  Dick Porter  <dick@ximian.com>
84
85         * io.c (FindFirstFile): Comment out a windows-compatibility check
86         that breaks when directories have metachars in their names.
87         Workaround for bug 58116.
88
89 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
90
91         * io.c: fixed for FindFirstFile for empty directories. Closes
92         bug #58147.
93
94 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
95
96         * processes.c: set the start time for the current process. Fixes bug
97         #58109.
98
99 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
100
101         * io-private.h: 'namelist' is now a gchar ** in _WapiHandlePrivate_find.
102         * io.c: implemented scandir using glib functions.
103
104 2004-05-04  Dick Porter  <dick@ximian.com>
105
106         * daemon.c (read_message): Return FALSE on error so the GSource
107         callback itself can return FALSE.  Cures the infinite loop poll()
108         warning on MacosX.
109         * shared.c: Fix some daemon startup race conditions.
110
111 2004-04-29  Miguel de Icaza  <miguel@ximian.com>
112
113         * io.c (CopyFile): Use 32k buffers to copy the file instead of 2k,
114         use the stack, do not use dynamic memory.
115
116 2004-04-29  Zoltan Varga  <vargaz@freemail.hu>
117
118         * io.c: Add scandir implementation for platforms which do not have
119         it, like solaris.
120
121 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
122
123         * io.[ch]: implemented GetLogicalDriveStrings.
124
125 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
126
127         * io.c:
128         * sockets.c: use the field name from configure when accessing sigval
129         pointer field. Makes this work on the Mac.
130
131 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
132
133         * atomic.c: (InterlockedExchange) fix typo for
134         mutex name
135
136 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
137
138         * io.c:
139         * sockets.c: added check for sys/aio.h.
140
141 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
142
143         * error.[ch]: added _wapi_get_win32_file_error...
144         * io.c: ... which was _wapi_get_win32_error here.
145         * sockets.c: rename the function calls here too.
146
147 2004-04-28  Dick Porter  <dick@ximian.com>
148
149         * daemon-messages.c: Avoid a deadlock when a thread is killed while
150         waiting for the daemon by using a recursive mutex.  Helps bug 56699.
151
152 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
153
154         * io.c: fixed leak in async_notifier().
155
156         * sockets.[ch]: added AIO support for sockets and fixed WSAIoctl
157         declaration.
158
159         * threads.c: removed old comment.
160
161 2004-04-26  David Waite  <mass@akuma.org>
162
163         * daemon-messages.h:
164         * daemon-private.h
165         * error.h:
166         * io.h:
167         * processes.h:
168         * shared.h:
169         * thread-private.h:
170         * wapi-private.h: remove comma from end of enumeration declarations
171         * status.h: cast unsigned int types to int for enum assignment
172
173 2004-04-26 David Waite <mass@akuma.org>
174
175         * io.c:
176         * timefuncs.c: declare 64-bit constants as long long types (i.e.
177         10ULL)
178
179 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
180
181         * socket-wrappers.h: _wapi_socket == WSASocket now. Added
182         WSA_FLAG_OVERLAPPED.
183
184         * sockets.c: new unused parameters for _wapi_socket.
185
186 2004-04-22  Miguel de Icaza  <miguel@ximian.com>
187
188         * timed-thread.c: Replace sem_init with MONO_SEM_INIT to handle
189         the fact that MacOS X is a piece of junk (sem_init is *defined* in
190         the libc, but they return `not implemented'). 
191
192 2004-04-22  Dick Porter  <dick@ximian.com>
193
194         * handles.c: 
195         * handles-private.h: Reference the handle when it is locked, so
196         that another thread can't blow it away while we're waiting for it
197         to become signalled.
198         
199         * wait.c: 
200         * timed-thread.c: 
201         * threads.c: 
202         * sockets.c: 
203         * semaphores.c: 
204         * mutexes.c: 
205         * mono-mutex.c: 
206         * io.c: 
207         * handles.c: 
208         * handles-private.h: 
209         * events.c: 
210         * error.c: 
211         * daemon-messages.c: 
212         * critical-sections.c: 
213         * atomic.c: Added pthreads cleanup handlers and error asserts
214
215         * shared.c: 
216         * handles.c: Fixed the gcc "variable might be used uninitialised"
217         warnings.  They can't happen, but gcc doesn't know that
218         g_assert()s don't return.
219
220         Fixed the declaration of _wapi_handle_process_kill() so that it
221         expects the correct type for the pid.
222         
223         * threads.c: Removed the TLS_PTHREAD_MUTEX style locking that
224         hasn't been used in ages and just made the code more complex.
225
226 2004-04-17  Zoltan Varga  <vargaz@freemail.hu>
227
228         * processes.c: Include <signal.h> for SIGKILL and SIGILL + fix some
229         warnings. Fixes #57168.
230
231 2004-04-16  Dick Porter  <dick@ximian.com>
232
233         * threads.c (Sleep): Using div(3) with a negative (when signed)
234         numerator causes the quotient to be 0 and the remainder to be the
235         numerator.  This feeds a small negative value to nanosleep(3),
236         which will return immediately and cause a busy wait.  Fixes bug
237         56351.
238
239 2004-04-15  Dick Porter  <dick@ximian.com>
240
241         * io-private.h:
242         * io.c: Rewrite FindFirstFile and FindNextFile using scandir(3)
243         and fnmatch(3) instead of glob(3).  glob() can't cope with being
244         given filenames containing metachars.  This fixes bug 40557.
245
246 2004-04-14  Bernie Solomon  <bernard@ugsolutions.com>
247
248         * security.c: #warning is a GCC-ism
249
250 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
251
252         * security.c: Removed GetUserName as glib g_get_user_name does a
253         better (portability) job. Added ImpersonateLoggedOnUser and
254         RevertToSelf.
255
256 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
257
258         * mono-mutex.h: move pthread_mutex_timedlock declaration to...
259         * mono-mutex.c: ...here. It was causing a warning that prevented
260         libgdiplus compilation.
261
262 2004-04-04  Miguel de Icaza  <miguel@ximian.com>
263
264         * security.c (GetUserName): Make it work on MacOS X
265
266 2004-04-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
267
268         * security.c: use getpwuid_r if available. This one is thread-safe.
269
270 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
271
272         * Makefile.am: Added security.c|h.
273         * security.c: New file for security related functions. Added function
274         GetUserName to fix #56144.
275         * security.h: New. Header file for security.c
276         * wapi.h: Added include for security.h
277
278 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
279
280         * daemon-messages.h: added kill structs.
281
282         * daemon.c: implemented process_process_kill.
283         * handles-private.h:  define process_process_kill.
284         * handles.c: implemented _wapi_handle_process_kill.
285         * processes.[ch]: implemented TerminateProcess.
286
287 2004-03-25  Bernie Solomon  <bernard@ugsolutions.com>
288
289         * daemon.c (rem_fd): On solaris you seem to get an
290         error even after removing the input source so don't
291         try and rem_fd it twice.
292
293 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
294
295         * daemon.c: in process_post_mortem, If the child terminated due to the 
296         receipt of a signal, the exit status must be based on WTERMSIG, since 
297         WEXITSTATUS returns 0 in this case.
298
299 2004-03-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
300
301         * daemon.c: turned a warning into a DEBUG statement. Now we may hit it.
302
303 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
304
305         * daemon.c: only call getdtablesize () once.
306         * processes.c: wait 500 ms to check if execve failed and throw the same
307         exception as MS on failure. Fixes bug #32809.
308
309 2004-03-17  Bernie Solomon  <bernard@ugsolutions.com>
310
311         * io.c (async_notifier): use "union sigval" rather
312         than sigval_t as Solaris doesn't have sigval_t
313         (which isn't in IEEE 1003.1 either).
314
315 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
316
317         * io.c: added debug stuff and removed a few redundant lines in
318         file_write.
319
320 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
321
322         * io-private.h: added new fields for file structure. Declare
323         _wapi_io_add_callback.
324
325         * io.c: added _wapi_get_win32_error, support aio_read/write in
326         file_read/write. Implemented _wapi_io_add_callback, which is where
327         BindHandle ends up.
328         
329         * io.h: added new fields for WapiOverlapped and typedef for the
330         callback.
331
332         * processes.c: fixed off-by-one bug when handling environment variables 
333         passed in.
334
335         * threads.[ch]: implemented BindIoCompletionCallback.
336
337         * uglify.h: added typedef for LPOVERLAPPED_COMPLETION_ROUTINE.
338
339 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
340
341         * socket-wrappers.h: Remove extra semicolon.
342
343 2004-03-03  Dave Camp  <dave@ximian.com>
344
345         * daemon.c: (add_fd), (fd_activity), (_wapi_daemon_main):
346         Use a new main context.
347
348 2004-03-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
349
350         * io.c:
351         (GetFileAttributes): set the error depending on errno instead of
352         setting ERROR_FILE_NOT_FOUND always. See bug #55160.
353
354 2004-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
355
356         * io.c:
357         (CopyFile): free the buffer on error.
358         * sockets.c:
359         (WSAIoctl): free the buffer on error.
360
361 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
362
363         * error.c: fixed mapping for EPROTONOSUPPORT and ESOCKTNOSUPPORT.
364
365         * sockets.[ch]: retry creating the socket for AF_INET, SOCK_RAW
366         using IP protocol with IP over IP. Implemented WSAIoctl UNIX-style.
367
368 2004-01-27  Bernie Solomon  <bernard@ugsolutions.com>
369
370         * shared.c (_wapi_shm_file): add hostname
371         to shared data file names to handle NFS mounted
372         .wapi directories.
373
374 Mon Jan 26 16:15:03 CET 2004 Paolo Molaro <lupus@ximian.com>
375
376         * sockets.h: remove obsolete soklen_t typedef.
377
378 Fri Jan 23 21:07:02 CET 2004 Paolo Molaro <lupus@ximian.com>
379
380         * socket-wrappers.h, sockets.h, sockets.c, Makefile.am: move socket
381         wrappers to its own non-installed header file.
382
383 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
384
385         * io.c:
386         (FindFirstFile): unlock the handle if FindNextFile fails.
387         (FindNextFile): g_free a couple of pointers before retrying.
388
389         * wait.c:
390         (WaitForMultipleObjects): if only one handle provided, use
391         WaitForSingleObject.
392
393 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
394
395         * handles-private.h: (_wapi_handle_type) check
396         for segment in range before using it
397
398 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
399
400         * thread-private.h: _wapi_thread_ops is now const
401         must match .c file.
402
403 Mon Dec 22 18:29:03 CET 2003 Paolo Molaro <lupus@ximian.com>
404
405         * threads.c, timed-thread.c, timed-thread.h: use mach
406         semaphores on Darwin (MacOSX) since the posix ones
407         are mostly broken there (threads are not created suspended
408         and they can start executing before they are fully initialized
409         like in tests/thread-static.cs).
410
411 Mon Dec 22 17:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
412
413         * atomic.h: ppc fixes.
414
415 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
416
417         * handles.c: remove my bad use of MONO_ZERO_ARRAY_LENGTH
418         in HDRSIZE 
419
420 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
421
422         * shared.c: (_wapi_shm_open) make scratch file
423         not have to immediately regrow to avoid remaps
424         (HPUX can't cope with these).
425         (_wapi_shm_attach) use actual size of file
426         to set scratch data_len for the creating process.
427
428         * handles.c: (_wapi_handle_new_internal) make
429         sure mutex & cond var are initialized even for
430         non process shared ones. 
431         (_wapi_handle_unref) always call destroy 
432         routines on mutex & cond var
433
434 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
435
436         * daemon.c: change channel data structure so
437         input sources are removed from glib event loop
438         properly. xsp works better on Solaris and 
439         fixes #51278
440
441 2003-12-12  Bernie Solomon  <bernard@ugsolutions.com>
442
443         * wapi-private.h: Replace G_GNUC_PRETTY_FUNCTION
444         definition with file & line number for non-GCC
445         compiles.
446
447 2003-12-08  Bernie Solomon  <bernard@ugsolutions.com>
448
449         * Makefile.am: make sure hppa_atomic.s is in distribution
450
451 2003-12-01  Dick Porter  <dick@ximian.com>
452
453         * wapi-private.h: 
454         * mutexes.c (CreateMutex): 
455         * mutex-private.h (struct _WapiHandle_mutex): 
456         * handles.c: Look up certain handle types by name, in a shared
457         namespace.  Currently only mutex handles have this implemented.
458         Fixes bug 51089.
459
460         * semaphores.c (CreateSemaphore): 
461         * events.c (CreateEvent): Fix signature
462
463 2003-11-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
464
465         * io.c: don't call g_free before testing errno as it may modify it.
466         If the path exists, return an error if it's not a directory. Fixes
467         bug #50753.
468
469 2003-11-20  Dick Porter  <dick@ximian.com>
470
471         * io.c: Missed a little-endian UTF16 conversion.  Patch from
472         Jeroen Zwartepoorte (Jeroen@xs4all.nl), fixes bug 51065.
473
474 2003-10-29  Dick Porter  <dick@ximian.com>
475
476         * io.c (MoveFile): If the move crosses filesystems, try and fall
477         back to copy and delete.  Patch from Jörg Rosenkranz
478         (JoergR@voelcker.com), fixes bug 50298.
479
480 2003-10-28  Dick Porter  <dick@ximian.com>
481
482         * io.c: Use the new encoding conversion to cope with non-utf8
483         locales in filenames.
484
485         * processes.c: Ditto for process arguments.
486
487 Tue Oct 21 12:01:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
488
489         * atomic.h: some ppc inline asm fixes (incorrect use of labels, 
490         incorrect register constraints, incorrect clobber lists).
491
492 2003-10-13  Bernie Solomon  <bernard@ugsolutions.com>
493
494         * Makefile.am hppa_atomic.s: add HP 64bit
495         implementation of atomic ops
496
497 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
498
499         * threads.c (CreateThread): Wrap pthread_attr_setstacksize call in
500         a conditional for platforms that don't have it.
501
502 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
503
504         * threads.c: (CreateThread) use stacksize argument
505         if non-zero - change default for 64 bits to 4Mb
506
507 2003-09-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
508
509         * sockets.c: set last error when socket creation fails. This shed some
510         light on bug #49015.
511
512 2003-09-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
513
514         * processes.c: fixed bug #48973: we only change \ by / for the argument
515         to be used as command.
516         When getting the program name from the args, don't let the space between
517         them in the args.
518
519 2003-09-24  Bernie Solomon <bernard@ugsolutions.com>
520
521         * atomic.h atomic.c: fix sparc so lock is
522         global, increment does so and it compiles under Sun compiler.
523
524 2003-09-22  Bernie Solomon <bernard@ugsolutions.com>
525
526         * handles.c: include <string.h> directly as may
527         not be nested in <sys/un.h> like Linux
528
529 2003-09-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
530
531         * io.c:
532         (DeleteFile): call SetLastError on failure. Fix by
533         richard.torkar@htu.se (Richard Torkar). Closes bug #48222.
534
535 2003-09-15  Lluis Sanchez Gual  <lluis@ximian.com>
536
537         * daemon.c: In compare_process(), discard handles already signalled.
538
539 2003-09-02  Dick Porter  <dick@ximian.com>
540
541         * io.c: Work around glib brain-dead assumptions about utf8-encoded
542         filenames.  Fixes bug 30781.
543
544 2003-08-28  Dick Porter  <dick@ximian.com>
545
546         * critical-sections.c:  Patch from Bernie Solomon
547         <bernard@ugsolutions.com> to emit a warning if locking a critical
548         section fails.
549
550 2003-07-23  Dick Porter  <dick@ximian.com>
551
552         * shared.c:
553         * daemon.c (maybe_exit): Avoid the race condition when the daemon is
554         closing but another client comes along when the shared data is still
555         visible.  Should fix bugs 33671 and 35213.
556
557 2003-07-23  Dick Porter  <dick@ximian.com>
558
559         * handles.c:  Initialise handle mutex and cond.  Fix by
560         Bernie Solomon <bernard@ugsolutions.com>
561
562 2003-07-15  Dick Porter  <dick@ximian.com>
563
564         * timed-thread.c (timed_thread_start_routine): Fix virtual memory
565         leak when threads quit.  Fixes bug 44067.
566
567 Wed Jun 18 19:08:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
568
569         * io.c: never add write permission for group or others in
570         SetFileAttributes ().
571
572 2003-06-17  Dick Porter  <dick@ximian.com>
573
574         * io.c (SetFileAttributes): Implement the ReadOnly attribute, and
575         ignore the unsupported ones ("fixes" bug 44977).
576
577 2003-06-17  Lluis Sanchez Gual  <lluis@ximian.com>
578
579         * misc.c: fix bug in _wapi_calc_timeout. It gave wrong values for
580           high ms values (there was an overflow).
581
582 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
583
584         * system.h (struct _WapiSystemInfo ): Fix warnings when using gcc-3.3.
585
586 2003-06-11  Dick Porter  <dick@ximian.com>
587
588         * shared.c: Fix shared directory creation.  Patch from
589         Pablo Baena <pbaena@uol.com.ar>
590
591 2003-06-10  Dick Porter  <dick@ximian.com>
592
593         * atomic.c: Delete the useless compile warning
594
595 2003-06-09  Dick Porter  <dick@ximian.com>
596
597         * daemon.c: Lookup env as a string array.  Fixes bug 44289.  Also
598         make setting the process handle value in the environment actually
599         work.
600
601         * processes.c: Pretty up the process name, if it happens to be
602         "mono" such as when another mono process forks "mono foo.exe"
603
604 2003-06-05  Dick Porter  <dick@ximian.com>
605
606         * processes.c (process_set_current): Don't do an expensive handle
607         search at application startup, check the environment to see if the
608         process handle has already been created.
609
610         * io.c: Don't do an expensive handle search when creating stdin,
611         stdout and stderr handles, just create them all the first time one
612         is requested.
613
614         * wapi-private.h:
615         * shared.c:
616         * shared.h:
617         * handles.c:
618         * handles-private.h:
619         * daemon-messages.h:
620         * daemon-private.h:
621         * daemon.c: Support for "unlimited" number of handles and scratch
622         data.
623
624         Speed up application startup by passing process handle in the
625         environment, rather than let the app scan all handles (which gets
626         really slow when there are more than a few thousand to check.)
627
628         Initialise some structs passed to syscalls, noticed by valgrind.
629         
630
631 2003-05-20  Dick Porter  <dick@ximian.com>
632
633         * io.c (FindFirstFile): Include . files in the glob.  Fixes bug
634         43229.
635
636 2003-05-19  Dick Porter  <dick@ximian.com>
637
638         * threads.c: Set the new thread's stack size to 2M.  Fix needed
639         for BSD, reported by Martin Dvorak <md@9ll.cz>
640
641 2003-05-16  Dick Porter  <dick@ximian.com>
642
643         * io.h:
644         * io.c: Implement GetTempPath()
645
646 2003-05-16  Dick Porter  <dick@ximian.com>
647
648         * processes.c (CreateProcess): Set some error codes
649
650 2003-05-12  Dick Porter  <dick@ximian.com>
651
652         * misc.c (_wapi_calc_timeout): Cope with overflowing tv_nsec.
653         Patch from Martin Dvorak <mdvorak@ninell.cz>.
654
655 2003-05-10  Dick Porter  <dick@ximian.com>
656
657         * io.c (CopyFile): Copy file mode as well as file data.  Based on
658         suggestion by Giuseppe Greco <giuseppe.greco@agamura.com>, bug
659         42706.
660
661 2003-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
662
663         * handles.c: don't call GC_gcollect when creating new handles.
664
665 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
666
667         * handles.c: added some debugging code. Call GC_gcollect
668         before creating a new handle. It makes Lupus' test run smoother and
669         faster (from 62 to 83 request per second). Notice that calling
670         GC_finalizer_notifier if needed (GC_should_invoke_finalizer ()) does
671         not improve nor degrade the performance, so i don't do it.
672
673 2003-05-02  Dick Porter  <dick@ximian.com>
674
675         * sockets.c: Rearrange closesocket() and socket_close_private(),
676         and remember to unref the handle, so we don't leak socket handles.
677         Fix from Pelle Johnsen <pelle.johnsen@mail.dk>
678
679 2003-04-11  Dick Porter  <dick@ximian.com>
680
681         * atomic.h: ARM atomic operations by Malte Hildingson
682         <tds00mahi@tellus.thn.htu.se>
683
684 Tue Apr 8 11:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
685
686         * atomic.h: fix macosx build by "Urs C. Muff" <umuff@quark.com>.
687
688 2003-04-03  Martin Baulig  <martin@ximian.com>
689
690         The following change is conditional to `WITH_INCLUDED_LIBGC'
691         which is not yet enabled by default.
692
693         * threads.c (SuspendThread, ResumeThread): Fully implemented this.
694         (gc_init): New static function; install a signal handler for
695         SIGPWR which is used to suspend threads.  [FIXME: it SIGPWR
696         doesn't exist on all Unix systems, we need to find another
697         signal].
698         (mono_wapi_push_thread_stack): New public function.  Tells the
699         garbage collector about the current stack pointer of a suspended
700         thread.
701
702 2003-04-03  Martin Baulig  <martin@ximian.com>
703
704         * timed-thread.h (TimedThread): Added `suspended_sem',
705         `suspend_count' and `stack_ptr'.
706
707 2003-03-28  Dick Porter  <dick@ximian.com>
708
709         * atomic.h: PPC support gratiously donated to the public domain
710         by John Duncan <jddst19@mac.com>
711
712 2003-03-20  Dick Porter  <dick@ximian.com>
713
714         * sockets.c (_wapi_connect): If connect() fails with EACCES, try
715         setting SO_BROADCAST and connecting again.  Fixes bug 39178.
716
717 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
718
719         * processes.c: included Jerome Laban's patch and call SetLastError when
720         the executable is not found.
721
722 2003-03-03  Dick Porter  <dick@ximian.com>
723
724         * io.c (CreateFile): Try opening directories readonly, so that
725         timestamps can be adjusted.  Patch by Elan Feingold
726         <efeingold@mn.rr.com>.
727
728 2003-02-25  Dick Porter  <dick@ximian.com>
729
730         * shared.c (_wapi_shm_attach): Return a failure code on system
731         call errors, rather than exiting.
732
733 2003-02-21  Dick Porter  <dick@ximian.com>
734
735         * processes.c (GetCurrentProcessId): Use the current process
736         handle to return the process ID, as getpid() is unreliable
737         (linuxthreads gives each thread a different pid).  Fixes bug
738         37550.
739
740 2003-02-21  Dick Porter  <dick@ximian.com>
741
742         * io.c (FindNextFile): Skip over dangling symlinks.  Fixes bug
743         34076.
744
745 2003-02-11  Dick Porter  <dick@ximian.com>
746
747         * timefuncs.h: 
748         * timefuncs.c: Added GetTickCount()
749
750 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
751
752         * error.c: added WSA_EHOSTUNREACH mapping.
753
754 2003-01-26  Miguel de Icaza  <miguel@ximian.com>
755
756         * io.c (SetFileAttributes): This routine is not currently
757         implemented for the general case, but I added a special case to
758         set the executable bit on Linux.
759
760 Wed Jan 15 15:55:40 CET 2003 Paolo Molaro <lupus@ximian.com>
761
762         * sockets.h, daemon.c, io.c: compilation fixes on MacOSX.
763
764 2003-01-08  Dick Porter  <dick@ximian.com>
765
766         * sockets.c: Fixed setting blocking mode to true (fixes bug 36388)
767
768 2002-12-11  Juli Mallett  <jmallett@FreeBSD.org>
769
770         * daemon.c, handles-private.h, handles.c, wapi-private.h:
771         Check for an implementation which says it supports
772         _POSIX_THREAD_PROCESS_SHARED, rather than just one that
773         defines the symbol.  Defined but with a value of -1 still
774         means that it is unsupported.
775
776 2002-12-08  Martin Baulig  <martin@ximian.com>
777
778         * handles.c (_wapi_handle_new): Create new non-shared handles with
779         an initial refcount of 1, not 0.
780
781 2002-11-22  Dietmar Maurer  <dietmar@ximian.com>
782
783         * threads.c (TlsGetValue): removed unnecessary mutex
784
785 2002-11-20  Dick Porter  <dick@ximian.com>
786
787         * timed-thread.c (_wapi_timed_thread_attach): Attached threads
788         need to store their data structure too.
789
790         * threads.c: Make sure the threading data is initialised wherever
791         it is needed
792
793 2002-11-15  Dick Porter  <dick@ximian.com>
794
795         * timed-thread.c: Removed unneeded parameters in
796         _wapi_timed_thread_attach().
797
798         * threads.c: Renamed AttachThread() to make it not look like
799         external API.  Removed unneeded parameters.
800
801 2002-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
802
803         * error.[ch]: added errno_to_WSA (). It displays a warning and return
804         WSASYSCALLFAILURE if there is no error mapping for the given errno,
805
806         * sockets.c: use errno_to_WSA and fixed display of warning for h_errno.
807
808 2002-10-31  Dick Porter  <dick@ximian.com>
809
810         * io.h: 
811         * io.c: Define and use INVALID_FILE_ATTRIBUTES
812
813 2002-10-07  Dick Porter  <dick@ximian.com>
814
815         * timefuncs.c:
816         * daemon.c: Use a more accurate time source for process start and
817         end times.
818
819 2002-10-03  Dick Porter  <dick@ximian.com>
820
821         * daemon.c:
822         * handles.c:
823         * threads.c:  Fixes for freebsd.  Make sure that mutex and condition
824         creation and deletion happen in the process that owns them, when
825         POSIX shared thread objects aren't supported.  This breaks on
826         freebsd, as pthread_t is a pointer to data.
827
828 2002-10-02  Dick Porter  <dick@ximian.com>
829
830         * shared.c: Use mmap() instead of sysv shm for the shared data.
831
832         * wapi-private.h (_WAPI_HANDLE_VERSION): Reset back to 0, for the
833         new system
834
835         * daemon-private.h: 
836         * daemon.c: mmap()ed regions survive fork, so just pass the
837         pointer to _wapi_daemon_main instead of mapping it again.
838
839 2002-10-01  Dick Porter  <dick@ximian.com>
840
841         * timed-thread.c: Kludge for CREATE_SUSPENDED thread creation.
842         Unfortunately libgc uses the same thread suspend technique that I
843         want to, and the two don't mix: libgc will deadlock when it tries
844         to stop the world if a thread has already been suspended by
845         someone else.  Just do the simple suspended create rather than the
846         general purpose thread suspension for now.
847
848         * threads.c: Pass create flags to the timed_thread create call, to
849         implement suspended thread creation.  ResumeThread() partially
850         implemented, to cope with the case where a newly created but
851         suspended thread is launched.
852
853 2002-09-30  Dick Porter  <dick@ximian.com>
854
855         * sockets.c (ioctlsocket): Set non-blocking mode in a better way,
856         with fcntl.
857
858 2002-09-27  Dick Porter  <dick@ximian.com>
859
860         * semaphores.c: Only include semaphore.h if it's present. Patch
861         for BSD from jmmv@hispabsd.org (Julio Merino).
862
863 2002-09-27  Dick Porter  <dick@ximian.com>
864
865         * processes.c: Pass environment and working directory to the
866         daemon when forking.  Don't let argv[0] be duplicated when looking
867         for the program name.  Implement EnumProcessModules (simple
868         version for now, lsof-style later if needed), GetModuleBaseName,
869         {Get,Set}ProcessWorkingSetSize (just faked, because the vm hints
870         aren't available on Linux).
871
872         * process-private.h: Store the process name, and the working set
873         min and max
874
875         * handles.c:
876         * handles-private.h: New functions to store and retrieve an array
877         of strings in the scratch space
878
879         * daemon.c: Don't miss deleting some handles when a client exits
880         (we used to rely on the client doing the final cleanup, but
881         obviously if the client is no longer there the daemon has to do
882         it).
883
884         Process forking now sets the environment and the working
885         directory.
886
887         * io.c: Don't confuse fd 0 with an unassigned handle struct
888
889         * atomic.h: Add a google cache alternative to the msdn URL
890
891 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
892
893         * sockets.c:
894         (_wapi_recvfrom): added ECONNRESET to the switch.
895
896 2002-09-24  Mark Crichton  <crichton@gimp.org>
897
898         * atomic.h: Yea.  On linux, sparc isn't sparc, it's __sparc__.
899         Added to ifdef.
900
901 2002-09-19  Mark Crichton  <crichton@gimp.org>
902
903         * daemon.c, shared.c: Added NEED_LINK_UNLINK for systems that
904         dont have Linux's abstract filesystem for sockets.
905
906 2002-09-19  Mark Crichton  <crichton@gimp.org>
907
908         * atomic.h: Added SPARC atomic asm code.
909         * daemon.c, handles-private.h, handles.c, wapi-private.h:
910         undefined _POSIX_THREAD_PROCESS_SHARED.  This actually exists on
911         Solaris 9, however, the code paths don't seem to work.  More testing
912         on the shared case is *really* needed.
913
914 2002-09-03  Dick Porter  <dick@ximian.com>
915
916         * threads.h: 
917         * threads.c: Removed PosixKillThread(), because it's not in the
918         w32 api
919
920 2002-08-20  Dick Porter  <dick@ximian.com>
921
922         * handles.c (_wapi_handle_scratch_store): Made stored byte lengths
923         multiples of 4 bytes, to keep header structures aligned.  Needed
924         for sparc, at least. (Patch from crichton@gimp.org)
925
926         * handles.c: Removed 'disable_shm' variable (we've defaulted to
927         building with shm enabled for months now)
928
929 2002-08-19  Dick Porter  <dick@ximian.com>
930
931         * daemon.c: Rewrote the poll() loop to use GIOChannels instead,
932         for legacy NeXT-based systems.
933
934 2002-08-12  Dick Porter  <dick@ximian.com>
935
936         * atomic.h: Rename some parameters to avoid c++ keywords (Patch
937         from Joseph Wenninger <kde@jowenn.at>)
938
939 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
940
941         * threads.c: use fast spinlocks by default
942
943 2002-08-02  Dick Porter  <dick@ximian.com>
944
945         * io.c (GetStdHandle): Add a handle reference when returning a
946         duplicate console handle.  This fixes the unref_handle errors in
947         NUnit.
948
949 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
950
951         * threads.c (TLS_PTHREAD_MUTEX): define this because else some
952         tests does not work
953
954 2002-08-01  Dick Porter  <dick@ximian.com>
955
956         * threads.c: Use atomic spinlocks in TLS functions
957
958         * mono-spinlock.h:
959         * Makefile.am: Added mono-spinlock.h
960
961 2002-07-21  Jeffrey Stedfast  <fejj@ximian.com>
962
963         * daemon-messages.c: #include <sys/types.h> and <sys/sockets.h> -
964         these are needed for sendmsg() and also for struct msghdr (at
965         least on Solaris). Solaris still won't build because struct msghdr
966         doesn't have msg_flags, msg_control, or msg_controllen members.
967         (CMSG_SPACE): Define for systems that don't have it.
968         (CMSG_LEN): Same.
969
970 2002-07-20  Dick Porter  <dick@ximian.com>
971
972         * wapi-private.h:
973         * io-private.h:
974         * io.h:
975         * io.c:
976         * handles.c: Implemented pipe handles
977         
978         * handles.c:
979         * daemon.c: Fixed bug in handle closing.
980
981         * shared.c:
982         * daemon.c: Forked processes now close all open file descriptors.
983
984 Fri Jul 19 19:05:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
985
986         * sockets.h, io-layer.h, critical-sections.h: don't include config.h
987         in header files.
988
989 2002-07-19  Martin Baulig  <martin@gnome.org>
990
991         * threads.c (ExitThread): Call exit() if no threads has been
992         created yet.
993
994 2002-07-17  Dick Porter  <dick@ximian.com>
995
996         * daemon-messages.c: Freebsd fixes from Andreas Kohn
997         <andreas.kohn@gmx.net>
998
999 2002-07-15  Dick Porter  <dick@ximian.com>
1000
1001         * io.c: Removed bogus console_flush() method, that was just cut
1002         and pasted from file_flush when I separated the two handle types.
1003
1004 2002-07-12  Dick Porter  <dick@ximian.com>
1005
1006         * io.c (convert_from_flags): Fixed misunderstanding wrt fcntl
1007         flags.  Fixes bug 27633.
1008
1009 2002-07-12  Dick Porter  <dick@ximian.com>
1010
1011         * wapi-private.h:
1012         * handles.c:
1013         * daemon.c: Use size of sockaddr_un.sun_path from config.h
1014
1015 2002-07-12  Dick Porter  <dick@ximian.com>
1016
1017         * processes.c (CreateProcess): Send stdin, stdout and stderr
1018         handles if the startup info doesnt specify new ones
1019
1020         * io.c (GetStdHandle): Return the same handle when the same
1021         standard handle is requested
1022
1023         * handles.c: Pass file descriptors when forking
1024
1025         * daemon.c: Use supplied file descriptors when forking a new
1026         process
1027
1028         * daemon-messages.h: 
1029         * daemon-messages.c: Pass stdin, stdout and stderr file
1030         descriptors to the daemon (used when forking)
1031
1032 2002-07-11  Miguel de Icaza  <miguel@ximian.com>
1033
1034         * daemon.c (_wapi_daemon_main): Use sizeof
1035         (main_socket_address.sun_path) instead of hardcoded 108 value.
1036
1037         * handles.c (shared_init): Use sizeof
1038         (shared_socket_address.sun_path) instead of hardcoded 108 value.
1039
1040 2002-07-10  Dennis Haney  <davh@davh.dk>
1041
1042         * shared.c:
1043         * handles.c:
1044         * daemon.c: Lots of documentation, some added error checking, and
1045         code readability improvements.
1046
1047         * daemon-messages.h: Add the Error request type to improve error
1048         checking.
1049
1050         * daemon-messages.c: Do a bit more error checking on send() and
1051         recv(), and log errors with a higher severity level.
1052
1053 2002-07-04  Dick Porter  <dick@ximian.com>
1054
1055         * daemon.c (process_process_fork): Fix argument handling, due to
1056         buggy understanding of g_strsplit() behaviour.
1057
1058 2002-07-03  Dick Porter  <dick@ximian.com>
1059
1060         * threads.h:
1061         * threads.c: Implement OpenThread().  Define access-control values
1062         for thread handles.
1063
1064         * wapi.h:
1065         * processes.h:
1066         * access.h:
1067         * Makefile.am: Added access.h, to hold shared access-control
1068         definitions
1069
1070 2002-07-02  Dick Porter  <dick@ximian.com>
1071
1072         * wapi-private.h (_WAPI_HANDLE_VERSION): New protocol version
1073         
1074 2002-07-02  Dick Porter  <dick@ximian.com>
1075
1076         * handles.c (shared_init): Make a second attempt to contact the
1077         daemon if the shared memory attach succeeds, but the connect()
1078         fails. (This copes with the daemon crashing without cleaning up
1079         the shared memory.)
1080
1081         * Makefile.am: 
1082         * daemon-private.h:
1083         * daemon.c:
1084         * shared.c (_wapi_shm_attach): Don't exec() anything when we fork
1085         the daemon, it's now built into the library.
1086
1087 2002-06-25  Dick Porter  <dick@ximian.com>
1088
1089         * handles.c:
1090         * handles-private.h:
1091         * daemon-messages.h:
1092         * daemon.c: Process forking and handle data management
1093
1094         * processes.h:
1095         * process-private.h:
1096         * processes.c: Process forking and other support functions
1097
1098 2002-06-25  Dick Porter  <dick@ximian.com>
1099
1100         * versioninfo.h: PE resource decoding
1101
1102         * unicode.c (_wapi_unicode_to_utf8): g_utf16_to_utf8 doesnt need
1103         to be told the string length
1104
1105         * io.c: Removed the ACTUALLY_DO_UNICODE option.  Fixed some leaks.
1106         Moved _wapi_time_t_to_filetime and the WapiFileTime typedef to
1107         timefuncs.c
1108
1109 2002-06-12  Dick Porter  <dick@ximian.com>
1110
1111         * daemon.c: 
1112         * daemon-messages.c: Handle SIGPIPE in a non-stupid way in the
1113         daemon, if MSG_NOSIGNAL isn't available.  Thanks to Jaroslaw
1114         Kowalski <jarek@atm.com.pl> for pointing out the bogosity.
1115
1116 2002-06-10  Jaroslaw Kowalski <jarek@atm.com.pl>
1117
1118         * sockets.c, daemon-messages.c: Prevent SIGPIPE from being raised
1119         when writing to a closed socket.
1120
1121 2002-06-08  Jeffrey Stedfast  <fejj@ximian.com>
1122
1123         * mono-mutex.c (mono_once): New convenience function for my
1124         previous fix.
1125
1126         * handles.c:
1127         * error.c: 
1128         * critical-sections.c: 
1129         * threads.c: 
1130         * sockets.c: 
1131         * semaphores.c: 
1132         * processes.c: 
1133         * mutexes.c: 
1134         * io.c: 
1135         * events.c: 
1136         * atomic.c: Use mono_once() rather than pthread_once().
1137
1138 2002-06-06  Jeffrey Stedfast  <fejj@ximian.com>
1139
1140         * handles.c (_wapi_handle_new): pthread_once() is not atomic, so
1141         if multiple threads all try to call _wapi_handle_new() before the
1142         shared data has been initialized, it is possible that we could get
1143         into a condition where shared_init() is being executed and later
1144         threads will pass by pthread_once() due to the fact that it has
1145         already been called and so therefor will attempt to use the shared
1146         data before it has been completely initialized. If we instead use
1147         a standard mutex locking mechanism around shared_init(), we can
1148         avoid the situation entirely. By wrapping the mutex locking in a
1149         check to see if we've already initialized the data, we can even
1150         avoid wasting resources by having to lock/unlock the mutex in any
1151         later calls (the only time we'd have to worry about
1152         locking/unlocking is the initial race to call shared_init() at
1153         startup).
1154
1155 Sat Jun 1 13:27:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
1156
1157         * atomic.h: inline asm fixes from Dennis Haney (davh@davh.dk).
1158
1159 Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
1160
1161         * daemon.c, handles.c: rename "sun" local var since it's apparently
1162         a #define on Solaris.
1163
1164 Fri May 31 15:40:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
1165
1166         * daemon-messages.c: work-around MSG_NOSIGNAL missing on some
1167         platforms.
1168
1169 2002-05-15  Dick Porter  <dick@ximian.com>
1170
1171         * wait.c: Fix a deadlock in WaitForMultipleObjects
1172
1173 2002-05-14  Dick Porter  <dick@ximian.com>
1174
1175         * io.c: Fix a cut&paste error, found by
1176         Jaroslaw Kowalski <jarek@atm.com.pl>
1177
1178 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
1179
1180         * io.c: Nasty typo.
1181
1182 2002-05-09  Dick Porter  <dick@ximian.com>
1183
1184         * threads.c: 
1185         * semaphores.c: 
1186         * processes.c: 
1187         * mutexes.c: 
1188         * handles-private.h: 
1189         * events.c: 
1190         * Makefile.am: Remove now-unused file wait-private.h
1191
1192 2002-05-08  Dick Porter  <dick@ximian.com>
1193
1194         * shared.c: Better error messages, and report when daemon
1195         connection fails rather than blocking forever.  Do some more
1196         shared memory sanity checking.
1197
1198         * handles.c: Better error messages when connecting to shared
1199         memory and the handle daemon.  Fall back to non-shared handles if
1200         an error occurs.  Set the default back to 'shared handles'.  Fix a
1201         crashing bug in scratch space allocation that mangled the block
1202         headers.
1203
1204 2002-05-07  Miguel de Icaza  <miguel@ximian.com>
1205
1206         * handles.c (shared_init): Disable SHM for now, people have too
1207         many problems with this, and the diagnostics are not helping.
1208
1209 2002-05-06  Dan Lewis  <dihlewis@yahoo.co.uk>
1210
1211         * io.c: CreateFile sets win32 last error.
1212
1213 2002-05-05  Dick Porter  <dick@ximian.com>
1214
1215         * wapi-private.h: 
1216         * handles-private.h:
1217         * io.c: 
1218         * io-private.h:
1219         * mutexes.c: 
1220         * mutex-private.h: 
1221         * processes.c: 
1222         * process-private.h: 
1223         * semaphores.c: 
1224         * semaphore-private.h: 
1225         * sockets.c: 
1226         * socket-private.h: 
1227         * events.c: 
1228         * event-private.h: Simplify the WapiHandleOps struct: take out all
1229         the file-specific entries, leaving just the items that operate on
1230         handles themselves.  Split the close operation into shared and
1231         private parts: shared close is called by the daemon.
1232
1233         * handles.c: As above, but also pass handle allocation, ref and
1234         unref operations to the daemon.  Populate the handle_ops array at
1235         compile time, because the daemon needs to call ops on handles too.
1236         Don't bother to track open handle counts any more, the daemon does
1237         that.
1238         
1239         * threads.c: 
1240         * thread-private.h: As above, but also make the thread data
1241         handle-private.
1242
1243         * shared.c: Fork a handle daemon if the calling process created
1244         the shared memory segment.
1245
1246         * daemon.c:
1247         * daemon-messages.c:
1248         * daemon-messages.h:
1249         * Makefile.am: Build a daemon to manage handle allocation and
1250         destruction without needing to lock the shared memory
1251
1252 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
1253
1254         * atomic.c: Changed to use a normal mutex rather than a spinlock
1255         since a lot of platforms seem to not have them :\
1256
1257 2002-04-30  Dick Porter  <dick@ximian.com>
1258
1259         * Completely rewrote the handle waiting code: removed the helper
1260         thread and its attendant complexity.  All handle waiting is now
1261         abstracted into the WaitForSingleObject() and
1262         WaitForMultipleObjects() functions.
1263
1264         * Implemented inter-process sharing of handles using sysv shared
1265         memory.  This makes handles even more opaque, with a handle now
1266         just an index into an array.
1267         
1268 2002-04-25  Dan Lewis  <dihlewis@yahoo.co.uk>
1269
1270         * io.c: unitialized pointer in GetCurrentDirectory.
1271
1272 Sat Apr 20 13:37:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
1273
1274         * threads.c: destroy the mutex at thread destruction
1275         (if/when thread destruction code will be actually called).
1276         When protecting a tls data pointer from the gc, use also the 
1277         thread id in the key.
1278         
1279 Wed Apr 17 18:36:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
1280
1281         * timed-thread.c: avoid race condition when setting the thread to
1282         detached.
1283
1284 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1285
1286         * jit.h: to more #include lines to avoid breaking compilation
1287         under windows when upgrading mingw and w32api to version
1288         1.3 (thanks Dick!).
1289
1290 2002-04-16  Dick Porter  <dick@ximian.com>
1291
1292         * atomic.h: Explanatory comment about lack of 80386 support
1293
1294 2002-04-15  Dick Porter  <dick@ximian.com>
1295
1296         * atomic.h: use xaddl for InterlockedIncrement() and
1297         InterlockedDecrement().  Use cmpxchgl in a loop for
1298         InterlockedExchange() and InterlockedExchangePointer().
1299
1300 Mon Apr 15 13:31:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
1301
1302         * unicode.c: fix unicode_len() to not access uninitialized memory
1303         (and updated to conform to mono code style).
1304
1305 Fri Mar 29 17:15:11 CET 2002 Paolo Molaro <lupus@ximian.com>
1306
1307         * io.c: EEXISTS is ignored for directory creation.
1308         * mono-mutex.h: remove silly "pragma }" that emacs users insert
1309         because they use a broken editor:-)
1310
1311 2002-03-28  Dick Porter  <dick@ximian.com>
1312
1313         * sockets.h: 
1314         * sockets.c: 
1315         * io.c: 
1316         * handles.h: 
1317         * handles.c: Warning cleanups
1318
1319 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
1320
1321         * unicode.h, unicode.c: changed to gunichar2
1322         * io.h, io.c: changed strings to gunichar2*, added
1323         SetFileAttributes(), GetCurrentDirectory(), SetCurrentDirectory(),
1324         some fixes to FindFirstFile() and friends.
1325
1326 2002-03-26  Dick Porter  <dick@ximian.com>
1327
1328         * types.h: Implement the large integer struct
1329
1330         * timefuncs.h:
1331         * timefuncs.c: Dummy functions that don't yet implement
1332         QueryPerformanceCounter() and QueryPerformanceFrequency()
1333
1334         * threads.h:
1335         * threads.c: Implement SleepEx()
1336
1337         * system.h:
1338         * system.c: Beginnings of GetSystemInfo()
1339
1340         * mono-mutex.c (pthread_mutex_timedlock): Fix a ms/ns conversion
1341         thinko
1342
1343         * context.h:
1344         * context.c: Dummy function that doesnt yet implement
1345         GetThreadContext()
1346
1347         * atomic.h: 
1348         * atomic.c: Interlocked functions
1349
1350 Mon Mar 25 13:01:40 CET 2002 Paolo Molaro <lupus@ximian.com>
1351
1352         * threads.c: use a gc-safe hash table to store tls pointers.
1353
1354 2002-03-22  Dick Porter  <dick@ximian.com>
1355
1356         * threads.c: Fix a race condition where a thread can start and
1357         exit before the handle has been properly initialised (no reason
1358         why the handle couldn't be initialised beforehand, so do so)
1359
1360         Fix a ms to ns conversion magnitude thinko.
1361
1362 2002-03-21  Dick Porter  <dick@ximian.com>
1363
1364         * semaphores.c: Fix a problem when waiting for one or more
1365         semaphores, and another semaphore is Released (all waiting
1366         semaphores assumed they were signalled)
1367
1368 2002-03-29  Dan Lewis <dihlewis@yahoo.co.uk>
1369
1370         * io.h, io.c, uglify.h: added MoveFile, CopyFile, CreateDirectory,
1371         RemoveDirectory, GetFileAttributes, GetFileAttributesEx
1372
1373 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
1374
1375         * threads.c (Sleep): bug fix: 1ms == 1000000ns
1376
1377 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
1378
1379         * io.h, io.c, events.c, mutexes.c, semaphores.c, sockets.c,
1380         threads.c, io.c: added flush method to handles.
1381
1382         * io.c: FlushFileBuffers() and FindFirstFile() functions.
1383
1384 Thu Mar 7 17:21:52 CET 2002 Paolo Molaro <lupus@ximian.com>
1385
1386         * threads.c, timed-thread.c, wait.c: Boehm-GC anable.
1387
1388 2002-02-20  Dick Porter  <dick@ximian.com>
1389
1390         * io-layer.h: Always build without cygwin support on windows
1391
1392 Mon Feb 18 15:50:59 CET 2002 Paolo Molaro <lupus@ximian.com>
1393
1394         * sockets.c: #undef DEBUG.
1395
1396 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1397
1398         * io-layer.h: conditionally include sys/filio.h and sys/sockio.h
1399         for FIONBIO, FIONREAD, and SIOCATMARK.
1400
1401 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
1402
1403         * sockets.c: conditionally include sys/filio.h and sys/sockio.h
1404         for FIONBIO, FIONREAD, and SIOCATMARK.
1405
1406 2002-02-13  Dick Porter  <dick@ximian.com>
1407
1408         * sockets.c: Implement shutdown and select
1409
1410 2002-02-13  Jeffrey Stedfast  <fejj@ximian.com>
1411
1412         * mono-mutex.[c,h]: New source files that thinly wrap all pthread
1413         functions that take pthread_mutex_t and/or pthread_mutexattr_t
1414         arguments for the sake of portability. Implements recursive
1415         mutexes and pthread_mutex_timedlock.
1416
1417         * critical-sections.c:
1418         * events.c:
1419         * handles.c:
1420         * mutexes.c:
1421         * semaphores.c:
1422         * threads.c:
1423         * timed-thread.c:
1424         * wait.c: Use the mono-mutex wrapper portability functions/macros.
1425
1426         * pthread-compat.[c,h]: Replaced by mono-mutex.[c,h]
1427
1428 2002-01-23  Dick Porter  <dick@ximian.com>
1429
1430         * sockets.c: Networking support, mostly wrapping BSD socket APIs
1431         with handle code, and translating errno into w32 error codes.
1432
1433         * macros.h: Some w32 macros used with the socket support
1434
1435         * error.c: Implemented GetLastError() and SetLastError()
1436
1437         * Makefile.am: Added sockets, with kludge to override some symbols
1438
1439 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
1440
1441         * unicode.c (_wapi_unicode_to_utf8): byteswap UTF16 strings before
1442         passing them to iconv
1443         (_wapi_unicode_to_utf8): only swap bytes on LE systems, remove bug
1444         from previous commit.
1445
1446 2001-12-11  Dick Porter  <dick@ximian.com>
1447
1448         * io.c: Implement DeleteFile(), GetFileTime(), SetFileTime() and
1449         FileTimeToSystemTime().
1450
1451         * unicode.c (unicode_len): Nasty way of finding length of unicode
1452         string with embedded NULLs (counts until two NULLs together).
1453
1454         * mutexes.c (mutex_close): 
1455         * events.c (event_close): Release the internal pthreads resources
1456
1457 2001-11-26  Dick Porter  <dick@ximian.com>
1458
1459         * critical-sections.c:
1460         * events.c:
1461         * handles.c:
1462         * io.c:
1463         * mutexes.c:
1464         * semaphores.c:
1465         * threads.c:
1466         * timed-thread.c:
1467         * wait.c: turn off DEBUG messages
1468
1469 2001-11-22  Dick Porter  <dick@ximian.com>
1470
1471         * handles.c (SignalObjectAndWait): Implement
1472
1473         * wait.c (WaitForSingleObject): Fix case where timeout == 0
1474
1475         * threads.c:
1476         * semaphores.c:
1477         * mutexes.c:
1478         * io.c:
1479         * events.c: Support for SignalObjectAndWait
1480         
1481 2001-11-21  Dick Porter  <dick@ximian.com>
1482
1483         * events.c:
1484         * handles.c:
1485         * mutexes.c:
1486         * semaphores.c:
1487         * threads.c:
1488         * wait.c: Reliable method of returning which handle was signalled
1489         on return from WaitForMultipleObjects().
1490
1491 2001-11-21  Dick Porter  <dick@ximian.com>
1492
1493         * events.c: Implement events
1494
1495 2001-11-15  Dick Porter  <dick@ximian.com>
1496
1497         * mutexes.c: Implement mutexes
1498
1499         * threads.c: 
1500         * semaphores.c: 
1501         * misc.c: Factor out some common code
1502
1503 2001-11-13  Dick Porter  <dick@ximian.com>
1504
1505         * threads.c: Implement TLS.  Implement GetCurrentThreadId(), and
1506         GetCurrentThread() by maintaining a hash of thread handles.
1507
1508         * threads.h: Define thread and process creation flags
1509
1510 2001-11-12  Dick Porter  <dick@ximian.com>
1511
1512         * critical-sections.c: Implement critical sections
1513
1514 2001-11-12  Dick Porter  <dick@ximian.com>
1515
1516         * semaphores.c: Implement semaphores
1517
1518         * wait.c (wait_for_item): Maintain a wait count rather than count
1519         signalled booleans.
1520
1521         * threads.c (thread_wait_multiple): Don't lock the wait item, that
1522         will block other wait threads
1523
1524 2001-11-11  Dick Porter  <dick@ximian.com>
1525
1526         * Makefile.am: Rename some automake variables
1527         (from Nick Drochak <ndrochak@gol.com>)
1528
1529 2001-11-10  Dick Porter  <dick@ximian.com>
1530
1531         * Makefile.am (libwapiincludedir): Fix include destination
1532
1533         * .cvsignore: Ignore generated files
1534
1535 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
1536
1537         * pthread-compat.c: added some include files to make it compile on
1538         linux.
1539
1540 2001-11-08  Dick Porter  <dick@ximian.com>
1541
1542         * Initial checkin.
1543
1544         This is a library emulating the win32 threading and IO API.