Changes in uspace/app/getterm/getterm.c [4deb8b5:0485135] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/getterm/getterm.c
r4deb8b5 r0485135 43 43 #include <errno.h> 44 44 #include "version.h" 45 #include "welcome.h"46 45 47 46 #define APP_NAME "getterm" … … 49 48 static void usage(void) 50 49 { 51 printf("Usage: %s <terminal> [-w] <command> [<arguments...>]\n", APP_NAME);50 printf("Usage: %s <terminal> <path>\n", APP_NAME); 52 51 } 53 52 … … 74 73 } 75 74 75 static task_id_t spawn(const char *fname) 76 { 77 task_id_t id; 78 int rc; 79 80 rc = task_spawnl(&id, fname, fname, NULL); 81 if (rc != EOK) { 82 printf("%s: Error spawning %s (%s)\n", APP_NAME, fname, 83 str_error(rc)); 84 return 0; 85 } 86 87 return id; 88 } 89 76 90 int main(int argc, char *argv[]) 77 91 { 78 int rc; 79 task_exit_t texit; 80 int retval; 81 task_id_t id; 82 char *fname, *term; 83 char **cmd_args; 84 bool print_wmsg; 85 86 ++argv; --argc; 87 if (argc < 1) { 92 if (argc < 3) { 88 93 usage(); 89 94 return -1; 90 95 } 91 92 if (str_cmp(*argv, "-w") == 0) {93 print_wmsg = true;94 ++argv; --argc;95 } else {96 print_wmsg = false;97 }98 99 if (argc < 2) {100 usage();101 return -1;102 }103 104 term = *argv++;105 fname = *argv;106 cmd_args = argv;107 96 108 reopen(&stdin, 0, term, O_RDONLY, "r");109 reopen(&stdout, 1, term, O_WRONLY, "w");110 reopen(&stderr, 2, term, O_WRONLY, "w");97 reopen(&stdin, 0, argv[1], O_RDONLY, "r"); 98 reopen(&stdout, 1, argv[1], O_WRONLY, "w"); 99 reopen(&stderr, 2, argv[1], O_WRONLY, "w"); 111 100 112 101 /* … … 125 114 return -4; 126 115 127 version_print( term);128 if (print_wmsg)129 welcome_msg_print();130 131 rc = task_spawnv(&id, fname, (const char * const *) cmd_args);132 if (rc != EOK) {133 printf("%s: Error spawning %s (%s)\n", APP_NAME, fname,134 str_error(rc));135 return -5;116 version_print(argv[1]); 117 task_id_t id = spawn(argv[2]); 118 119 if (id != 0) { 120 task_exit_t texit; 121 int retval; 122 task_wait(id, &texit, &retval); 123 124 return 0; 136 125 } 137 138 rc = task_wait(id, &texit, &retval); 139 if (rc != EOK) { 140 printf("%s: Error waiting for %s (%s)\n", APP_NAME, fname, 141 str_error(rc)); 142 return -6; 143 } 144 145 return 0; 126 127 return -5; 146 128 } 147 129
Note:
See TracChangeset
for help on using the changeset viewer.