Mercurial > dwindows
comparison mac/dw.m @ 738:52d5ed00f892
Use NSWorkplace to launch GUI applications instead of fork() and exec().
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 15 Mar 2011 22:32:45 +0000 |
parents | 680c7f365d0d |
children | a0aec9a56914 |
comparison
equal
deleted
inserted
replaced
737:680c7f365d0d | 738:52d5ed00f892 |
---|---|
7637 */ | 7637 */ |
7638 int dw_exec(char *program, int type, char **params) | 7638 int dw_exec(char *program, int type, char **params) |
7639 { | 7639 { |
7640 int ret = -1; | 7640 int ret = -1; |
7641 | 7641 |
7642 if(type == DW_EXEC_GUI) | |
7643 { | |
7644 if(params && params[0] && params[1]) | |
7645 { | |
7646 [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithUTF8String:params[1]] | |
7647 withApplication:[NSString stringWithUTF8String:program]]; | |
7648 } | |
7649 else | |
7650 { | |
7651 [[NSWorkspace sharedWorkspace] launchApplication:[NSString stringWithUTF8String:program]]; | |
7652 } | |
7653 return 0; | |
7654 } | |
7655 | |
7642 if((ret = fork()) == 0) | 7656 if((ret = fork()) == 0) |
7643 { | 7657 { |
7644 int i; | 7658 int i; |
7645 | 7659 |
7646 for (i = 3; i < 256; i++) | 7660 for (i = 3; i < 256; i++) |
7647 close(i); | 7661 close(i); |
7648 setsid(); | 7662 setsid(); |
7649 if(type == DW_EXEC_GUI) | 7663 |
7650 { | 7664 if(type == DW_EXEC_CON) |
7651 execvp(program, params); | |
7652 } | |
7653 else if(type == DW_EXEC_CON) | |
7654 { | 7665 { |
7655 char **tmpargs; | 7666 char **tmpargs; |
7656 | 7667 |
7657 if(!params) | 7668 if(!params) |
7658 { | 7669 { |