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 {