Index: csrc/pf_core.c
===================================================================
RCS file: /home/asau/repo/cvs/apforth/csrc/pf_core.c,v
retrieving revision 1.12
diff -u -r1.12 pf_core.c
--- csrc/pf_core.c	27 Jan 2011 12:55:05 -0000	1.12
+++ csrc/pf_core.c	9 Feb 2011 16:28:29 -0000
@@ -424,6 +424,34 @@
 	ioType( CString, (cell_t) pfCStringLength(CString) );
 }
 
+/* Print banner */
+static void pfPrintBanner(const char *DicFileName)
+{
+	MSG("PForth V"PFORTH_VERSION);
+
+	if (IsHostLittleEndian()) MSG("-LE"); else MSG("-BE");
+#if PF_BIG_ENDIAN_DIC
+	MSG("/BE");
+#elif PF_LITTLE_ENDIAN_DIC
+	MSG("/LE");
+#endif
+
+	if (sizeof(cell_t) == 8) {
+		MSG("/64");
+	} else if (sizeof(cell_t) == 4) {
+		MSG("/32");
+	}
+
+	MSG(", built "__DATE__" "__TIME__);
+
+	if (DicFileName != NULL) {
+		EMIT_CR;
+	} else {
+		MSG(" (static)");
+		EMIT_CR;
+	}
+}
+
 /**************************************************************************
 ** Main entry point for pForth.
 */
@@ -444,63 +472,33 @@
 /* Allocate Task structure. */
 	cftd = (pfTaskData_t*) pfCreateTask(DEFAULT_USER_DEPTH, DEFAULT_RETURN_DEPTH);
 
-	if( cftd )
-	{
+	if (cftd != NULL) {
 		pfSetCurrentTask( cftd );
-		
-		if( !gVarQuiet )
-		{
-			MSG( "PForth V"PFORTH_VERSION );
-			if( IsHostLittleEndian() ) MSG("-LE");
-			else MSG("-BE");
-#if PF_BIG_ENDIAN_DIC
-            MSG("/BE");
-#elif PF_LITTLE_ENDIAN_DIC
-            MSG("/LE");
-#endif
-			if (sizeof(cell_t) == 8)
-			{
-				MSG("/64");
-			}
-			else if (sizeof(cell_t) == 4)
-			{
-				MSG("/32");
-			}
-			
-			MSG( ", built "__DATE__" "__TIME__ );
-		}
+
+		if (!gVarQuiet) pfPrintBanner(DicFileName);
 
 		if (LoadCustomFunctionTable() < 0) goto error2; /* Init custom 'C' call array. */
 
-#if (!defined(PF_NO_INIT)) && (!defined(PF_NO_SHELL))
-		if( IfInit )
-		{
+#if defined(PF_NO_INIT) || defined(PF_NO_SHELL)
+		IfInit = 0;	/* don't try to build dictionary */
+#endif
+
+		if (IfInit) {
+#if !defined(PF_NO_INIT) && !defined(PF_NO_SHELL)
 			dic = (pfDictionary_t*) pfBuildDictionary( DEFAULT_HEADER_SIZE, DEFAULT_CODE_SIZE );
-		}
-		else
-#else
-		TOUCH(IfInit);
 #endif /* !PF_NO_INIT && !PF_NO_SHELL*/
-		{
-			if( DicFileName )
-			{
-				EMIT_CR;
-				dic = (pfDictionary_t*) pfLoadDictionary( DicFileName, &EntryPoint );
-			}
-			else
-			{
-				MSG(" (static)");
-				EMIT_CR;
-				dic = (pfDictionary_t*) pfLoadStaticDictionary();			
-			}
+		} else if (DicFileName != NULL) {
+			dic = (pfDictionary_t*) pfLoadDictionary(DicFileName, &EntryPoint);
+		} else {
+			dic = (pfDictionary_t*) pfLoadStaticDictionary();
 		}
-		if( dic == NULL ) goto error2;
-		
-		if( !gVarQuiet )
-		{
+
+		if (dic == NULL) goto error2;
+
+		if (!gVarQuiet) {
 			EMIT_CR;
 		}
-		
+
 		Result = pfExecIfDefined("AUTO.INIT");
 		if( Result != 0 )
 		{
@@ -512,9 +510,9 @@
 		{
 			Result = pfCatch( EntryPoint );
 		}
-#ifndef PF_NO_SHELL
 		else
 		{
+#ifndef PF_NO_SHELL
 			if( SourceName == NULL )
 			{
 				Result = pfQuit();
@@ -529,8 +527,8 @@
 				}
 				Result = pfIncludeFile( SourceName );
 			}
-		}
 #endif /* PF_NO_SHELL */
+		}
 
 	/* Clean up after running Forth. */
 		pfExecIfDefined("AUTO.TERM");
