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