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