1 2008-02-08 Jonathan Pryor <jpryor@novell.com>
3 * UnixSignal.cs: UnixSignal.WaitAny() should have the same return type as
4 WaitHandle.WaitAny(). Oops.
6 2008-02-08 Jonathan Pryor <jpryor@novell.com>
8 * UnixSignal.cs: Modification of Info->count should be thread safe.
10 2008-02-08 Jonathan Pryor <jpryor@novell.com>
12 * UnixSignal.cs: Modification of Info->count should be thread safe.
14 2008-01-28 Jonathan Pryor <jpryor@novell.com>
16 * UnixSignal.cs: Added; Polling and blocking based Unix signal mechanism.
17 http://lists.ximian.com/pipermail/mono-devel-list/2008-January/026501.html
19 2008-01-22 Sebastien Pouliot <sebastien@ximian.com>
21 * UnixPipes.cs: Fix Equals to avoid NRE (and return false if object
22 is null). Found using Gendarme.
24 2007-12-17 Jonathan Pryor <jpryor@novell.com>
26 * UnixEnvironment.cs: Update MachineName property accesor to use uname(2)
27 instead of gethostname(2), as gethostname(2) truncates the machine name to
28 16 characters, while uname(2) doesn't.
30 2007-12-17 Jonathan Pryor <jonpryor@vt.edu>
32 * UnixDirectoryInfo.cs: Fix Parent property so that it properly handles
33 returning the parent of "/". UnixPath.GetDirectoryName() returns "" on
34 "error", not null; act accordingly.
35 * UnixDriveInfo.cs: Fix IsReady property so that it returns `false' if no
36 media is mounted. The presence of media is determined by comparing the
37 Statvfs.f_fsid value of the current and parent directories; if they
38 differ, it is assumed that media is present, and thus the directory is
39 ready. If they're identical, then media isn't present, and the directory
41 * UnixPath.cs: UnixPath.GetDirectoryName("/mnt") should return "/", not "".
43 2007-09-13 Jonathan Pryor <jonpryor@vt.edu>
45 * UnixStream.cs: Don't read/write if the buffer has no data. Fixes #82836.
47 2006-10-24 Jonathan Pryor <jonpryor@vt.edu>
49 * MapAttribute.cs: Moved to ../Mono.Unix.Native/MapAttribute.cs.
51 2006-08-21 Jonathan Pryor <jonpryor@vt.edu>
53 * UnixStream.cs: .Close() shouldn't close(2) the fd unless owner==true;
54 .Flush() should be a no-op (as System.IO.Stream.Flush doesn't gaurantee
55 that .Flush() actually flush to disk, and .Flush() slows things down a
56 lot); see: http://joeshaw.org/2006/08/21/415.
58 2006-08-16 Alp Toker <alp@atoker.com>
61 * AbstractUnixEndPoint.cs: Second half of the fix for #79084.
62 Add support for the abstract namespace, and update existing file-based
63 UnixEndPoint (de)serialization to reflect changes in the runtime.
65 2006-07-02 Jonathan Pryor <jonpryor@vt.edu>
67 * UnixSymbolicLinkInfo.cs: Oops. CreateSymbolicLinkTo() should create
68 FullPath, not OriginalName. This was fixed in one overload in January,
69 but I missed an overload. :-/
71 2006-07-02 Jonathan Pryor <jonpryor@vt.edu>
73 * UnixPath.cs: Follow .NET's System.IO.Path.Combine() behavior, and "reset"
74 the generated path if any argument beings with a path root --
75 UnixPath.Combine("/a", "/b") should return "/b", not "/a/b". Fixes #78580.
77 2006-04-21 Jonathan Pryor <jonpryor@vt.edu>
79 * UnixFileSystemInfo.cs: rename Create() to GetFileSystemEntry(), and make
80 it public (so that other's don't need to worry about the
81 Syscall.lstat()-and-switch to create a UnixFileSystemInfo instance).
82 * UnixDirectoryInfo.cs, UnixSymbolicLinkInfo.cs:
83 s/Create/GetFileSystemEntry/g (to cope with above change).
85 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
87 * UnixEndPoint.cs: added GetHashCode/Equals.
89 2006-03-06 Jonathan Pryor <jonpryor@vt.edu>
91 * UnixDriveInfo.cs: Remove requirement that mountPoints be avaible via
92 getfsfile(3). This isn't always the case -- in particular drives mounted
93 via HAL and other mechanisms won't be listed in /etc/fstab, and thus won't
94 be returned via getfsfile(3). If getfsfile(3) fails, then we "guess" on
95 the drive format and volume label.
96 * UnixStream.cs: RefreshStat() should assert that the instance hasn't been
98 * UnixEnvironment.cs (GetConfigurationValue, GetConfigurationString): Fix
101 2006-02-23 Jonathan Pryor <jonpryor@vt.edu>
103 * UnixFileSystemInfo.cs: Create() should return a UnixFileInfo if the file
104 doesn't exist. This allows callers to use UnixFileInfo.Exists to see if
105 the file exists, and behaves more rationally e.g. if the directory
106 contents changes while calling UnixDirectoryInfo.GetFileSystemEntries(),
107 we'll get a UnixFileInfo entry that doesn't exist instead of an exception
108 terminating the entire array creation.
109 * UnixSymbolicLinkInfo.cs: [Obsolete] the Contents property -- this property
110 *always* creates a new object if HasContents=true, and since a
111 UnixFileSystemInfo instance is (104+2*(sizeof(void*))+1) bytes (~113 bytes
112 on 32-bit platforms), we don't want to create these frequently. Add a
113 GetContents() method as the replacement, to make it (slightly) more
114 explicit that information won't be cached (and thus should be cached by
115 the caller, if appropriate). GetContents() throws an exception if
116 HasContents=false instead of returning null; this change brings the
117 implementation in line with the documentation.
119 2006-02-18 Alp Toker <alp@atoker.com>
121 * UnixEndPoint.cs: Avoid truncation of last two bytes of SocketAddress
124 2006-01-26 Jonathan Pryor <jonpryor@vt.edu>
126 * UnixMarshal.cs: Check for null arguments in PtrToString() and
129 2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
131 * UnixMarshal.cs (StringToHeap): Return IntPtr.Zero if `s' is null.
133 2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
135 * UnixMarshal.cs (StringToHeap): Check for null arguments.
137 2006-01-20 Jonathan Pryor <jonpryor@vt.edu>
139 * UnixDriveInfo.cs: Properties should generate an InvalidOperationException,
140 not an IOException. Users can use IsReady to avoid exception generation.
141 * UnixIOException.cs: Create a custom message that embeds the error name
142 within the text, e.g. "Permission denied [EACCES]."
143 * UnixSymbolicLinkInfo.cs: This really should create the file FullPath, not
144 OriginalPath. Created files shouldn't ever be relative to the current
145 working directory, as this can change at any time.
147 2006-01-15 Jonathan Pryor <jonpryor@vt.edu>
149 * UnixUserInfo.cs: The UnixUserInfo(Native.Passwd) constructor and
150 ToPasswd() should clone the underlying Native.Passwd, so
151 that it doesn't get changed from underneath it.
152 * UnixGroupInfo.cs: The UnixGroupInfo(Native.Group) constructor should also
153 clone the provided Native.Group instance.
155 2006-01-14 Jonathan Pryor <jonpryor@vt.edu>
157 * UnixGroupInfo.cs: ToGroup() should clone the underlying Native.Group, so
158 that it doesn't get changed from underneath it.
160 2006-01-13 Jonathan Pryor <jonpryor@vt.edu>
162 * Catalog.cs, UnixMarshal.cs: Throw `UnixIOException(Native.Errno.ENOMEM)`
163 instead of System.OutOfMemoryException. OOME should be reserved for use
164 by the CLR (according to FxDG).
166 2006-01-12 Jonathan Pryor <jonpryor@vt.edu>
168 * UnixPath.cs: Add ReadLink() and TryReadLink() methods.
170 2006-01-12 Miguel de Icaza <miguel@novell.com>
172 * PeerCred.cs: Do not define PeerCredData as this is a structure
173 known to the runtime. Instead use the Mono.Posix.PeerCredData
176 2006-01-10 Jonathan Pryor <jonpryor@vt.edu>
178 * Catalog.cs: Don't use
179 System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(), use
180 UnixMarshal.StringToHeap(). We require that the converted string be in
181 UTF-8 format, but .NET's Marshal.StringToHGlobalAuto converts to the local
182 code page, *not* UTF-8 (Mono's does UTF-8). UnixMarshal.StringToHeap
183 *always* does UTF-8, so use that instead.
185 2006-01-09 Jonathan Pryor <jonpryor@vt.edu>
187 * FileTypes.cs: Remove [Flags] attribute -- these aren't bitfield values.
188 * UnixFileSystemInfo.cs: Fix Is<<Type>> properties -- before it would
189 erroneously say that a symlink was a character device. (This is because
190 device values are *not* [Flags] values, but code was assuming they were.)
191 * UnixGroupInfo.cs: Clone the string[] returned from GetMemberNames(). We
192 don't want callers to change the underlying list.
194 2006-01-07 Jonathan Pryor <jonpryor@vt.edu>
196 * UnixMarshal.cs: *Actually* put things in alphabetical order (like the
197 comment says). I can speak english, really I can.
199 2006-01-06 Jonathan Pryor <jonpryor@vt.edu>
201 * Catalog.cs: s/libintl/intl/g, since intl.dll is used by GTK+ on Windows,
202 not libintl.dll (according to
203 http://www.gimp.org/~tml/gimp/win32/downloads.html).
205 2006-01-03 Jonathan Pryor <jonpryor@vt.edu>
207 * UnixMarshal.cs (CreateExceptionForError): Don't map ENOMEM to
208 System.OutOfMemoryException. OOME should be reserved for use by the CLR.
209 Return a UnixIOException instead (default behavior).
211 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
213 * StdioFileStream.cs: Shut up FxCop - add a GC.KeepAlive to
215 * UnixClient.cs, UnixListener.cs: Use System.MarshalByRefObject as the base
216 class. These types implement IDisposable and have a finalizer, so if an
217 instance of these types were sent to another AppDomain they'd previously
218 marshal by copy, which could lead to a double release of an unmanaged
219 resource -- potential badness. Using MarshalByRefObject fixes this.
221 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
223 * UnixMarshal.cs: s/EACCESS/EACCES/g. I can't read.
225 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
227 * StdioFileStream.cs, UnixDirectoryInfo.cs, UnixEnvironment.cs,
228 UnixFileInfo.cs, UnixFileSystemInfo.cs, UnixGroupInfo.cs,
229 UnixIOException.cs, UnixMarshal.cs, UnixProcess.cs, UnixStream.cs,
230 UnixSymbolicLinkInfo.cs, UnixUserInfo.cs: Remove Obsolete API.
231 * CdeclFunction.cs, IncludeAttribute.cs, Stdlib.cs, Syscall.cs,
232 UnixConvert.cs, UnixDirectory.cs, UnixFile.cs, UnixGroup.cs,
234 * UnixPath.cs: Remove InvalidPathChars; use GetInvalidPathChars() instead.
235 * FileTypes.cs: Remove Obsolete API
237 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
239 * FileAccessPermissions.cs: Remove UserMask, GroupMask, OtherMask values.
240 * FileSpecialAttributes.cs: Remove AllAttributes member; it shouldn't be
241 public. Use UnixFileSystemInfo.AllSpecialAttributes instead.
242 * StdioFileStream.cs: Open files in binary mode, not text;
243 Fix exception message for StdioFileStream(path, mode) mode param check.
244 * UnixDirectoryInfo.cs: Add Create(FileAccessPermissions) overload; change
245 GetFileSystemEntries() to include the directory name that the files came
246 from (otherwise they're in the current working direcetory, which they
248 * UnixFileInfo.cs: Add Create(FileAccessPermissions) overload; Add better
249 argument checking to several Open() overloads.
250 * UnixFileSystemInfo.cs: Add AllSpecialAttributes, AllFileTypes members;
251 FullPath member should invalidate instance if path changes; Change return
252 type of GetFileStatus for maintenance/better documentation; ToStat()
253 should ensure that the instance is valid first.
254 * UnixMarshal.cs: Add additional Errno values to CreateExceptionForError();
255 reformat CreateExceptionForError for maintenance.
256 * UnixPath.cs: Obsolete InvalidPathChars -- FxCop never liked it, and now I
257 know why it didn't like it (thank you Framework Design Guidelines!).
258 * UnixStream.cs: Use UnixFileSystemInfo.AllSpecialAttributes, not
259 FileSpecialAttributes.AllAttributes (which was removed).
260 * UnixSymbolicLinkInfo.cs: Change return type of GetFileStatus().
262 2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
264 * FileHandleOperations.cs: Check for null references.
266 2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
268 * UnixMarshal.cs: Errno.EBADF should also trigger a ArgumentException.
270 2005-12-27 Jonathan Pryor <jonpryor@vt.edu>
272 * FileHandleOperations.cs, FileTypes.cs, Stdlib.cs, Syscall.cs,
273 UnixConvert.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
274 UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
275 UnixGroup.cs, UnixGroupInfo.cs, UnixIOException.cs, UnixMarshal.cs,
276 UnixPath.cs, UnixPipes.cs, UnixProcess.cs, UnixStream.cs,
277 UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs: Mark to-be-removed
278 API with [Obsolete(IsError=true)] (permits compiler assistance for finding
279 obsolete code); Migrate to the Mono.Unix.Native API.
280 * StdioFileStream.cs: Add non-Obsolete overloads for SaveFilePosition &
281 RestoreFilePosition (oops). Migrate to Mono.Unix.Native API.
283 2005-12-07 Jonathan Pryor <jonpryor@vt.edu>
285 * UnixMarshal.cs: Add PtrToStringUnix() -- specialized PtrToString method
286 which is significantly faster than PtrToString(p, UnixEncoding.Instance).
287 Use System.String..ctor(sbyte*, int, int, Encoding) to avoid the byte[]
288 intermediate copy -- much faster. Fix PtrToString() so that it will
289 accept an IntPtr containing 0 characters, and don't duplicate strings
292 2005-11-18 Jonathan Pryor <jonpryor@vt.edu>
294 * Catalog.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
295 UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
296 UnixGroup.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixSymbolicLinkInfo.cs,
297 UnixUser.cs, UnixUserInfo.cs: Change types of [Obsolete] members for
298 consistency and CLS compliance; Mono.Unix.Native type migration.
299 * FileTypes.cs: s/Special/Device/g (CharacterSpecial ==> CharacterDevice).
300 The *Special was a BSD convention, while UnixFileSystemInfo uses *Device
301 in property names, and these should be consistent. Changing the enum is
302 simpler than changing the UnixFileSystemInfo properties.
303 * UnixIOException.cs: s/error/errno/g (FxCop suggestion); change type of
305 * UnixMarshal.cs: s/error/errno/g (FxCop suggestion); Mono.Unix.Native
308 2005-11-08 Jonathan Pryor <jonpryor@vt.edu>
310 * Catalog.cs: Exception safety improvements (don't let memory leak!); check
311 for errors with bindtextdomain(3) et. al.
313 2005-11-08 Jonathan Pryor <jonpryor@vt.edu>
315 * UnixPipes.cs: Provide Equals, GetHashCode, and operator==/operator!= to
316 conform with FxCop guidelines for structures.
318 2005-11-03 Jonathan Pryor <jonpryor@vt.edu>
320 * FileTypes.cs, UnixFileSystemInfo.cs: s/FIFO/Fifo/ to follow .NET
321 naming conventions (as reported by FxCop).
323 2005-11-01 Jonathan Pryor <jonpryor@vt.edu>
325 * UnixDirectoryInfo.cs, UnixDriveInfo.cs, UnixEnvironment.cs,
326 UnixFileSystemInfo.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixUserInfoc.cs:
327 Obsolete statements now specify in what way the return type will change.
328 * IncludeAttribute.cs: Obsoleted. It's an error to use it now.
330 2005-11-01 Jonathan Pryor <jonpryor@vt.edu>
332 * FileAccessPattern.cs: Change enumeration names to match Robert Love's more
333 sensible names from his FileAdvise class used in Beagle
334 (UseSoon --> PreLoad, WillNotUse --> FlushCache).
335 * FileHandleOperations.cs: Added; contains AdviseFileAccessPattern()
336 (moved from UnixFile.cs).
337 * UnixDirectory.cs: Obsolete the class; use UnixDirectoryInfo instead.
338 * UnixDirectoryInfo.cs: Add GetCurrentDirectory(), SetCurrentDirectory().
339 * UnixFile.cs: Obsolete the class; use UnixFileInfo, FileHandleOperations,
340 or UnixPipes instead.
341 * UnixFileSystemInfo.cs: Add ToStat() method.
342 * UnixGroup.cs: Obsolete the class; use UnixGroupInfo instead.
343 * UnixGroupInfo.cs: Obsolete & Replace constructor, add GetMemberNames(),
345 * UnixPipes.cs: Added (type moved from UnixFile.cs).
346 * UnixStream.cs: AdviseFileAccessPattern() uses FileHandleOperations now.
347 * UnixSymbolicLinkInfo.cs: Implement TryReadLink() to avoid constant buffer
348 re-sizing. Stevens states that the file size of the symlink is the number
349 of bytes needed to hold the symlink, so this should be faster.
350 * UnixUser.cs: Obsolete the class; use UnixUserInfo instead.
351 * UnixUserInfo.cs: Obsolete & Replace constructor; add useful static members
352 from UnixUser such as GetLoginName(), GetLocalUsers(), etc.
354 2005-10-27 Jonathan Pryor <jonpryor@vt.edu>
356 * UnixEnvironment.cs: Add RealUser, RealGroup, EffectiveUser, EffectiveGroup
357 properties; [Obsolete] necessary methods and provide replacements.
358 * UnixStream.cs: Add OwnerUser(Id), OwnerGroup(Id) properties;
359 improve Stat handling.
361 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
363 * UnixEncoding.cs: Change EscapeByte to 0x0000, as suggested by Michal
365 * UnixPath.cs: Remove '\0' from InvalidPathChars, since U+0000 is now used
366 as the path escape character for marshaling purposes.
368 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
370 * UnixMarshal.cs: Obsolete heap-related methods to have a Heap suffix
371 (AllocHeap, FreeHeap, etc.), and change StringToAlloc() to be
372 StringToHeap(). This creates a stronger name association between related
375 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
377 * UnixIOException.cs: Add (string) and (string, Exception) constructors to
378 silence FxCop; re-work logic so we lookup the error string at construction
379 time and use this as the message for the base class.
381 2005-10-25 Jonathan Pryor <jonpryor@vt.edu>
383 * Stdlib.cs, Syscall.cs: Filenames need to be marshaled through the
384 FileNameMarshaler, which will encode/decode filenames with UnixEncoding.
385 * UnixEncoding.cs: Added (copied from
386 ../../corlib/System.Text/UTF8Encoding.cs); a hack to permit handling of
387 arbitrarily encoded filenames. It attempts to decode a byte[] array as
388 UTF-8, and if the decode fails it prefixes each byte with
389 UnixEncoding.EscapeByte (\uFFFF).
390 * UnixMarshal.cs: Use UnixEncoding as the default encoding, and special-case
391 UnixEncoding to use Stdlib.strlen() for native string lengths.
393 2005-10-21 Jonathan Pryor <jonpryor@vt.edu>
395 * FileAccessPattern.cs: Added
396 * UnixFile.cs, UnixStream.cs: Deprecate all the Advise* methods (lots!)
397 and replace with 6 methods which take a FileAccessPattern enum.
399 2005-10-19 Jonathan Pryor <jonpryor@vt.edu>
401 * FileAccessPermissions.cs, FileSpecialAttributes.cs, FileTypes.cs: Added.
402 * UnixFileSystemInfo.cs, UnixStream.cs: Replace the old Permission property
403 with 4 new properties: Protection (for the Native.FilePermissions value),
404 FileAccessPermissions (for rwxrwxrwx info), FileSpecialAttributes (for
405 set-user-id, set-group-id, sticky), and FileTypes (directory, socket...).
406 The new enumeration types have nicer CLS-compliant names.
408 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
410 * UnixMarshal.cs: Fix GetIntXxBufferLength to require fewer
411 Marshal.ReadIntXx() calls; Fix PtrToString so that
412 ``"foo" == PtrToString (StringToAlloc("foo",enc),enc)'' is true for
415 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
417 * UnixFileSystemInfo.cs: Add OwnerUserId and OwnerGroupId properties.
419 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
421 * UnixDriveInfo.cs, UnixEnvironment.cs, UnixFile.cs, UnixFileSystemInfo.cs,
422 UnixGroup.cs, UnixStream.cs, UnixUser.cs: Don't use SetLastError(), since
423 it's use is (1) incorrect, and (2) will be going away with the move to
424 Mono.Unix.Native.Syscall. Instead use the Native.Syscall.* APIs which
427 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
429 * UnixGroup.cs, UnixGroupInfo.cs, UnixFile.cs, UnixFileSystemInfo.cs,
430 UnixStream.cs, UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
431 Start migrating uid/gid to long (from uint) for CLS compliance.
432 (Full migration must wait 'til after the next release as this would
433 require changes to existing members.)
434 * UnixEnvironment.cs: Above, and add RealUserId/RealGroupId and
435 EffectiveUserId/EffectiveGroupId.
437 2005-10-14 Jonathan Pryor <jonpryor@vt.edu>
439 * Catalog.cs: Create a constructor and mark it [Obsolete]. It will be made
440 private after the next release.
441 * UnixFile.cs, UnixStream.cs: Deal with Mono.Unix.Native type name changes.
442 * UnixFileSystemInfo.cs: [Obsolete] more members; Deal with Mono.Unix.Native
444 * Syscall.cs: Create maps for PathConf, SysConf, ConfStr again; fpathconf(),
445 pathconf(), and sysconf() should call Native.Syscall since the
446 MonoPosixHelper.so helpers have changed.
448 2005-10-13 Jonathan Pryor <jonpryor@vt.edu>
450 * UnixMarshal.cs: More/better StringToAlloc/PtrToString which take a
451 System.Text.Encoding instance for proper string marshaling.
452 - PtrToString(string,Encoding) is particularly tricky due to variable
454 - Fix StringToAlloc so that it works properly with UTF-16 encodings
455 (we need a terminating null 16-bit word, not a null byte).
456 - StringToAlloc overload for doing substrings.
458 2005-10-12 Jonathan Pryor <jonpryor@vt.edu>
460 * UnixStream.cs: Check for EROFS and EINVAL in Flush(). Snorp was getting
461 an exception when he created a UnixStream around a socket, because
462 sockets can't be flushed. It should be acceptable to create a UnixStream
463 around a socket, so don't throw an exception in this scenario.
465 2005-10-06 Jonathan Pryor <jonpryor@vt.edu>
467 * UnixDirectory.cs, UnixDirectoryInfo.cs UnixFile.cs, UnixFileSystemInfo.cs,
468 UnixGroupInfo.cs, UnixIOException.cs, UnixStream.cs, UnixUserInfo.cs:
469 API Review: Obsolete appropriate members and add appropriate overloads for
470 pending move to Mono.Unix.Native types.
471 * UnixMarshal.cs: API Review; add StringToAlloc().
473 2005-09-26 Jonathan Pryor <jonpryor@vt.edu>
475 * UnixFileSystemInfo.cs: Exists shouldn't use access(2), as (1) Exists isn't
476 virtual, and (2) access(2) errors if you try to access(2) a symlink which
477 points nowhere. Use (l)stat(2) instead, via GetFileStatus(), as this lets
478 UnixSymbolicLinkInfo behave properly.
479 * UnixSymbolicLinkInfo.cs: The Contents property should return null if the
480 symlink target doesn't exist.
482 2005-09-20 Jonathan Pryor <jonpryor@vt.edu>
484 * Syscall.cs: Add [Map] to AccessMode and MmapProt, as the Mono.Unix.Native
485 replacements go by different names (AccessModes, MmapProts), but we need
486 to continue generating the mapping code for these types (backward compat).
488 2005-09-20 Jonathan Pryor <jonpryor@vt.edu>
490 * CdeclFunction.cs: [Obsolete]d by Mono.Unix.Native.CdeclFunction.
491 * make-map.cs: Remove.
492 * Stdlib.cs: [Obsolete] the types; use the Mono.Unix.Native.* types instead.
493 * StdioFileStream.cs: Add GC.KeepAlive statements to prevent premature GC's
495 * Syscall.cs: Remove [Map] attribute from all types; [CLSCompliant(false)]
496 work; [Obsolete] all types and suggest using the Mono.Unix.Native.*
497 replacements; remove [IncludeAttribute] -- superseded by
498 Mono.Unix.Native/Syscall.cs's [HeaderAttribte] for CLS compliance.
499 * UnixConvert.cs: [Obsolete]d by Mono.Unix.Native.NativeConvert.
500 * UnixDirectory.cs, UnixDriveInfo.cs, UnixEnvironment.cs,
501 UnixGroup.cs, UnixGroupInfo.cs,
502 UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
503 Add [CLSCompliant(false)] as necessary.
504 * UnixFile.cs, UnixDirectory.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs:
505 [CLSCompliant(false)], addition of method overloads for [Obsolete]d types,
506 warn about changing return types.
507 * UnixProcess.cs, UnixStream.cs: Add [CLSCompliant(false)] as necessary,
508 and warn about changing property types.
510 2005-09-02 Jonathan Pryor <jonpryor@vt.edu>
512 * Stdlib.cs: Cache delegates passed to Stdlib.signal() so that they survive
513 garbage collections. Delegates can be removed by calling Stdlib.signal()
514 again with one of the Stdlib.SIG_* values (or the original return value of
516 * UnixUser.cs, UnixGroup.cs, UnixEnvironment.cs: Clarify "Id" (int) vs.
517 "Name" (string) differences by always using a Id or Name suffix.
519 2005-07-01 Daniel Drake <dsd@gentoo.org>
521 * Syscall.cs: The entire extended attribute API now goes through MPH, to
522 be shared between both Linux's and FreeBSD's similar EA implementations.
524 2005-06-29 Miguel de Icaza <miguel@ximian.com>
526 * StdioFileStream.cs: Only flush if we do not own the handle, as
527 fclose does a flush internally.
529 2005-06-29 Jonathan Pryor <jonpryor@vt.edu>
531 * UnixEnvironment: Add User, Login properties.
532 * Syscall.cs: Add locking around cuserid, crypt, encrypt, getlogin.
534 2005-06-29 Jonathan Pryor <jonpryor@vt.edu>
536 * Syscall.cs: SyslogFacility shouldn't be [Flags] either. Sigh.
537 Thanks to Vorobiev Maksim for pointing this out.
538 * make-map.cs: Don't generate conversion code for [Obsolete] enum members.
539 This assumes that (1) the enum member's value is invalid, or (2) a
540 corrected member with the same value exists. This fix allows us to
541 obsolete invalid members (instead of removing them) without screwing up
542 the generated code -- consider LOG_USRE, the mis-spelling of LOG_USER.
543 Since SyslogFacility was (incorrectly) a [Flags] enum, since both LOG_USER
544 and LOG_USRE had the same value, we'd get a EINVAL error trying to convert
545 a valid value, since LOG_USRE would exist, would be checked for, and the
546 check would succeed (since it had the same value as LOG_USER).
547 This change allows us to be slightly more permissive with versioning.
549 2005-06-28 Jonathan Pryor <jonpryor@vt.edu>
551 * Syscall.cs: correct value of LOG_CRON (it shouldn't be identical to
552 LOG_UUCP). SyslogLevel shouldn't have [Flags]. Move LOG_USER to be
553 before LOG_USRE so that the generated map code doesn't return EINVAL when
554 LOG_USER is specified.
556 2005-06-15 Jonathan Pryor <jonpryor@vt.edu>
558 * Syscall.cs: s/LOG_USRE/LOG_USER/. Fixes #75274.
559 Thanks to Martin Honermeyer.
561 2005-06-09 Jonathan Pryor <jonpryor@vt.edu>
563 * make-map.cs: Look for [Obsolete] members, and mark the UnixConvert
564 conversion functions with the same [Obsolete] message. This should permit
565 more graceful deprecation of enumerations in the future (rather than just
568 2005-06-08 Jonathan Pryor <jonpryor@vt.edu>
570 * Syscall.cs: Add execvp(2). (This should have been added with the other
571 exec(2) additions...).
573 2005-06-08 Jonathan Pryor <jonpryor@vt.edu>
575 * Syscall.cs: Update comment with correct exception type.
576 * UnixConvert.cs: Rename ToFilePermissions(string) to
577 FromOctalPermissionString; Add ToOctalPermissionString,
578 FromUnixPermissionString, ToUnixPermissionString.
579 * UnixMarshal.cs: Remove ErrorMarshal.HaveStrerror_r and
580 UnixMarshal.IsErrorDescriptionThreadSafe. strerror(3) is now thread-safe
581 (from managed code, at least). Update comment.
583 2005-06-07 Jonathan Pryor <jonpryor@vt.edu>
585 * UnixFileSystemInfo.cs: Don't use lstat(2), use stat(2). This fits with
586 expectations better -- if you create a UnixFileInfo() on a symlink, you
587 want to get the target's information, not the symlink's info. Add
588 GetFileStatus so UnixSymbolicLinkInfo can override this behavior.
589 * UnixSymbolicLinkInfo.cs: Implement GetFileStatus() (which calls lstat(2)).
591 2005-06-07 Jonathan Pryor <jonpryor@vt.edu>
593 * Syscall.cs: Document naming conventions.
595 2005-06-05 Jonathan Pryor <jonpryor@vt.edu>
597 * make-map.cs: Change automatic "ifdef HAVE_<header>" support prefix to
598 "ah:" from ">". I hadn't known about ">", and "ah:" is (somewhat) more
600 * Syscall.cs: Change IncludeAttribute to put all headers/defines one/line.
601 It's easier to read this way. Add "ah:sys/xattr.h" to the headers.
603 2005-06-03 Jonathan Pryor <jonpryor@vt.edu>
605 * Stdlib.cs: Add sanity checking to snprintf(3) to avoid buffer overflows.
607 2005-06-02 Jonathan Pryor <jonpryor@vt.edu>
609 * StdioFileStream.cs: Remove FilePosition property & replace with
610 SaveFilePosition/RestoreFilePosition methods. Since FilePosition has a
611 finalizer, it's not right to have implicitly created instances.
613 - FilePosition: GC.SuppressFinalize() should be last in Dispose()
614 (following .NET guidelines).
615 - Syscall: Add locking around functions most likely to be thread unsafe.
616 This should provide some level of thread-safety to managed code.
617 * Syscall.cs: Add locking around functions most likely to be thread unsafe;
618 add mkstemp(3) export.
619 * UnixEnvironment.cs: GetUserShells should be atomic (from managed code).
620 * UnixGroup.cs: GetLocalGroups should be atomic (from managed code).
621 * UnixGroupInfo.cs: Add ToGroup() method to retrieve underlying Group info.
622 * UnixUser.cs: GetLocalUsers should be atomic (from managed code).
623 * UnixUserInfo.cs: Add ToPasswd () method to retrieve underlying Passwd info.
624 * UnixDriveInfo.cs: GetDrives should be atomic (from managed code).
626 2005-05-31 Jonathan Pryor <jonpryor@vt.edu>
628 * Stdlib.cs: Add comment for atexit(3) so I don't try to add it.
629 * Syscall.cs: Add fcntl(2) overload which takes DirectoryNotifyFlags (so
630 that *something* accepts a DirectoryNotifyFlags); Fix IncludeAttribute
631 header files (">sys/poll.h" doesn't exist);
632 Add additional <sys/mman.h> functions mmap, munmap, msync, mlock, munlock,
633 mlockall, munlockall, mremap, mincore, remap_file_pages.
634 * UnixConvert.cs: Add conversion functions for MmapFlags, MmapProt, MsyncFlags,
635 MlockallFlags, MremapFlags.
637 2005-05-31 Jonathan Pryor <jonpryor@vt.edu>
639 * Syscall.cs, UnixConvert.cs: Rename LockFlags to LockfCommand. This is a more
640 consistent naming, and it's more correct (they weren't flags in the first place).
642 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
644 * Stdlib.cs: Correct Mono_Posix_Stdlib_InvokeSignalHandler export.
646 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
648 * make-map.cs: Process the Mono.Posix namespace as well as Mono.Unix; add
649 mapping for Boolean => int for native type conversion.
651 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
653 * make-map.cs: Add a MphPrototypeFileGenerator, which looks for DllImport
654 methods across all types and generates a C header file declaration for
655 those methods. This allows us to ensure consistency between
656 Mono.Posix.dll and MonoPosixHelper.so. Rename WrapperFileGenerator to
657 ConvertFileGenerator (it generates UnixConvert).
658 * MapAttribute.cs, IncludeAttribute.cs: Make these internal -- there's no
659 reason for external users to even know these exist.
660 * StdioFileStream.cs: Move GC.SuppressFinalize call to be last Dispose()
661 call. This follows current design guidelines, and allows an exception to
662 be thrown from Dispose() without un-registering the finalizer.
663 * Syscall.cs: Change method declarations to match MonoPosixHelper, etc.
664 - posix_fallocate(P) takes a size_t
665 - mis-spelled settimeofday(2), sethostname(2)
666 - exec(2) can be public; it's safe to call
667 - change lseek(2) so int's are passed to MonoPosixHelper.so, not shorts
668 - We can't allow two incompatible prototypes to exist (since C allows
669 only one prototype, and we're cross-checking prototypes now). Change
670 utime(2) so only one prototype is needed.
671 * UnixMarshal.cs: ErrorMarshal.ErrorTranslator and ErrorMarshal.Translate
672 shouldn't be public; make them internal.
673 * UnixStream.cs: Remove `unsafe` code block when a "safe" alternative works;
674 Close() should also call GC.SuppressFinalize.
676 2005-05-12 Jonathan Pryor <jonpryor@vt.edu>
678 * Syscall.cs: The Statvfs structure should contain a MountFlags enumeration,
679 not a ulong (we can "safely" do this since POSIX defines some values for
680 f_flag, so we should be kind and expose them).
681 * UnixConvert.cs: Add MountFlags conversion functions.
683 2005-05-02 Joe Shaw <joeshaw@novell.com>
685 * UnixListener.cs (Init): Remove the call to Cleanup() and the
686 method itself, which was not supposed to be here. We try to
687 connect to the socket if it exists instead of deleting it
690 2005-04-30 Ben Maurer <bmaurer@ximian.com>
692 * Stdlib.cs: Comment out usage of `UnmanagedFunctionPointer'. It
693 isn't supported in the runtime -- it throws an assert -- so better
694 not to use it at all for now.
696 2005-04-29 Jonathan Pryor <jonpryor@vt.edu>
698 * UnixConvert.cs: Fix time_t -> DateTime conversions. time_t should be
699 assumed to be in the local time zone, so don't mess with UTC shifts.
700 This allows Mono.Unix to produce sane output (e.g. identical to ls(1) or
701 stat(1), instead of several hours different).
703 2005-04-29 Jonathan Pryor <jonpryor@vt.edu>
705 * Stdlib.cs: Make FilePosition slightly more useful by providing a
706 ToString() override which dumps the fpos_t structure contents into a
707 hex string. Add Equals(), GetHashCode(), operator==, and operator!=
708 so FilePosition behaves like a value type.
710 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
713 * UnixListener.cs: TcpListener/TcpClient clones from Jow Shaw.
715 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
717 * Mono.Posix.dll.sources: added UnixListener and UnixClient from Joe
720 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
722 * UnixEndPoint.cs: fix from Mono.Posix.
724 2005-04-20 Jonathan Pryor <jonpryor@vt.edu>
726 * Syscall.cs: Make all fork(2) and exec(2) functions `private`. It
727 currently isn't safe to call these under *any* circumstances. See also
728 68141, and this pertinent quote from Butenhof's
729 "Programming with POSIX Threads", p197, s6.1:
731 "When a threaded process calls fork to create a child process,
732 Pthreads specifies that only the thread calling fork exists in the
733 child. ... Pthreads does not 'terminate' the other threads in a forked
734 process...They simply cease to exist. ... This is not a problem if
735 the child process is about to call exec to run a new program, but if
736 you use fork to clone a threaded program, beware that you may lose
737 access to memory, especially heap memory stored only as
738 thread-specific data values."
740 Since P/Invoke currently requires using thread local storage, once you
741 fork(2) you won't be able to invoke exec(2) from managed code (since that
742 would require a P/Invoke transition to call exec(2), which would require
743 TLS, which doesn't exist in the new process).
745 This can only be fixed by removing the TLS dependency on P/Invoke, which
746 isn't a priority (and may not be possible).
748 The workaround is to create a C function which does your fork(2)/exec(2)
749 (and any other functions such as daemon(3)) on your behalf, and P/Invoke
750 to call this C function.
752 2005-04-18 Jonathan Pryor <jonpryor@vt.edu>
754 * Syscall.cs: Update comment specifying which functions belong in Syscall.
755 * UnixConvert.cs: Add XattrFlags conversion functions.
756 * UnixMarshal.cs: Remove warning about self-assignment.
758 2005-04-16 Daniel Drake <dsd@gentoo.org>
760 * Syscall.cs: Add bindings for extended attribute manipulation
762 2005-04-05 Miguel de Icaza <miguel@novell.com>
764 * Syscall.cs: Set entry point for sys_syslog to be syslog.
765 Include the syslog.h header in the generated map so that we
766 actually do the mapping.
768 2005-03-28 Jonathan Pryor <jonpryor@vt.edu>
770 * UnixConvert.cs: Add ToFopenMode() methods, which convert FileMode/FileAccess
771 into an fopen(3) mode string. ToOpenFlags() should throw
772 ArgumentOutOfRangeException for argument violations.
773 * StdioFileStream.cs: Add constructor overloads accepting filename and
774 FileMode/FileAccess overloads; Compatibility fixes with regression tests;
775 remove IDisposable implementation since System.IO.Stream already
776 implements it (which calls Close() for us).
778 2005-03-17 Jonathan Pryor <jonpryor@vt.edu>
780 * Stdlib.cs: Move Errno-related functionality into Stdlib from Syscall,
781 since (1) errno is part of C89, and (2) StdioFileStream will need it, and
782 StdioFileStream shouldn't use Syscall. Add [UnmanagedFunctionPointer]
783 attribute to SignalHandler for .NET 2.0 (since signal handlers use C
784 calling convention, not Stdcall).
785 * Syscall.cs: Move Errno-related functionality into Stdlib.
786 * UnixMarshal.cs: Use ERANGE not EPERM when figuring out appropriate
787 translator, since ERANGE is part of C99 and EPERM isn't. Use Stdlib
788 instead of Syscall for Errno-related functionality.
790 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
792 * UnixFile.cs: Cope with changes in UnixStream.
793 * UnixStream.cs: Change FileDescriptor property to Handle for consistency.
794 * StdioFileStream.cs: Change FileStream property to Handle for consistency.
796 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
798 * Syscall.cs: Remove public sys_ methods. Some were public by mistake, and
799 others so that users could manually marshal strings if desired. Manually
800 marshaling strings shouldn't be necessary, though, so remove them too.
802 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
804 * StdioFileStream.cs: Fix Length property to actually return the size of the
805 file, not the # of bytes from the current position to EOF. Oops.
807 2005-01-31 Jonathan Pryor <jonpryor@vt.edu>
809 * Stdlib.cs: Import "msvcrt", not "libc". These members are part of the
810 ANSI C standard, and thus should be present on Windows via msvcrt.dll
811 (except snprintf, until they catch up to C99). Change the calling
812 convention of all functions to Cdecl, as the .NET default is Stdcall.
813 Changing the calling convention isn't needed in Syscall, as it can only be
814 run on Unix platforms anyway, where the default is Cdecl.
815 * Syscall.cs: Add LIBC member that points to the real "libc"; we can't use
816 the imported definition from Stdlib as "msvcrt" doesn't exist on Unix.
818 2005-01-29 Jonathan Pryor <jonpryor@vt.edu>
820 * Stdlib.cs: sys_* functions shouldn't be public.
822 2005-01-13 Jonathan Pryor <jonpryor@vt.edu>
824 * make-map.cs: libMonoPosixHelper exports Mono_Posix prefixes, not Mono_Unix
825 prefixes, so change the type and namespace to generate compatible code.
826 * Syscall.cs: Change OpenFlags values so they match the Linux values.
828 2005-01-13 Jonathan Pryor <jonpryor@vt.edu>
830 * Stdlib.cs: Use Stdlib.LIBC instead of "libc".
831 * StdioFileStream.cs: Add FilePosition property (not that I expect anyone to
832 use it) and Rewind() method.
834 2005-01-05 Jonathan Pryor <jonpryor@vt.edu>
836 * StdioFileStream.cs: Added; System.IO.Stream wrapper for C FILE struct.
837 * Stdlib.cs: Correct visibility of ftell().
839 2005-01-05 Jonathan Pryor <jonpryor@vt.edu>
841 * Stdlib.cs: Re-order declarations to match the order used in the
842 C99 Standard Annex B; Complete <stdio.h> exports (except for those not
843 worth supporting); Add non-"unsafe" versions of fread(3), fwrite(3) and
844 add some rudimentary buffer-overflow checking; Add <stdlib.h> exports such
845 as getenv(3), exit(3), rand(3), EXIT_SUCCESS, RAND_MAX, etc.
847 2005-01-03 Jonathan Pryor <jonpryor@vt.edu>
849 * Syscall.cs: Update endfsent() and setfsent() declarations, as these must
850 now be implemented in MonoPosixHelper.
852 2005-01-01 Jonathan Pryor <jonpryor@vt.edu>
854 * Stdlib.cs, Syscall.cs: Minimize duplicate declarations of
855 "MonoPosixHelper" for use in DllImport statements.
857 2005-01-01 Jonathan Pryor <jonpryor@vt.edu>
859 * Stdlib.cs: Don't use C# v2 features; fixes build under CSC.EXE.
861 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
863 * Stdlib.cs: On miguel's suggestion, rename Sighandler_t to SignalHandler.
865 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
867 * Stdlib.cs: Implement all C89 <stdio.h> functions except for the scanf(3)
868 family. These are too dangerous to expose.
870 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
872 * CdeclFunctions.cs: Remove warning about unused variable.
873 * Stdlib.cs: Make signal(2) sane and (hopefully) complete.
874 * Syscall.cs: Fix cuserid Obsolete message to reference correct class name.
875 * UnixProcess.cs: Remove warning about unused variable.
876 * UnixMarshal.cs: Remove warnings about unused variables.
878 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
880 * UnixPath.cs: Add ReadSymbolicLink(), which takes an intelligent approach
881 to reading symlinks (since their contents may be any size, we grow the
882 buffer dynamically to fit them all, instead of assuming a maximum size).
883 * UnixSymbolicLinkInfo.cs: Remove MaxContentsSize.
885 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
887 * UnixPath.cs: Add check for when symlink points to a full path name.
889 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
891 * Syscall.cs: Fix Object.Equals implementations.
892 * UnixPath.cs: New & improved, with Testing! GetRealPath() is changed so
893 that it doesn't walk the entire path looking for symlinks, it just reads
894 the leaf. GetCompletRealPath() walks the entire path resolving symlinks.
895 GetCanonicalPath() added, which "cleans up" a path (removing extraneous
896 "." and ".." entries).
897 * UnixSymbolicLinkInfo.cs: Rename ContentsLength -> MaxContentsSize.
899 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
901 * UnixFileSystemInfo.cs: Add a link(2) wrapper, CreateLink(). Strictly
902 speaking it's only "safe" to do this on files, but an exception will be
903 returned if the user tries to hard link directories (because of EPERM),
904 unless the user is root, in which case it should be allowed anyway...
906 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
908 * CdeclFunctions.cs: Correct the comments for AMD64
909 * UnixDirectoryInfo.cs: override Name; add Parent & Root properties;
910 Correct Path usage (s/Path/FullPath/g).
911 * UnixDriveInfo.cs: Added. Based on .NET 2.0 System.IO.DriveInfo docs,
912 provides statvfs(2) and getfsfile(3) information about a mounted volume.
913 GetDrives() wraps getfsent(3), thus parsing /etc/fstab.
914 * UnixFile.cs: Use UnixConver.ToOpenFlags, deleting the local version.
915 * UnixFileInfo.cs: Use UnixConver.ToOpenFlags, deleting the local version;
916 override Name; add DirectoryName and Directory properties;
917 * UnixFileSystemInfo.cs: Make more .NET-like, using FullPath and
918 OriginalPath protected members, abstract Name property; Add
919 CreateSymbolicLink; Remove ReadLink (it's now
920 UnixSymbolicLinkInfo.Contents); Use lstat(2) for Create(string), so we
921 properly detect Symbolic Links.
922 * UnixPath.cs: Added; Path manipulation utility functions.
923 * UnixSymbolicLinkInfo.cs:
925 - override new abstract member Name;
926 - rename ReadLink to ContentsPath (and Contents) properties
927 (why "Contents"? Because readlink(2) says "readlink places the
928 contents of the symbolic link in the buffer...")
929 - Add CreateSymbolicLinkTo(), which creates a symlink to the specified
932 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
934 * Stdlib.cs: Add syslog(3) to XPrintfFunctions; Add additional printf(3)
935 and fprintf(3) overload which properly escape the format string
936 (by using "%s" as the format for the user-supplied message).
937 * Syscall.cs: Add #regions for enummerations, structures, classes; Wrap
938 syslog(3) and related enumerations; fix operator!= on Dirent, Group;
939 wrap {f}statvfs(2); wrap <fstab.h> entries (getfsent(3), etc.).
940 * UnixConvert.cs: Add Syslog-releated enumeration translation functions;
941 Move ToOpenFlags here from UnixFile and UnixFileInfo.
942 * UnixMarshal.cs: Missing P/Invoke methods throw
943 EntryPointNotFoundException, not MissingMethodException; add
944 EscapeFormatString, which escapes printf-style format strings so that they
945 can be safely handed off to native code (avoiding stack overflow, etc);
946 make CreateExceptionForError internal.
948 2004-12-15 Jonathan Pryor <jonpryor@vt.edu>
950 * Stdlib.cs: Add more <stdio.h> wrappers, such as fread(3) and fwrite(3).
951 These will be useful in implementing System.IO.Stream subclass for
952 reading/writing to a FILE*. Fix a typo in the realloc(3) DllImport.
953 * Syscall.cs: Fix the sys_kill and sys_crypt declarations.
954 * CdeclFunction.cs: Document calling convention problems on AMD64.
956 2004-11-18 Jonathan Pryor <jonpryor@vt.edu>
958 * CdeclFunction.cs: Added.
959 * Stdlib.cs: Re-add printf(3) and fprintf(3). They may not be portable (the
960 jury is still out on that; the AMD64 SysV ABI looks like it should be
961 portable to AMD64 to my eyes), but they will work on *some* platforms, so
962 we should permit it. The new implementation takes a page out of
963 cocoa-sharp: use System.Reflection.Emit to generate a P/Invoke method at
964 runtime to invoke printf(3) or fprintf(3). This way, we can export a
965 params signature to C# code, permitting natural usage such as:
966 Stdlib.printf ("Hello, %s world! (%i)\n", "silly", 42);
967 * Syscall.cs: Mark which headers are complete, which functions still need
968 wrapping (for headers which have anything done to them), add #region
969 blocks for each header;
970 export mkfifo(3), fexecve(), getppid(2), setlogin(); fix sleep(3) export.
971 * UnixEnvironment.cs: Export a friendly getppid(2) wrapper.
972 GetParentProcessId isn't in UnixProcess as there's no way (that I know of)
973 to get the Parent's Parent, so it can't be a class member, and exposing it
974 as a static member of UnixProcess doesn't make sense to me, as it isn't
975 general. Added GetUserShells().
976 * UnixProcess.cs: Change constructor to internal, so it can be used from
979 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
981 * Stdlib.cs: Remove printf(3) and fprintf(3). These are vararg/CDECL
982 functions, and it's not portable to call them in this manner.
983 (It's not portable because some architectures, such as AMD64, use a
984 "cookie" as part of the vararg calling sequence to help reduce buffer
985 overflow exploits. Trying to call vararg functions as if they were an
986 overloaded function will not properly set this hardware cookie, resulting
987 in a hardware exception. Talk to lupus for more information.)
989 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
991 * Syscall.cs, UnixConvert.cs: Remove mount- and umount-related
992 functionality. Mount/umount is inherently non-portable (see the C code
993 for mount/umount), and trying to provide a consistent interface is
994 impossible. If you need mount/umount support, use the command-line
995 programs mount(1) and umount(1).
997 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
999 + Lots o' Renames, as the namespace changed.
1000 * PosixConvert.cs: Moved to UnixConvert.cs:
1001 * PosixDirectory.cs: Moved to UnixDirectory.cs:
1002 * PosixEnvironment.cs: Moved to UnixEnvironment.cs:
1003 * PosixDirectoryInfo.cs: Moved to UnixDirectoryInfo.cs:
1004 * PosixFile.cs: Moved to UnixFile.cs:
1005 * PosixFileInfo.cs: Moved to UnixFileInfo.cs:
1006 * PosixFileSystemInfo.cs: Moved to UnixFileSystemInfo.cs:
1007 * PosixGroup.cs: Moved to UnixGroup.cs:
1008 * PosixGroupInfo.cs: Moved to UnixGroupInfo.cs:
1009 * PosixIOException.cs: Moved to UnixIOException.cs:
1010 * PosixMarshal.cs: Moved to UnixMarshal.cs:
1011 * PosixProcess.cs: Moved to UnixProcess.cs:
1012 * PosixStream.cs: Moved to UnixStream.cs:
1013 * PosixSymbolicLinkInfo.cs: Moved to UnixSymbolicLinkInfo.cs:
1014 * PosixUser.cs: Moved to UnixUser.cs:
1015 * PosixUserInfo.cs: Moved to UnixUserInfo.cs:
1016 * Catalog.cs, IncludeAttribute.cs, MapAttribute.cs, PeerCred.cs, Stdlib.cs,
1017 Syscall.cs, UnixConvert.cs, UnixDirectory.cs, UnixDirectoryInfo.cs,
1018 UnixEndPoint.cs, UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs,
1019 UnixFileSystemInfo.cs, UnixGroup.cs, UnixGroupInfo.cs, UnixIOException.cs,
1020 UnixMarshal.cs, UnixProcess.cs, UnixStream.cs, UnixSymbolicLinkInfo.cs,
1021 UnixUser.cs, UnixUserInfo.cs: Deal with renamed classes/members.
1023 2004-11-15 Jonathan Pryor <jonpryor@vt.edu>
1025 * PosixUserInfo.cs: Make the PosixUserInfo(Passwd) constructor public;
1026 override Object.GetHashCode and Object.Equals.
1027 * PosixGroupInfo.cs: Make the PosixGroupInfo(Group) constructor public;
1028 override Object.GetHashCode and Object.Equals.
1029 * PosixIOException.cs: Use PosixMarshal.GetErrorDescription instead of
1030 calling Syscall.strerror_r directly
1031 * PosixMarshal.cs: Add GetErrorDescription. Strerror_r() isn't portable, so
1032 GetErrorDescription() first tries strerror_r(), and if it fails falls back
1035 - Seal the Dirent class. It has no virtual members, so there's no point
1036 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
1037 - Seal the Group class. It has no virtual members, so there's no point
1038 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
1039 Provide operator== and operator!=.
1040 - Seal the Passwd class. It has no virtual members, so there's no point
1041 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
1042 Provide operator== and operator!=.
1043 - Remove strerror_r() convenience overload. This is now
1044 PosixMarshal.GetErrorDescription().
1046 2004-11-12 Jonathan Pryor <jonpryor@vt.edu>
1048 * Syscall.cs: Export time-related functions (gettimeofday, settimeofday,
1049 utime, utimes), mknod.
1051 2004-11-07 Atsushi Enomoto <atsushi@ximian.com>
1053 * PosixEnvironment.cs : csc build fix. see bug #69195.
1054 * PosixStream.cs : csc build fix. see bug #69196.
1056 2004-11-05 Jonathan Pryor <jonpryor@vt.edu>
1058 * PosixConvert.cs: New file; conversion functions for Mono.Posix types.
1059 * PosixDirectory.cs: New file; Friendly wrapper over directory information.
1060 * PosixDirectoryInfo.cs: New file; Friendly wrapper over directory information.
1061 * PosixEnvironment.cs: New file; Friendly wrapper over environment information.
1062 * PosixFile.cs: New file; Friendly wrapper over file information.
1063 * PosixFileInfo.cs: New file; Friendly wrapper over file information.
1064 * PosixFileSystemInfo.cs: New file; Friendly wrapper over `stat'.
1065 * PosixGroup.cs: New file; User Group-related functionality
1066 * PosixGroupInfo.cs: New file; User Group-related functionality
1067 * PosixIOException.cs: New file; Exception for POSIX-generated exceptions.
1068 * PosixMarshal.cs: New file; utility functions for marshaling, etc.
1069 * PosixProcess.cs: New file; Friendly wrapper over process information.
1070 * PosixStream.cs: New file; Friendly wrapper over file descriptors.
1071 * PosixSymbolicLinkInfo.cs: New file; Friendly wrapper over symbolic links.
1072 * PosixUser.cs: New file; Friendly wrapper over user information.
1073 * PosixUserInfo.cs: New file; Friendly wrapper over user information.
1074 * Stdlib.cs: New file; C standard library exports.
1075 * Syscall.cs: Effective re-write.
1076 - Organize exports by header file
1077 - add additional enumerations (Error for the E* error values, etc.)
1078 - always explicitly specify enumeration underlying type
1079 - Use a new wrapping infrastructure so that ABI-stable types are exported
1080 - For example, size_t is exported as ulong, not IntPtr.
1081 - Wrap more functions, and wrap them better (such as getpwnam).
1082 - This release is NOT backward compatible. Many names are the same, and
1083 hopefully they're still compatible, but no effort was made to maintain
1084 compatibility. For example, FileMode was removed and replaced with
1085 FilePermissions, to avoid a name conflict with System.IO.FileMode.
1086 - Change umount() to use MonoPosixHelper: portability fix for Mac OS X.
1087 * make-map.cs: Another effective re-write, to clean up the code, produce
1088 better output, and produce more output. For example, most of
1089 PosixConvert can be auto-generated, so it is (modulo version delays and
1090 bootstrap issues). `map.c' is now conditional on all macros, and has
1091 error checking for invalid/unsupported values.
1093 2004-09-18 Jackson Harper <jackson@ximian.com>
1095 * Syscall.cs: Add support for poll ().
1097 2004-09-18 Jackson Harper <jackson@ximian.com>
1099 * make-map.cs: Use field value not name for #defines.
1101 2004-09-14 Loren Bandiera <lorenb@mmgsecurity.com>
1103 * Syscall.cs: Added method for getpwnam which uses Passwd
1105 * macros.c: Helper function for getpwnam
1106 (In committing, Josh Tauberer also added getpwuid.)
1108 2004-07-09 Dick Porter <dick@ximian.com>
1110 * PeerCred.cs: Get the unix socket peer credentials.
1112 2004-05-26 Miguel de Icaza <miguel@ximian.com>
1114 * Syscall.cs: Do not let the runtime handle strings, as we do not
1115 own those strings, we must transform the char * into a string
1118 2004-05-03 Miguel de Icaza <miguel@ximian.com>
1120 * Syscall.cs: Add symlink
1122 2004-04-19 Miguel de Icaza <miguel@ximian.com>
1124 * Syscall.cs: Use hex values for FileMode, since C# does not have
1125 an octal integer mode.
1127 2004-03-30 Joshua Tauberer <tauberer@for.net>
1129 * Added readlink, strerror, opendir, readdir, closedir
1130 * Added Mono.Posix.Stat.UnixToDateTime(long unixtime) --> DateTime
1132 2004-03-11 Joshua Tauberer <tauberer@for.net>
1134 * Syscall.cs: Removed argument to getgid that shouldn't be there.
1135 Added getusername, getgroupname which wrap getpwuid, getgrgid
1136 without dealing with pointers to structures.
1137 Removed duplicate FileMode enum nested in Syscall class.
1138 Added stat and lstat, which use StatMode enumeration
1139 (like FileMode but nicer and complete) and Stat struct.
1140 * macros.c: Helper functions for getpwuid, getgrgid, stat, lstat.
1142 2004-01-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1144 * Syscall.cs: moved the assembly attribute to a proper place
1145 and added 'signal.h'
1146 * make-map.cs: use reflection to invoke the properties, as it
1147 fails under MS runtime.
1150 2004-01-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1152 * Syscall.cs: moved assembly attribute and added unsafe block to fix
1153 the build on windows.
1155 2003-11-11 Wojciech Polak <polak@gnu.org
1157 * Syscall.cs: Applied patch from Wojciech Polak <polak@gnu.org> to
1160 2003-05-16 Dick Porter <dick@ximian.com>
1162 * UnixEndPoint.cs: New property to get and set the filename, like
1163 the IPEndPoint has for the IP address. Also implement ToString().
1165 Tue Apr 29 16:53:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
1167 * Syscall.cs: remove the unsafe mess.
1169 2003-02-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1172 * UnixEndPoint.cs: first file.