Resolve build issues on Windows.
[mono.git] / mcs / jay / main.c
index 83345a3b2e7e36a02986d89955c102d0f131c77a..fcac218b1df5d647e516b280d0223fc2151eabc0 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";
@@ -76,12 +76,14 @@ int nrules;
 int nsyms;
 int ntokens;
 int nvars;
+int nmethods;
 
 int   start_symbol;
 char  **symbol_name;
 short *symbol_value;
 short *symbol_prec;
 char  *symbol_assoc;
+char  **methods;
 
 short *ritem;
 short *rlhs;
@@ -91,7 +93,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 +137,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 +167,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 +180,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,8 +217,15 @@ char *argv[];
                vflag = 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;
 
            default:
@@ -232,14 +256,26 @@ unsigned n;
     return (p);
 }
 
+#ifdef __GNUC__
+#define GNUC_UNUSED __attribute__((__unused__))
+#else
+#define GNUC_UNUSED
+#endif
 
 create_file_names()
 {
     int i, len;
     char *tmpdir;
+    int mkstemp_res GNUC_UNUSED;
 
+#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;
@@ -273,9 +309,9 @@ create_file_names()
     prolog_file_name[len + 5] = 'p';
     local_file_name[len + 5] = 'l';
 
-    mkstemp(action_file_name);
-    mkstemp(prolog_file_name);
-    mkstemp(local_file_name);
+    mkstemp_res = mkstemp(action_file_name);
+    mkstemp_res = mkstemp(prolog_file_name);
+    mkstemp_res = mkstemp(local_file_name);
 
     len = strlen(file_prefix);