Add -m32 and -x c to Makefile for 64-bit Snow Leopard.
[pforth] / csrc / pf_main.c
index 9d8568d..6b07f33 100644 (file)
 #define TRUE (1)\r
 #define FALSE (0)\r
 #endif\r
 #define TRUE (1)\r
 #define FALSE (0)\r
 #endif\r
+
+static const char *gErrorMsg32Bit = "ERROR - A long is not 4 bytes. Are we running on a 64-bit machine?!\n";
 \r
 #ifdef PF_EMBEDDED\r
 int main( void )\r
 {\r
     char IfInit = 0; \r
     const char *DicName = NULL;\r
 \r
 #ifdef PF_EMBEDDED\r
 int main( void )\r
 {\r
     char IfInit = 0; \r
     const char *DicName = NULL;\r
-    const char *SourceName = NULL;\r
+    const char *SourceName = NULL;
+       // Check to make sure we are running in 32-bit mode.
+       if( sizeof(long) != 4 )
+       {
+               pfMessage(gErrorMsg32Bit);
+               return 1;
+       }\r
     pfMessage("\npForth Embedded\n");\r
     return pfDoForth( DicName, SourceName, IfInit);\r
 }\r
     pfMessage("\npForth Embedded\n");\r
     return pfDoForth( DicName, SourceName, IfInit);\r
 }\r
@@ -68,7 +76,14 @@ int main( int argc, char **argv )
        char *s;\r
        int32 i;\r
        int Result;\r
        char *s;\r
        int32 i;\r
        int Result;\r
-\r
+
+       // Check to make sure we are running in 32-bit mode.
+       if( sizeof(long) != 4 )
+       {
+               ERR((gErrorMsg32Bit));
+               return 1;
+       }
+       \r
 /* For Metroworks on Mac */\r
 #ifdef __MWERKS__\r
        argc = ccommand(&argv);\r
 /* For Metroworks on Mac */\r
 #ifdef __MWERKS__\r
        argc = ccommand(&argv);\r
@@ -90,13 +105,25 @@ int main( int argc, char **argv )
                                IfInit = TRUE;\r
                                DicName = NULL;\r
                                break;\r
                                IfInit = TRUE;\r
                                DicName = NULL;\r
                                break;\r
+                               \r
                        case 'q':\r
                                pfSetQuiet( TRUE );\r
                                break;\r
                        case 'q':\r
                                pfSetQuiet( TRUE );\r
                                break;\r
+                               \r
                        case 'd':\r
                                if( *s != '\0' ) DicName = s;\r
                        case 'd':\r
                                if( *s != '\0' ) DicName = s;\r
-                               else DicName = PF_DEFAULT_DICTIONARY;\r
+                               // Allow space after -d (Thanks Aleksej Saushev)\r
+                               // Make sure there is another argument.\r
+                               else if( (i+1) < argc )\r
+                               {\r
+                                       DicName = argv[++i];\r
+                               }\r
+                               if (DicName == NULL || *DicName == '\0')\r
+                               {\r
+                                       DicName = PF_DEFAULT_DICTIONARY;\r
+                               }\r
                                break;\r
                                break;\r
+                               \r
                        default:\r
                                ERR(("Unrecognized option!\n"));\r
                                ERR(("pforth {-i} {-q} {-dfilename.dic} {sourcefilename}\n"));\r
                        default:\r
                                ERR(("Unrecognized option!\n"));\r
                                ERR(("pforth {-i} {-q} {-dfilename.dic} {sourcefilename}\n"));\r