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