Changeset a35b458 in mainline for uspace/app/getterm
- Timestamp:
- 2018-03-02T20:10:49Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/getterm/getterm.c
r3061bc1 ra35b458 63 63 if (fclose(*stream)) 64 64 return; 65 65 66 66 *stream = NULL; 67 67 68 68 int oldfd; 69 69 errno_t rc = vfs_lookup_open(path, WALK_REGULAR, mode, &oldfd); 70 70 if (rc != EOK) 71 71 return; 72 72 73 73 if (oldfd != fd) { 74 74 int newfd; 75 75 if (vfs_clone(oldfd, fd, false, &newfd) != EOK) 76 76 return; 77 77 78 78 assert(newfd == fd); 79 79 … … 81 81 return; 82 82 } 83 83 84 84 *stream = fdopen(fd, fmode); 85 85 } … … 93 93 return 1; 94 94 } 95 95 96 96 char *term = *argv; 97 97 argv++; 98 98 argc--; 99 99 100 100 char *locfs = *argv; 101 101 argv++; 102 102 argc--; 103 103 104 104 bool print_msg = false; 105 105 bool wait = false; 106 106 107 107 while ((argc > 0) && (str_cmp(*argv, "--") != 0)) { 108 108 if (str_cmp(*argv, "--msg") == 0) { … … 114 114 return 2; 115 115 } 116 116 117 117 argv++; 118 118 argc--; 119 119 } 120 120 121 121 if (argc < 1) { 122 122 usage(); 123 123 return 3; 124 124 } 125 125 126 126 /* Skip "--" */ 127 127 argv++; 128 128 argc--; 129 129 130 130 char *cmd = *argv; 131 131 char **args = argv; 132 132 133 133 if (wait) { 134 134 /* Wait for the terminal service to be ready */ … … 141 141 } 142 142 } 143 143 144 144 char term_node[LOC_NAME_MAXLEN]; 145 145 snprintf(term_node, LOC_NAME_MAXLEN, "%s/%s", locfs, term); 146 146 147 147 reopen(&stdin, 0, term_node, MODE_READ, "r"); 148 148 reopen(&stdout, 1, term_node, MODE_WRITE, "w"); 149 149 reopen(&stderr, 2, term_node, MODE_WRITE, "w"); 150 150 151 151 if (stdin == NULL) 152 152 return 4; 153 153 154 154 if (stdout == NULL) 155 155 return 5; 156 156 157 157 if (stderr == NULL) 158 158 return 6; 159 159 160 160 /* 161 161 * FIXME: fdopen() should actually detect that we are opening a console … … 163 163 */ 164 164 setvbuf(stdout, NULL, _IOLBF, BUFSIZ); 165 165 166 166 version_print(term); 167 167 if (print_msg) 168 168 welcome_msg_print(); 169 169 170 170 task_id_t id; 171 171 task_wait_t twait; 172 172 173 173 errno_t rc = task_spawnv(&id, &twait, cmd, (const char * const *) args); 174 174 if (rc != EOK) { … … 177 177 return rc; 178 178 } 179 179 180 180 task_exit_t texit; 181 181 int retval; … … 186 186 return rc; 187 187 } 188 188 189 189 return 0; 190 190 }
Note:
See TracChangeset
for help on using the changeset viewer.