Changes in uspace/app/getterm/getterm.c [0485135:4deb8b5] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/getterm/getterm.c
r0485135 r4deb8b5 43 43 #include <errno.h> 44 44 #include "version.h" 45 #include "welcome.h" 45 46 46 47 #define APP_NAME "getterm" … … 48 49 static void usage(void) 49 50 { 50 printf("Usage: %s <terminal> <path>\n", APP_NAME);51 printf("Usage: %s <terminal> [-w] <command> [<arguments...>]\n", APP_NAME); 51 52 } 52 53 … … 73 74 } 74 75 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 90 76 int main(int argc, char *argv[]) 91 77 { 92 if (argc < 3) { 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) { 93 88 usage(); 94 89 return -1; 95 90 } 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; 96 107 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");108 reopen(&stdin, 0, term, O_RDONLY, "r"); 109 reopen(&stdout, 1, term, O_WRONLY, "w"); 110 reopen(&stderr, 2, term, O_WRONLY, "w"); 100 111 101 112 /* … … 114 125 return -4; 115 126 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;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; 125 136 } 126 127 return -5; 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; 128 146 } 129 147
Note:
See TracChangeset
for help on using the changeset viewer.