Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 6124)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 6125)
@@ -747,5 +747,5 @@
      * @since 3378
      */
-    public static boolean exitJosm(boolean exit) {
+    public static boolean exitJosm(boolean exit, int exitCode) {
         if (Main.saveUnsavedModifications()) {
             geometry.remember("gui.geometry");
@@ -762,5 +762,5 @@
             }
             if (exit) {
-                System.exit(0);
+                System.exit(exitCode);
             }
             return true;
Index: /trunk/src/org/openstreetmap/josm/actions/ExitAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 6124)
+++ /trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 6125)
@@ -28,5 +28,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.exitJosm(true);
+        Main.exitJosm(true, 0);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/actions/RestartAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 6124)
+++ /trunk/src/org/openstreetmap/josm/actions/RestartAction.java	(revision 6125)
@@ -43,4 +43,12 @@
     @Override
     public void actionPerformed(ActionEvent e) {
+        // If JOSM has been started with property 'josm.restart=true' this means
+        // it is executed by a start script that can handle restart.
+        // Request for restart is indicated by exit code 9.
+        String scriptRestart = System.getProperty("josm.restart");
+        if ("true".equals(scriptRestart)) {
+            Main.exitJosm(true, 9);
+        }
+        
         try {
             restartJOSM();
@@ -64,5 +72,5 @@
      */
     public static void restartJOSM() throws IOException {
-        if (isRestartSupported() && !Main.exitJosm(false)) return;
+        if (isRestartSupported() && !Main.exitJosm(false, 0)) return;
         try {
             // java binary
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 6124)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 6125)
@@ -84,5 +84,5 @@
         mainFrame.addWindowListener(new WindowAdapter(){
             @Override public void windowClosing(final WindowEvent arg0) {
-                Main.exitJosm(true);
+                Main.exitJosm(true, 0);
             }
         });
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 6124)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 6125)
@@ -51,5 +51,5 @@
         //System.out.println("Going to handle method "+method+" (short: "+method.getName()+") with event "+args[0]);
         if (method.getName().equals("handleQuit")) {
-            handled = Main.exitJosm(false);
+            handled = Main.exitJosm(false, 0);
         } else if (method.getName().equals("handleAbout")) {
             Main.main.menu.about.actionPerformed(null);
