mocha: show actual file in Diff dialog (WEB-15907)
[idea/community.git] / native / restarter / restarter.m
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #import <AppKit/AppKit.h>
18
19 int main(int argc, const char *argv[]) {
20     if (argc < 2) return EXIT_FAILURE;
21
22     unsigned int interval = 500; // check every 0.5 second
23     unsigned int slept = 0;
24     while (getppid() != 1) {
25         usleep(interval * 1000);
26
27         slept += interval;
28     }
29
30     if (argc > 2) {
31         NSString *launchPath = [NSString stringWithUTF8String:argv[2]];
32         NSMutableArray *arguments = [NSMutableArray array];
33         for (int i = 3; i < argc; i++) {
34             [arguments addObject:[NSString stringWithUTF8String:argv[i]]];
35         }
36         NSTask *task = [NSTask launchedTaskWithLaunchPath:launchPath arguments:arguments];
37         [task waitUntilExit];
38     }
39
40     NSString *pathToRelaunch = [NSString stringWithUTF8String:argv[1]];
41     [[NSWorkspace sharedWorkspace] launchApplication:pathToRelaunch];
42
43     return EXIT_SUCCESS;
44 }