More Mac OS X portability fixes. On Linux, getgrnam_r & co. return the error
[mono.git] / mcs / jay / main.c
index 83345a3b2e7e36a02986d89955c102d0f131c77a..a32904594ca4c49f7e4aaaccad1aa13c740907c9 100644 (file)
@@ -49,7 +49,7 @@ static char sccsid[] = "@(#)main.c    5.5 (Berkeley) 5/24/93";
 
 char tflag;
 char vflag;
-char csharp = 0;
+int csharp = 0;
 
 char *file_prefix = "y";
 char *myname = "yacc";
@@ -91,7 +91,11 @@ char  *rassoc;
 short **derives;
 char *nullable;
 
-extern char *mkstemp();
+#if defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
+extern char* mktemp();
+#define mkstemp mktemp
+#endif
+
 extern char *getenv();
 
 done(k)
@@ -131,10 +135,16 @@ set_signals()
 
 usage()
 {
-    fprintf(stderr, "usage: %s [-tvc] [-b file_prefix] filename\n", myname);
+    fprintf(stderr, "usage: %s [-tvcp] [-b file_prefix] filename\n", myname);
     exit(1);
 }
 
+void
+print_skel_dir(void)
+{
+    printf ("%s\n", SKEL_DIRECTORY);
+    exit (0);
+}
 
 getargs(argc, argv)
 int argc;
@@ -155,9 +165,9 @@ char *argv[];
            if (i + 1 < argc) usage();
            return;
 
-       case '-':
-           ++i;
-           goto no_more_options;
+        case '-':
+            ++i;
+            goto no_more_options;
 
        case 'b':
            if (*++s)
@@ -168,13 +178,18 @@ char *argv[];
                usage();
            continue;
 
-       case 't':
-           tflag = 1;
-           break;
+        case 't':
+            tflag = 1;
+            break;
+
+       case 'p':
+            print_skel_dir ();
+            break;
 
        case 'c':
            csharp = 1;
            line_format = "#line %d \"%s\"\n";
+           default_line_format = "#line default\n";
            break;
            
        case 'v':
@@ -200,6 +215,10 @@ char *argv[];
                vflag = 1;
                break;
 
+            case 'p':
+                print_skel_dir ();
+                break;
+
             case 'c':
                csharp = 1;
                break;
@@ -238,8 +257,14 @@ create_file_names()
     int i, len;
     char *tmpdir;
 
+#if defined(_WIN32) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
+    tmpdir = ".";
+#else
     tmpdir = getenv("TMPDIR");
+    if (tmpdir == 0) tmpdir = getenv ("TMP");
+    if (tmpdir == 0) tmpdir = getenv ("TEMP");
     if (tmpdir == 0) tmpdir = "/tmp";
+#endif
 
     len = strlen(tmpdir);
     i = len + 13;