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