Changeset 86ffa27f in mainline for uspace/app/bdsh
- Timestamp:
- 2011-08-07T11:21:44Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- cc574511
- Parents:
- 15f3c3f (diff), e8067c0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app/bdsh
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/Makefile
r15f3c3f r86ffa27f 54 54 cmds/mod_cmds.c \ 55 55 cmds/builtin_cmds.c \ 56 compl.c \ 56 57 errors.c \ 57 58 input.c \ -
uspace/app/bdsh/cmds/modules/cp/cp.c
r15f3c3f r86ffa27f 71 71 size_t blen, int vb) 72 72 { 73 int fd1, fd2, bytes = 0;74 off64_t total = 0;73 int fd1, fd2, bytes; 74 off64_t total; 75 75 int64_t copied = 0; 76 76 char *buff = NULL; … … 104 104 } 105 105 106 for (;;) { 107 ssize_t res; 108 size_t written = 0; 109 110 bytes = read(fd1, buff, blen); 111 if (bytes <= 0) 106 while ((bytes = read_all(fd1, buff, blen)) > 0) { 107 if ((bytes = write_all(fd2, buff, bytes)) < 0) 112 108 break; 113 109 copied += bytes; 114 res = bytes;115 do {116 /*117 * Theoretically, it may not be enough to call write()118 * only once. Also the previous read() may have119 * returned less data than requested.120 */121 bytes = write(fd2, buff + written, res);122 if (bytes < 0)123 goto err;124 written += bytes;125 res -= bytes;126 } while (res > 0);127 128 /* TODO: re-insert assert() once this is stand alone,129 * removed as abort() exits the entire shell130 */131 if (res != 0) {132 printf("\n%zd more bytes than actually exist were copied\n", res);133 goto err;134 }135 110 } 136 111 137 112 if (bytes < 0) { 138 err:139 113 printf("\nError copying %s, (%d)\n", src, bytes); 140 114 copied = bytes; -
uspace/app/bdsh/cmds/modules/ls/ls.c
r15f3c3f r86ffa27f 169 169 170 170 /* fill the name field */ 171 tosort[nbdirs].name = (char *) malloc(str_ length(dp->d_name) + 1);171 tosort[nbdirs].name = (char *) malloc(str_size(dp->d_name) + 1); 172 172 if (!tosort[nbdirs].name) { 173 173 cli_error(CL_ENOMEM, "ls: failed to scan %s", d); 174 174 goto out; 175 175 } 176 177 str_cpy(tosort[nbdirs].name, str_ length(dp->d_name) + 1, dp->d_name);176 177 str_cpy(tosort[nbdirs].name, str_size(dp->d_name) + 1, dp->d_name); 178 178 len = snprintf(buff, PATH_MAX - 1, "%s/%s", d, tosort[nbdirs].name); 179 179 buff[len] = '\0'; -
uspace/app/bdsh/config.h
r15f3c3f r86ffa27f 40 40 #endif 41 41 42 /* Work around for getenv() */43 #define PATH "/srv:/app"44 #define PATH_DELIM ":"45 46 42 /* Used in many places */ 47 43 #define SMALL_BUFLEN 256 -
uspace/app/bdsh/exec.c
r15f3c3f r86ffa27f 52 52 static int try_access(const char *); 53 53 54 const char *search_dir[] = { "/app", "/srv", NULL }; 55 54 56 /* work-around for access() */ 55 57 static int try_access(const char *f) … … 69 71 static char *find_command(char *cmd) 70 72 { 71 char *path_tok; 72 char *path[PATH_MAX]; 73 int n = 0, i = 0; 74 size_t x = str_size(cmd) + 2; 73 size_t i; 75 74 76 75 found = (char *)malloc(PATH_MAX); … … 81 80 } 82 81 83 path_tok = str_dup(PATH);84 85 /* Extract the PATH env to a path[] array */86 path[n] = strtok(path_tok, PATH_DELIM);87 while (NULL != path[n]) {88 if ((str_size(path[n]) + x ) > PATH_MAX) {89 cli_error(CL_ENOTSUP,90 "Segment %d of path is too large, search ends at segment %d",91 n, n-1);92 break;93 }94 path[++n] = strtok(NULL, PATH_DELIM);95 }96 97 82 /* We now have n places to look for the command */ 98 for (i =0; path[i]; i++) {83 for (i = 0; search_dir[i] != NULL; i++) { 99 84 memset(found, 0, sizeof(found)); 100 snprintf(found, PATH_MAX, "%s/%s", path[i], cmd);85 snprintf(found, PATH_MAX, "%s/%s", search_dir[i], cmd); 101 86 if (-1 != try_access(found)) { 102 free(path_tok);103 87 return (char *) found; 104 88 } … … 106 90 107 91 /* We didn't find it, just give it back as-is. */ 108 free(path_tok);109 92 return (char *) cmd; 110 93 } -
uspace/app/bdsh/exec.h
r15f3c3f r86ffa27f 33 33 #include "scli.h" 34 34 35 extern const char *search_dir[]; 36 35 37 extern unsigned int try_exec(char *, char **, iostate_t *); 36 38 -
uspace/app/bdsh/input.c
r15f3c3f r86ffa27f 1 1 /* 2 2 * Copyright (c) 2008 Tim Post 3 * Copyright (c) 2011 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 43 44 44 45 #include "config.h" 46 #include "compl.h" 45 47 #include "util.h" 46 48 #include "scli.h" … … 168 170 } 169 171 170 rc = run_command( cmd, usr, &new_iostate);172 rc = run_command(actual_cmd, usr, &new_iostate); 171 173 172 174 finit_with_files: … … 226 228 int rc; 227 229 228 console_flush(tinput->console); 229 console_set_style(tinput->console, STYLE_EMPHASIS); 230 printf("%s", usr->prompt); 231 console_flush(tinput->console); 232 console_set_style(tinput->console, STYLE_NORMAL); 230 tinput_set_prompt(tinput, usr->prompt); 233 231 234 232 rc = tinput_read(tinput, &str); … … 263 261 } 264 262 263 tinput_set_compl_ops(tinput, &compl_ops); 264 265 265 return 0; 266 266 } -
uspace/app/bdsh/scli.h
r15f3c3f r86ffa27f 32 32 #include "config.h" 33 33 #include <stdint.h> 34 #include <stdio.h> 34 35 35 36 typedef struct {
Note:
See TracChangeset
for help on using the changeset viewer.
