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