[Mono-list] Wrapper additions

Dietmar Maurer dietmar@ximian.com
Thu, 20 Sep 2001 08:49:47 +0200


Jim Richardson wrote:

> Well I am glad you made me think about this a bit more. Further
> research indicated an entirely different dirent structure layout
> than I had first seen in glib.
>
> Does this look better?

Yes, looks better ;-) Please commit. Although I think returning a String
will not work with our current PInvoke implementation. Does that work on
M$ platform without problems (is the code tested)?

- Dietmar

>
>
> $ cvs diff -u genwrapper.pl wrapper.c
> Index: genwrapper.pl
> ===================================================================
> RCS file: /cvs/public/mono/mono/wrapper/genwrapper.pl,v
> retrieving revision 1.4
> diff -u -r1.4 genwrapper.pl
> --- genwrapper.pl       2001/09/10 09:03:07     1.4
> +++ genwrapper.pl       2001/09/19 23:39:53
> @@ -71,6 +71,21 @@
>  create_func ($lib, "", "unlink", "int",
>              "string", "path");
>
> +create_func ($lib, "", "opendir", "IntPtr",
> +            "string", "path");
> +
> +create_func ($lib, "", "readdir", "string",
> +            "IntPtr", "dir");
> +
> +create_func ($lib, "", "closedir", "int",
> +            "IntPtr", "dir");
> +
> +create_func ($lib, "", "getenv", "IntPtr",
> +            "string", "variable");
> +
> +create_func ($lib, "", "environ", "IntPtr");
> +
> +
>  map_const ("int", "%d", "SEEK_SET",
>            "int", "%d", "SEEK_CUR",
>            "int", "%d", "SEEK_END",
> Index: wrapper.c
> ===================================================================
> RCS file: /cvs/public/mono/mono/wrapper/wrapper.c,v
> retrieving revision 1.2
> diff -u -r1.2 wrapper.c
> --- wrapper.c   2001/09/10 07:39:00     1.2
> +++ wrapper.c   2001/09/19 23:39:53
> @@ -1,5 +1,7 @@
>  #include <config.h>
>  #include <limits.h>
> +#include <dirent.h>
> +#include <stdlib.h>
>
>  #include "wrapper.h"
>
> @@ -93,3 +95,33 @@
>         return unlink(path);
>  }
>
> +int
> +mono_wrapper_opendir (const char * path)
> +{
> +       return (int)opendir(path);
> +}
> +
> +const char *
> +mono_wrapper_readdir (int dir)
> +{
> +       struct dirent* p = readdir((DIR*)dir);
> +       return p != NULL ? p->d_name : NULL;
> +}
> +
> +gint32
> +mono_wrapper_closedir (int dir)
> +{
> +       return closedir((DIR*)dir);
> +}
> +
> +int
> +mono_wrapper_getenv (const char * variable)
> +{
> +       return (int)getenv(variable);
> +}
> +
> +int
> +mono_wrapper_environ ()
> +{
> +       return (int)environ;
> +}