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