2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / wrapper / genwrapper.pl
index 127845b88f717b6685f009a61aba9b039bc0c48a..15641aa59dcba3c484c5fd82ace9ffa2155e309c 100755 (executable)
@@ -16,21 +16,24 @@ if ($ENV{"OSTYPE"} eq "cygwin") {
             "errno.h");
 }
 
-$cflags = `glib-config --cflags glib`;
+$cflags = `pkg-config --cflags glib-2.0`;
 $cflags =~ s/\n//;
 
 $lib = "monowrapper";
 
+if ($csmode){
+   $res_struct .= "[CLSCompliant(false)]\n";
+}
 create_struct ("MonoWrapperStat", "stat",
-              "uint", "st_dev",
-              "uint", "st_mode",
-              "uint", "st_nlink",
-              "uint", "st_uid",
-              "uint", "st_gid",
-              "long", "st_size",
-              "uint", "st_atime",
-              "uint", "st_mtime",
-              "uint", "st_ctime",
+              "uint", "mst_dev",
+              "uint", "mst_mode",
+              "uint", "mst_nlink",
+              "uint", "mst_uid",
+              "uint", "mst_gid",
+              "long", "mst_size",
+              "uint", "mst_atime",
+              "uint", "mst_mtime",
+              "uint", "mst_ctime",
               );
 
 create_func ($lib, "", "seek", "long", 
@@ -38,6 +41,13 @@ create_func ($lib, "", "seek", "long",
             "long", "offset",
             "int", "whence");
 
+create_func ($lib, "", "mkdir", "int",
+            "string", "path",
+            "int",    "mode");
+
+create_func ($lib, "", "rmdir", "int",
+            "string", "path");
+
 create_func ($lib, "", "read", "int",
             "IntPtr", "fd",
             "void *", "buf",
@@ -71,6 +81,39 @@ create_func ($lib, "", "stat", "int",
 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");
+
+create_func ($lib, "", "rename", "int",
+            "string", "source",
+            "string", "target");
+
+create_func ($lib, "", "utime",  "int",
+             "string", "path",
+            "int",    "atime",
+            "int",    "mtime");
+
+create_func ($lib, "mono_glob_compile", "mono_glob_compile", "IntPtr",
+            "string", "glob");
+
+create_func ($lib, "mono_glob_match", "mono_glob_match", "int",
+            "IntPtr", "handle",
+            "string", "str");
+
+create_func ($lib, "mono_glob_dispose", "mono_glob_dispose", "void",
+            "IntPtr", "handle");
+
 map_const ("int", "%d", "SEEK_SET",
           "int", "%d", "SEEK_CUR",
           "int", "%d", "SEEK_END",
@@ -245,7 +288,7 @@ sub init {
 
 
     %tmap = ("void" => "void",
-            "IntPtr" => "int",
+            "IntPtr" => "gpointer",
             "sbyte" => "gint8",
             "byte" => "guint8",
             "short" => "gint16",
@@ -277,6 +320,14 @@ sub create_func {
     my (@func) = @_;
     my ($i) = 0;
     my ($res) = "";
+    my ($cls) = 1;
+    my ($j) = 4;
+    while ($j <= $#func){
+       if ($func[$j] =~ /\*/){
+               $cls = 0;
+       }
+       $j+=2;
+    }
 
     if ($func[1] eq "") {
        $func[1] = "mono_wrapper_$func[2]";
@@ -289,6 +340,9 @@ sub create_func {
     if ($csmode) {
 
        $res = "\t[DllImport(\"$func[0]\", EntryPoint=\"$func[1]\", CharSet=CharSet.Ansi)]\n";
+       if ($cls == 0){
+          $res .= "\t[CLSCompliant(false)]\n";
+        }
        $res .= "\tpublic unsafe static extern $func[3] $func[2] (";
        $i +=4;
        while ($i <= $#func) {