Changes in / [90924df:f3378ba] in mainline
- Files:
-
- 9 deleted
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/checkers/clang.py
r90924df rf3378ba 114 114 for job in jobs: 115 115 if (not clang(rootdir, job)): 116 print ()116 print 117 117 print("Failed job: %s" % job) 118 118 return -
tools/checkers/stanse.py
r90924df rf3378ba 127 127 for job in jobs: 128 128 if (not stanse(rootdir, job)): 129 print ()129 print 130 130 print("Failed job: %s" % job) 131 131 return -
tools/checkers/vcc.py
r90924df rf3378ba 204 204 for job in jobs: 205 205 if (not vcc(vcc_path, rootdir, job)): 206 print ()206 print 207 207 print("Failed job: %s" % job) 208 208 return 209 209 210 print ()210 print 211 211 print("All jobs passed") 212 212 -
tools/filldir.py
r90924df rf3378ba 37 37 38 38 if len(sys.argv) < 3: 39 print ('Usage: filldir <parent-dir> <count>')39 print 'Usage: filldir <parent-dir> <count>' 40 40 exit(2) 41 41 -
tools/gentestfile.py
r90924df rf3378ba 36 36 37 37 if len(sys.argv) < 2: 38 print ("Usage: gentestfile.py <count of 64-bit numbers to output>")38 print "Usage: gentestfile.py <count of 64-bit numbers to output>" 39 39 exit() 40 40 41 m = int(sys.argv[1])41 m = long(sys.argv[1]) 42 42 i = 0 43 43 pow_2_64 = 2 ** 64 -
tools/mkfat.py
r90924df rf3378ba 247 247 return bs 248 248 249 def create_lfn_entry(name_index) : 250 (name, index) = name_index 249 def create_lfn_entry((name, index)) : 251 250 entry = xstruct.create(LFN_ENTRY) 252 251 … … 294 293 return [dir_entry] 295 294 296 n = (int) (len(name) / 13 + 1)295 n = len(name) / 13 + 1 297 296 names = [(name[i * 13: (i + 1) * 13 + 1], i + 1) for i in range(n)] 298 297 … … 300 299 entries[0].pos |= 0x40 301 300 302 fname11 = str(dir_entry.name + dir_entry.ext)301 fname11 = dir_entry.name + dir_entry.ext 303 302 304 303 csum = 0 -
tools/mkuimage.py
r90924df rf3378ba 124 124 header.img_type = 2 # Kernel 125 125 header.compression = 0 # None 126 header.img_name = image_name .encode('ascii')126 header.img_name = image_name 127 127 128 128 header_crc = calc_crc32(header.pack()) … … 140 140 signed_crc = zlib.crc32(byteseq, 0) 141 141 if signed_crc < 0: 142 return signed_crc + (1 << 32)142 return (long(signed_crc) + (long(2) ** long(32))) # 2^32L 143 143 else: 144 144 return signed_crc … … 148 148 def print_syntax(cmd): 149 149 print("syntax: " + cmd + " [<options>] <raw_image> <uImage>") 150 print ()150 print 151 151 print("\traw_image\tInput image name (raw binary data)") 152 152 print("\tuImage\t\tOutput uImage name (U-Boot image)") 153 print ()153 print 154 154 print("options:") 155 155 print("\t-name <name>\tImage name (default: 'Noname')") -
tools/xstruct.py
r90924df rf3378ba 32 32 33 33 import struct 34 import sys35 34 import types 36 35 37 integer_types = (int, long) if sys.version < '3' else (int,)38 39 36 ranges = { 40 'B': ( integer_types, 0x00, 0xff),41 'H': ( integer_types, 0x0000, 0xffff),42 'L': ( integer_types, 0x00000000, 0xffffffff),43 'Q': ( integer_types, 0x0000000000000000, 0xffffffffffffffff),44 'b': ( integer_types, -0x80, 0x7f),45 'h': ( integer_types, -0x8000, 0x7fff),46 'l': ( integer_types, -0x80000000, 0x7fffffff) ,47 'q': ( integer_types, -0x8000000000000000, 0x7fffffffffffffff),37 'B': ((int, long), 0x00, 0xff), 38 'H': ((int, long), 0x0000, 0xffff), 39 'L': ((int, long), 0x00000000, 0xffffffff), 40 'Q': ((int, long), 0x0000000000000000, 0xffffffffffffffff), 41 'b': ((int, long), -0x80, 0x7f), 42 'h': ((int, long), -0x8000, 0x7fff), 43 'l': ((int, long), -0x80000000, 0x7fffffff) , 44 'q': ((int, long), -0x8000000000000000, 0x7fffffffffffffff), 48 45 } 49 46 -
uspace/app/bdsh/Makefile
r90924df rf3378ba 48 48 cmds/modules/cp/cp.c \ 49 49 cmds/modules/mv/mv.c \ 50 cmds/modules/printf/printf.c \51 cmds/modules/echo/echo.c \52 50 cmds/modules/mount/mount.c \ 53 51 cmds/modules/unmount/unmount.c \ -
uspace/app/bdsh/TODO
r90924df rf3378ba 30 30 * Add wrappers for signal, sigaction to make ports to modules easier 31 31 32 * Add 'echo' and 'printf' modules. 33 32 34 Regarding POSIX: 33 35 ---------------- -
uspace/app/bdsh/cmds/builtins/cd/cd.c
r90924df rf3378ba 63 63 argc = cli_count_args(argv); 64 64 65 /* Handle cd -- -. Override to switch to a directory named '-' */66 bool hyphen_override = false;67 if (argc == 3) {68 if(!str_cmp(argv[1], "--")) {69 hyphen_override = true;70 argc--;71 }72 }73 74 65 /* We don't yet play nice with whitespace, a getopt implementation should 75 66 * protect "quoted\ destination" as a single argument. Its not our job to … … 88 79 } 89 80 90 /* We have the correct # of arguments */91 //TODO: handle tidle (~) expansion? */81 /* We have the correct # of arguments 82 * TODO: handle tidle (~) expansion? */ 92 83 93 /* Handle 'cd -' first. */ 94 if (!str_cmp(argv[1], "-") && !hyphen_override) { 95 char *buffer = (char *) malloc(PATH_MAX); 96 if (!buffer) { 97 cli_error(CL_ENOMEM, "Cannot switch to previous directory"); 98 return CMD_FAILURE; 99 } 100 memset(buffer, 0, PATH_MAX); 101 getprevwd(buffer, PATH_MAX); 102 if (*buffer == '\0') { 103 cli_error(CL_EFAIL, "No previous directory to switch to"); 104 free(buffer); 105 return CMD_FAILURE; 106 } else { 107 rc = chdir(buffer); 108 free(buffer); 109 } 110 } else if (hyphen_override) { 111 /* Handles 'cd -- <dirname>'. 112 * Override for directory named '-'. 113 */ 114 rc = chdir(argv[2]); 115 } else { 116 rc = chdir(argv[1]); 117 } 84 rc = chdir(argv[1]); 118 85 119 86 if (rc == 0) { -
uspace/app/bdsh/cmds/modules/cat/cat.h
r90924df rf3378ba 4 4 /* Prototypes for the cat command, excluding entry points */ 5 5 6 static unsigned int cat_file(const char *, size_t, bool, off64_t, off64_t, bool); 7 6 8 #endif /* CAT_H */ 7 9 -
uspace/app/bdsh/cmds/modules/cp/cp.c
r90924df rf3378ba 30 30 #include <stdlib.h> 31 31 #include <unistd.h> 32 #include <io/console.h>33 #include <io/keycode.h>34 32 #include <getopt.h> 35 33 #include <str.h> … … 48 46 49 47 static const char *cmdname = "cp"; 50 static console_ctrl_t *con;51 48 52 49 static struct option const long_options[] = { 53 50 { "buffer", required_argument, 0, 'b' }, 54 51 { "force", no_argument, 0, 'f' }, 55 { "interactive", no_argument, 0, 'i'},56 52 { "recursive", no_argument, 0, 'r' }, 57 53 { "help", no_argument, 0, 'h' }, … … 143 139 } 144 140 145 static bool get_user_decision(bool bdefault, const char *message, ...)146 {147 va_list args;148 149 va_start(args, message);150 vprintf(message, args);151 va_end(args);152 153 while (true) {154 kbd_event_t ev;155 console_flush(con);156 console_get_kbd_event(con, &ev);157 if ((ev.type != KEY_PRESS)158 || (ev.mods & (KM_CTRL | KM_ALT)) != 0) {159 continue;160 }161 162 switch(ev.key) {163 case KC_Y:164 printf("y\n");165 return true;166 case KC_N:167 printf("n\n");168 return false;169 case KC_ENTER:170 printf("%c\n", bdefault ? 'Y' : 'N');171 return bdefault;172 default:173 break;174 }175 }176 }177 178 141 static int64_t do_copy(const char *src, const char *dest, 179 size_t blen, int vb, int recursive, int force , int interactive)142 size_t blen, int vb, int recursive, int force) 180 143 { 181 144 int r = -1; … … 229 192 /* e.g. cp file_name existing_file */ 230 193 231 /* dest already exists, 232 * if force is set we will try to remove it. 233 * if interactive is set user input is required. 194 /* dest already exists, if force is set we will 195 * try to remove it. 234 196 */ 235 if (force && !interactive) {197 if (force) { 236 198 if (unlink(dest_path)) { 237 199 printf("Unable to remove %s\n", … … 239 201 goto exit; 240 202 } 241 } else if (!force && interactive) {242 bool overwrite = get_user_decision(false,243 "File already exists: %s. Overwrite? [y/N]: ",244 dest_path);245 if (overwrite) {246 printf("Overwriting file: %s\n", dest_path);247 if (unlink(dest_path)) {248 printf("Unable to remove %s\n", dest_path);249 goto exit;250 }251 } else {252 printf("Not overwriting file: %s\n", dest_path);253 r = 0;254 goto exit;255 }256 203 } else { 257 printf(" File already exists: %s\n", dest_path);204 printf("file already exists: %s\n", dest_path); 258 205 goto exit; 259 206 } … … 355 302 /* Recursively call do_copy() */ 356 303 r = do_copy(src_dent, dest_dent, blen, vb, recursive, 357 force , interactive);304 force); 358 305 if (r) 359 306 goto exit; … … 368 315 return r; 369 316 } 317 370 318 371 319 static int64_t copy_file(const char *src, const char *dest, … … 432 380 " -v, --version Print version information and exit\n" 433 381 " -V, --verbose Be annoyingly noisy about what's being done\n" 434 " -f, --force Do not complain when <dest> exists (overrides a previous -i)\n" 435 " -i, --interactive Ask what to do when <dest> exists (overrides a previous -f)\n" 382 " -f, --force Do not complain when <dest> exists\n" 436 383 " -r, --recursive Copy entire directories\n" 437 384 " -b, --buffer ## Set the read buffer size to ##\n"; … … 450 397 unsigned int argc, verbose = 0; 451 398 int buffer = 0, recursive = 0; 452 int force = 0 , interactive = 0;399 int force = 0; 453 400 int c, opt_ind; 454 401 int64_t ret; 455 402 456 con = console_init(stdin, stdout);457 403 argc = cli_count_args(argv); 458 404 459 405 for (c = 0, optind = 0, opt_ind = 0; c != -1;) { 460 c = getopt_long(argc, argv, "hvVf irb:", long_options, &opt_ind);406 c = getopt_long(argc, argv, "hvVfrb:", long_options, &opt_ind); 461 407 switch (c) { 462 408 case 'h': … … 470 416 break; 471 417 case 'f': 472 interactive = 0;473 418 force = 1; 474 break;475 case 'i':476 force = 0;477 interactive = 1;478 419 break; 479 420 case 'r': … … 485 426 "(should be a number greater than zero)\n", 486 427 cmdname); 487 console_done(con);488 428 return CMD_FAILURE; 489 429 } … … 502 442 printf("%s: invalid number of arguments. Try %s --help\n", 503 443 cmdname, cmdname); 504 console_done(con);505 444 return CMD_FAILURE; 506 445 } 507 446 508 447 ret = do_copy(argv[optind], argv[optind + 1], buffer, verbose, 509 recursive, force, interactive); 510 511 console_done(con); 448 recursive, force); 512 449 513 450 if (ret == 0) -
uspace/app/bdsh/cmds/modules/help/help.h
r90924df rf3378ba 3 3 4 4 /* Prototypes for the help command (excluding entry points) */ 5 static int is_mod_or_builtin(char *); 5 6 6 7 #endif -
uspace/app/bdsh/cmds/modules/mkdir/mkdir.h
r90924df rf3378ba 4 4 /* Prototypes for the mkdir command, excluding entry points */ 5 5 6 static unsigned int create_directory(const char *, unsigned int); 6 7 #endif /* MKDIR_H */ 7 8 -
uspace/app/bdsh/cmds/modules/modules.h
r90924df rf3378ba 61 61 #include "unmount/entry.h" 62 62 #include "kcon/entry.h" 63 #include "printf/entry.h"64 #include "echo/entry.h"65 63 66 64 /* Each .def function fills the module_t struct with the individual name, entry … … 84 82 #include "unmount/unmount_def.h" 85 83 #include "kcon/kcon_def.h" 86 #include "printf/printf_def.h"87 #include "echo/echo_def.h"88 84 89 85 {NULL, NULL, NULL, NULL} -
uspace/app/bdsh/cmds/modules/rm/rm.c
r90924df rf3378ba 46 46 #define RM_VERSION "0.0.1" 47 47 48 static rm_job_t rm; 49 48 50 static struct option const long_options[] = { 49 51 { "help", no_argument, 0, 'h' }, … … 55 57 }; 56 58 57 /* Return values for rm_scope() */58 #define RM_BOGUS 059 #define RM_FILE 160 #define RM_DIR 261 62 /* Flags for rm_update() */63 #define _RM_ENTRY 064 #define _RM_ADVANCE 165 #define _RM_REWIND 266 #define _RM_EXIT 367 68 /* A simple job structure */69 typedef struct {70 /* Options set at run time */71 unsigned int force; /* -f option */72 unsigned int recursive; /* -r option */73 unsigned int safe; /* -s option */74 75 /* Keeps track of the job in progress */76 int advance; /* How far deep we've gone since entering */77 DIR *entry; /* Entry point to the tree being removed */78 char *owd; /* Where we were when we invoked rm */79 char *cwd; /* Current directory being transversed */80 char *nwd; /* Next directory to be transversed */81 82 /* Counters */83 int f_removed; /* Number of files unlinked */84 int d_removed; /* Number of directories unlinked */85 } rm_job_t;86 87 static rm_job_t rm;88 89 static unsigned int rm_recursive(const char *);90 91 59 static unsigned int rm_start(rm_job_t *rm) 92 60 { … … 127 95 if (NULL != rm->cwd) 128 96 free(rm->cwd); 129 }130 131 static unsigned int rm_single(const char *path)132 {133 if (unlink(path)) {134 cli_error(CL_EFAIL, "rm: could not remove file %s", path);135 return 1;136 }137 return 0;138 }139 140 static unsigned int rm_scope(const char *path)141 {142 int fd;143 DIR *dirp;144 145 dirp = opendir(path);146 if (dirp) {147 closedir(dirp);148 return RM_DIR;149 }150 151 fd = open(path, O_RDONLY);152 if (fd > 0) {153 close(fd);154 return RM_FILE;155 }156 157 return RM_BOGUS;158 97 } 159 98 … … 215 154 216 155 return ret + 1; 156 } 157 158 static unsigned int rm_single(const char *path) 159 { 160 if (unlink(path)) { 161 cli_error(CL_EFAIL, "rm: could not remove file %s", path); 162 return 1; 163 } 164 return 0; 165 } 166 167 static unsigned int rm_scope(const char *path) 168 { 169 int fd; 170 DIR *dirp; 171 172 dirp = opendir(path); 173 if (dirp) { 174 closedir(dirp); 175 return RM_DIR; 176 } 177 178 fd = open(path, O_RDONLY); 179 if (fd > 0) { 180 close(fd); 181 return RM_FILE; 182 } 183 184 return RM_BOGUS; 217 185 } 218 186 -
uspace/app/bdsh/cmds/modules/rm/rm.h
r90924df rf3378ba 2 2 #define RM_H 3 3 4 /* Return values for rm_scope() */ 5 #define RM_BOGUS 0 6 #define RM_FILE 1 7 #define RM_DIR 2 8 9 /* Flags for rm_update() */ 10 #define _RM_ENTRY 0 11 #define _RM_ADVANCE 1 12 #define _RM_REWIND 2 13 #define _RM_EXIT 3 14 15 /* A simple job structure */ 16 typedef struct { 17 /* Options set at run time */ 18 unsigned int force; /* -f option */ 19 unsigned int recursive; /* -r option */ 20 unsigned int safe; /* -s option */ 21 22 /* Keeps track of the job in progress */ 23 int advance; /* How far deep we've gone since entering */ 24 DIR *entry; /* Entry point to the tree being removed */ 25 char *owd; /* Where we were when we invoked rm */ 26 char *cwd; /* Current directory being transversed */ 27 char *nwd; /* Next directory to be transversed */ 28 29 /* Counters */ 30 int f_removed; /* Number of files unlinked */ 31 int d_removed; /* Number of directories unlinked */ 32 } rm_job_t; 33 34 4 35 /* Prototypes for the rm command, excluding entry points */ 36 static unsigned int rm_start(rm_job_t *); 37 static void rm_end(rm_job_t *rm); 38 static unsigned int rm_recursive(const char *); 39 static unsigned int rm_single(const char *); 40 static unsigned int rm_scope(const char *); 5 41 6 42 #endif /* RM_H */ -
uspace/app/bdsh/cmds/modules/sleep/sleep.c
r90924df rf3378ba 27 27 */ 28 28 29 #include <errno.h>30 29 #include <stdio.h> 31 30 #include <stdlib.h> 32 #include <unistd.h>33 31 #include "config.h" 34 32 #include "util.h" … … 43 41 void help_cmd_sleep(unsigned int level) 44 42 { 45 if (level == HELP_SHORT) { 46 printf("`%s' pauses for a given time interval\n", cmdname); 47 } else { 48 help_cmd_sleep(HELP_SHORT); 49 printf( 50 "Usage: %s <duration>\n" 51 "The duration is a decimal number of seconds.\n", 52 cmdname); 53 } 54 43 printf("This is the %s help for '%s'.\n", 44 level ? EXT_HELP : SHORT_HELP, cmdname); 55 45 return; 56 }57 58 /** Convert string containing decimal seconds to useconds_t.59 *60 * @param nptr Pointer to string.61 * @param result Result of the conversion.62 * @return EOK if conversion was successful.63 */64 static int decimal_to_useconds(const char *nptr, useconds_t *result)65 {66 int ret;67 uint64_t whole_seconds;68 uint64_t frac_seconds;69 char *endptr;70 71 /* Check for whole seconds */72 if (*nptr == '.') {73 whole_seconds = 0;74 endptr = (char *)nptr;75 } else {76 ret = str_uint64_t(nptr, &endptr, 10, false, &whole_seconds);77 if (ret != EOK)78 return ret;79 }80 81 /* Check for fractional seconds */82 if (*endptr == '\0') {83 frac_seconds = 0;84 } else if (*endptr == '.' && endptr[1] == '\0') {85 frac_seconds = 0;86 } else if (*endptr == '.') {87 nptr = endptr + 1;88 ret = str_uint64_t(nptr, &endptr, 10, true, &frac_seconds);89 if (ret != EOK)90 return ret;91 92 int ndigits = endptr - nptr;93 for (; ndigits < 6; ndigits++)94 frac_seconds *= 10;95 for (; ndigits > 6; ndigits--)96 frac_seconds /= 10;97 } else {98 return EINVAL;99 }100 101 /* Check for overflow */102 useconds_t total = whole_seconds * 1000000 + frac_seconds;103 if (total / 1000000 != whole_seconds)104 return EOVERFLOW;105 106 *result = total;107 108 return EOK;109 46 } 110 47 … … 112 49 int cmd_sleep(char **argv) 113 50 { 114 int ret;115 51 unsigned int argc; 116 u seconds_t duration;52 unsigned int i; 117 53 118 54 /* Count the arguments */ 119 argc = cli_count_args(argv);55 for (argc = 0; argv[argc] != NULL; argc ++); 120 56 121 if (argc != 2) { 122 printf("%s - incorrect number of arguments. Try `help %s'\n", 123 cmdname, cmdname); 124 return CMD_FAILURE; 57 printf("%s %s\n", TEST_ANNOUNCE, cmdname); 58 printf("%d arguments passed to %s", argc - 1, cmdname); 59 60 if (argc < 2) { 61 printf("\n"); 62 return CMD_SUCCESS; 125 63 } 126 64 127 ret = decimal_to_useconds(argv[1], &duration); 128 if (ret != EOK) { 129 printf("%s - invalid duration.\n", cmdname); 130 return CMD_FAILURE; 131 } 132 133 (void) usleep(duration); 65 printf(":\n"); 66 for (i = 1; i < argc; i++) 67 printf("[%d] -> %s\n", i, argv[i]); 134 68 135 69 return CMD_SUCCESS; -
uspace/lib/c/generic/vfs/vfs.c
r90924df rf3378ba 58 58 static async_sess_t *vfs_sess = NULL; 59 59 60 /* Current (working) directory. */61 60 static FIBRIL_MUTEX_INITIALIZE(cwd_mutex); 61 62 62 static int cwd_fd = -1; 63 63 static char *cwd_path = NULL; 64 64 static size_t cwd_size = 0; 65 66 /* Previous directory. */67 static FIBRIL_MUTEX_INITIALIZE(pwd_mutex);68 static int pwd_fd = -1;69 static char *pwd_path = NULL;70 static size_t pwd_size = 0;71 72 65 73 66 /** Start an async exchange on the VFS session. … … 758 751 fibril_mutex_lock(&cwd_mutex); 759 752 760 761 fibril_mutex_lock(&pwd_mutex); 762 763 if (pwd_fd >= 0) 764 close(pwd_fd); 765 766 767 if (pwd_path) 768 free(pwd_path); 769 770 771 pwd_fd = cwd_fd; 772 pwd_path = cwd_path; 773 pwd_size = cwd_size; 774 775 fibril_mutex_unlock(&pwd_mutex); 776 753 if (cwd_fd >= 0) 754 close(cwd_fd); 755 756 757 if (cwd_path) 758 free(cwd_path); 759 777 760 cwd_fd = fd; 778 761 cwd_path = abs; … … 798 781 fibril_mutex_unlock(&cwd_mutex); 799 782 800 return buf;801 }802 803 804 char *getprevwd(char *buf, size_t size)805 {806 if (size == 0)807 return NULL;808 809 fibril_mutex_lock(&pwd_mutex);810 811 if ((pwd_size == 0) || (size < pwd_size + 1)) {812 fibril_mutex_unlock(&pwd_mutex);813 return NULL;814 }815 816 str_cpy(buf, size, pwd_path);817 fibril_mutex_unlock(&pwd_mutex);818 819 783 return buf; 820 784 } -
uspace/lib/c/include/unistd.h
r90924df rf3378ba 58 58 #define getpagesize() (PAGE_SIZE) 59 59 60 extern int dup2(int , int);60 extern int dup2(int oldfd, int newfd); 61 61 62 62 extern ssize_t write(int, const void *, size_t); … … 73 73 extern int unlink(const char *); 74 74 75 extern char *getcwd(char *, size_t); 76 extern char *getprevwd(char *, size_t); 75 extern char *getcwd(char *buf, size_t); 77 76 extern int rmdir(const char *); 78 77 extern int chdir(const char *);
Note:
See TracChangeset
for help on using the changeset viewer.