diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index 282fa82ff..9c6d787bf 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -134,6 +134,14 @@ def checkout_layers(layers, layerdir, d):
 
     return layers_fixed_revisions
 
+def prompt_continue(non_interactive):
+    if not non_interactive:
+        p = input('Continue? (Y/n): ')
+        if p and p.lower() != 'y':
+            print("Exiting")
+            exit()
+        print()
+
 def setup_bitbake_build(bitbake_config, layerdir, setupdir, thisdir):
     def _setup_build_conf(layers, filerelative_layers, build_conf_dir):
         os.makedirs(build_conf_dir)
@@ -483,11 +491,7 @@ def init_config(top_dir, settings, args, d):
         return
 
     print("Initializing a setup directory in\n    {}".format(setupdir))
-    if not args.non_interactive:
-        y_or_n = input('Continue? (y/N): ')
-        if y_or_n != 'y':
-            exit()
-        print()
+    prompt_continue(args.non_interactive)
 
     os.makedirs(setupdir, exist_ok=True)
 
@@ -676,10 +680,7 @@ def create_siteconf(top_dir, non_interactive=True):
         print('A site.conf file already exists. Please remove it if you would like to replace it with a default one')
     else:
         print('A common site.conf file will be created, please edit or replace before running builds\n    {}\n'.format(siteconfpath))
-        if not non_interactive:
-            y_or_n = input('Proceed? (y/N): ')
-            if y_or_n != 'y':
-                exit()
+        prompt_continue(non_interactive)
 
         os.makedirs(os.path.dirname(top_dir), exist_ok=True)
         with open(siteconfpath, 'w') as siteconffile:
