Use bestline library, update test logs

This commit is contained in:
Ivan Baravy 2022-05-30 02:08:15 +04:00
parent cfc0102d28
commit 219d72226a
23 changed files with 3826 additions and 218 deletions

3580
bestline.c Normal file

File diff suppressed because it is too large Load Diff

39
bestline.h Normal file
View File

@ -0,0 +1,39 @@
#pragma once
typedef struct bestlineCompletions {
unsigned long len;
char **cvec;
} bestlineCompletions;
typedef void(bestlineCompletionCallback)(const char *, bestlineCompletions *);
typedef char *(bestlineHintsCallback)(const char *, const char **,
const char **);
typedef void(bestlineFreeHintsCallback)(void *);
typedef unsigned(bestlineXlatCallback)(unsigned);
void bestlineSetCompletionCallback(bestlineCompletionCallback *);
void bestlineSetHintsCallback(bestlineHintsCallback *);
void bestlineSetFreeHintsCallback(bestlineFreeHintsCallback *);
void bestlineAddCompletion(bestlineCompletions *, const char *);
void bestlineSetXlatCallback(bestlineXlatCallback *);
char *bestline(const char *);
char *bestlineRaw(const char *, int, int);
char *bestlineWithHistory(const char *, const char *);
int bestlineHistoryAdd(const char *);
int bestlineHistorySave(const char *);
int bestlineHistoryLoad(const char *);
void bestlineFreeCompletions(bestlineCompletions *);
void bestlineHistoryFree(void);
void bestlineClearScreen(int);
void bestlineMaskModeEnable(void);
void bestlineMaskModeDisable(void);
void bestlineDisableRawMode(void);
void bestlineFree(void *);
char bestlineIsSeparator(unsigned);
char bestlineNotSeparator(unsigned);
char bestlineIsXeparator(unsigned);
unsigned bestlineUppercase(unsigned);
unsigned bestlineLowercase(unsigned);
long bestlineReadCharacter(int, char *, unsigned long);

View File

@ -61,14 +61,14 @@ covpreproc: covpreproc.c
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
umka_shell: umka_shell.o umka.o shell.o trace.o trace_lbr.o vdisk.o vnet.o \
lodepng.o pci.o thread.o util.o optparse.o
lodepng.o pci.o thread.o util.o optparse.o bestline.o
$(CC) $(LDFLAGS_32) $^ -o $@ -T umka.ld
umka_fuse: umka_fuse.o umka.o trace.o trace_lbr.o vdisk.o pci.o thread.o
$(CC) $(LDFLAGS_32) $^ -o $@ `pkg-config fuse3 --libs` -T umka.ld
umka_os: umka_os.o umka.o shell.o lodepng.o vdisk.o vnet.o trace.o trace_lbr.o \
pci.o thread.o umka_ping.o util.o
pci.o thread.o umka_ping.o util.o bestline.o
$(CC) $(LDFLAGS_32) $^ -o $@ -T umka.ld
umka_gen_devices_dat: umka_gen_devices_dat.o umka.o pci.o thread.o util.o
@ -89,8 +89,8 @@ pci.o: $(HOST)/pci.c
lodepng.o: lodepng.c lodepng.h
$(CC) $(CFLAGS_32) -c $<
#bestline.o: bestline.c bestline.h
# $(CC) $(CFLAGS_32) -U_POSIX_C_SOURCE -Wno-logical-op -Wno-switch-enum -c $<
bestline.o: bestline.c bestline.h
$(CC) $(CFLAGS_32) -U_POSIX_C_SOURCE -Wno-logical-op -Wno-switch-enum -c $<
optparse.o: optparse.c optparse.h
$(CC) $(CFLAGS_32) -c $<

105
shell.c
View File

@ -33,12 +33,9 @@
// TODO: Cleanup
#ifndef _WIN32
#include <arpa/inet.h>
#include <sys/select.h>
#endif
#include "shell.h"
#include "optparse.h"
//#include "bestline.h"
#include "vdisk.h"
#include "vnet.h"
#include "umka.h"
@ -46,9 +43,9 @@
#include "pci.h"
#include "util.h"
#include "lodepng.h"
#include "optparse.h"
#include "bestline.h"
//#define PATH_MAX 4096
#define FGETS_BUF_LEN 4096
#define MAX_COMMAND_ARGS 42
#define PRINT_BYTES_PER_LINE 32
#define MAX_DIRENTS_TO_READ 100
@ -57,13 +54,11 @@
#define DEFAULT_READDIR_ENCODING UTF8
#define DEFAULT_PATH_ENCODING UTF8
char prompt_line[2*PATH_MAX];
char prompt_line[PATH_MAX];
char cur_dir[PATH_MAX] = "/";
const char *last_dir = cur_dir;
bool cur_dir_changed = true;
char cmd_buf[FGETS_BUF_LEN];
typedef struct {
char *name;
void (*func) (struct shell_ctx *, int, char **);
@ -219,7 +214,7 @@ prompt(struct shell_ctx *ctx) {
fprintf(ctx->fout, "%s> ", last_dir);
fflush(ctx->fout);
}
/*
static void
completion(const char *buf, bestlineCompletions *lc) {
if (buf[0] == 'h') {
@ -237,39 +232,6 @@ hints(const char *buf, const char **ansi1, const char **ansi2) {
}
return NULL;
}
*/
static int
next_line(struct shell_ctx *ctx, int is_tty) {
if (is_tty) {
prompt(ctx);
}
return fgets(cmd_buf, FGETS_BUF_LEN, ctx->fin) != NULL;
// TODO: Cleanup
#ifdef _WIN32
return fgets(cmd_buf, FGETS_BUF_LEN, ctx->fin) != NULL;
#else
fd_set readfds;
// FD_ZERO(&readfds);
memset(&readfds, 0, sizeof(readfds));
FD_SET(fileno(ctx->fin), &readfds);
struct timeval timeout = {.tv_sec = 0, .tv_usec = 0};
int sr = select(fileno(ctx->fin)+1, &readfds, NULL, NULL, &timeout);
cmd_buf[0] = '\0';
if (sr > 0) {
fgets(cmd_buf, FGETS_BUF_LEN, ctx->fin);
}
return 1;
#endif
/*
sprintf(prompt_line, "%s> ", last_dir);
char *line = bestlineRaw(prompt_line, fileno(ctx->fin), fileno(ctx->fout));
if (line) {
strcpy(cmd_buf, line);
bestlineFree(line);
}
return line != NULL;
*/
}
static int
split_args(char *s, char **argv) {
@ -778,7 +740,13 @@ shell_set(struct shell_ctx *ctx, int argc, char **argv) {
return;
}
const char *var = argv[1];
size_t value = strtoul(argv[2], NULL, 0);
const char *val_str = argv[2];
char *endptr;
ssize_t value = strtol(val_str, &endptr, 0);
if (*endptr != '\0') {
fprintf(ctx->fout, "integer required: %s\n", val_str);
return;
}
if (!strcmp(var, "redraw_background")) {
kos_redraw_background = value;
} else if (!strcmp(var, "syslang")) {
@ -3398,35 +3366,42 @@ void *
run_test(struct shell_ctx *ctx) {
int is_tty = isatty(fileno(ctx->fin));
char **argv = (char**)calloc(sizeof(char*), (MAX_COMMAND_ARGS + 1));
// bestlineSetCompletionCallback(completion);
// bestlineSetHintsCallback(hints);
// bestlineHistoryLoad("umka_shell.history");
while(next_line(ctx, is_tty)) {
if (cmd_buf[0] == '#' || cmd_buf[0] == '\n' || cmd_buf[0] == '\0' ||
cmd_buf[0] == '\r') {
fprintf(ctx->fout, "%s", cmd_buf);
continue;
}
if (cmd_buf[0] == 'X') break;
bestlineSetCompletionCallback(completion);
bestlineSetHintsCallback(hints);
bestlineHistoryLoad(ctx->hist_file);
sprintf(prompt_line, "%s> ", last_dir);
char *line;
while((line = bestline(prompt_line))) {
if (!is_tty) {
prompt(ctx);
fprintf(ctx->fout, "%s", cmd_buf);
fflush(ctx->fout);
fprintf(ctx->fout, "%s\n", line);
}
int argc = split_args(cmd_buf, argv);
func_table_t *ft;
for (ft = shell_cmds; ft->name; ft++) {
if (!strcmp(argv[0], ft->name)) {
break;
}
}
if (ft->name) {
ft->func(ctx, argc, argv);
if (!strcmp(line, "X") || !strcmp(line, "q")) {
free(line);
break;
} else if (line[0] == '\0' || line[0] == '#' || line[0] == '\n'
|| *line == '\r') {
free(line);
continue;
} else {
fprintf(ctx->fout, "unknown command: %s\n", argv[0]);
bestlineHistoryAdd(line);
int argc = split_args(line, argv);
func_table_t *ft;
for (ft = shell_cmds; ft->name; ft++) {
if (!strcmp(argv[0], ft->name)) {
break;
}
}
if (ft->name) {
ft->func(ctx, argc, argv);
} else {
fprintf(ctx->fout, "unknown command: %s\n", argv[0]);
}
free(line);
}
}
free(argv);
bestlineHistorySave(ctx->hist_file);
return NULL;
}

View File

@ -7,6 +7,7 @@ struct shell_ctx {
FILE *fin;
FILE *fout;
int reproducible;
const char *hist_file;
};
void *run_test(struct shell_ctx *ctx);

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/xfs_v4_files_s05k_b4k_n8k.img hd0 -c 0
/hd0/1: xfs
# zero length
/> # zero length
/> read70 /hd0/1/no_hole 0 0 -b
status = 0 success, count = 0
@ -74,7 +74,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/no_hole 0 1 -b
status = 0 success, count = 1
00
@ -147,7 +147,7 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 1 -b
status = 6 end_of_file, count = 0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/no_hole 0 11 -b
status = 0 success, count = 11
000102030405060708090a
@ -205,8 +205,8 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 11 -b
status = 6 end_of_file, count = 0
# btree
/>
/> # btree
/> read70 /hd0/1/btree_l1_no_hole 0x80000 11 -b
status = 0 success, count = 11
0000080004000800080008

View File

@ -1,8 +1,8 @@
/> umka_init
/> disk_add ../img/xfs_v4_files_s05k_b4k_n8k.img hd0 -c 0
/hd0/1: xfs
# hole begin
# zero length
/> # hole begin
/> # zero length
/> read70 /hd0/1/hole_begin 0 0 -b
status = 0 success, count = 0
@ -21,7 +21,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_begin 0x4001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_begin 0 1 -b
status = 0 success, count = 1
00
@ -40,7 +40,7 @@ status = 0 success, count = 1
/> read70 /hd0/1/hole_begin 0x4001 1 -b
status = 0 success, count = 1
40
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_begin 0 11 -b
status = 0 success, count = 11
0000000000000000000000
@ -71,9 +71,9 @@ status = 0 success, count = 11
/> read70 /hd0/1/hole_begin 0x4001 11 -b
status = 0 success, count = 11
4002400440064008400a40
# hole middle
# zero length
/>
/> # hole middle
/> # zero length
/> read70 /hd0/1/hole_middle 0x7ffe 0 -b
status = 0 success, count = 0
@ -98,7 +98,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_middle 0xc001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_middle 0x7ffe 1 -b
status = 0 success, count = 1
fe
@ -123,7 +123,7 @@ status = 0 success, count = 1
/> read70 /hd0/1/hole_middle 0xc001 1 -b
status = 0 success, count = 1
c0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_middle 0x7ff4 11 -b
status = 0 success, count = 11
f47ff67ff87ffa7ffc7ffe
@ -172,9 +172,9 @@ status = 0 success, count = 11
/> read70 /hd0/1/hole_middle 0xc001 11 -b
status = 0 success, count = 11
c002c004c006c008c00ac0
# hole end
# zero length
/>
/> # hole end
/> # zero length
/> read70 /hd0/1/hole_end 0xbffe 0 -b
status = 0 success, count = 0
@ -199,7 +199,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_end 0x10001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_end 0xbffe 1 -b
status = 0 success, count = 1
fe
@ -224,7 +224,7 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/hole_end 0x10001 1 -b
status = 6 end_of_file, count = 0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_end 0xbff4 11 -b
status = 0 success, count = 11
f4bff6bff8bffabffcbffe

View File

@ -16,7 +16,7 @@ status = 5 file_not_found
status = 5 file_not_found
/> stat70 /hd0/1/sf_empty/deadbeef
status = 5 file_not_found
/>
/> stat70 /hd0/1/sf/.
status = 0 success
attr: ----f
@ -38,9 +38,9 @@ attr: ----f
/> stat70 /hd0/1/sf/../sf/
status = 0 success
attr: ----f
#stat70 /hd0/1/sf///..//sf
#stat70 /hd0/1/sf///..//sf/
/> #stat70 /hd0/1/sf///..//sf
/> #stat70 /hd0/1/sf///..//sf/
/>
/> stat70 /hd0/1/sf/d0000000000_
status = 0 success
attr: ----f
@ -52,7 +52,7 @@ status = 0 success
attr: ----f
/> stat70 /hd0/1/sf/d0000000003_xxx
status = 5 file_not_found
/>
/> cd /hd0/1/sf
sf> stat70 .
status = 0 success
@ -68,7 +68,7 @@ status = 0 success
attr: ----f
sf> stat70 d0000000003_xxx
status = 5 file_not_found
sf>
sf> cd /hd0/1/block
block> stat70 .
status = 0 success
@ -93,7 +93,7 @@ status = 0 success
attr: ----f
block> stat70 d0000000005_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
block>
block> cd /hd0/1/leaf
leaf> stat70 .
status = 0 success
@ -112,7 +112,7 @@ status = 0 success
attr: ----f
leaf> stat70 d0000000040_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
leaf>
leaf> cd /hd0/1/node
node> stat70 d0000000000_
status = 0 success
@ -144,7 +144,7 @@ attr: ----f
node> stat70 d0000001099_xxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
node>
node> cd /hd0/1/btree_leaf
btree_leaf> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -164,7 +164,7 @@ attr: ----f
btree_leaf> stat70 d0000000999_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf>
btree_leaf> cd /hd0/1/btree_leaf_free
btree_leaf_free> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -184,5 +184,5 @@ attr: ----f
btree_leaf_free> stat70 d0000001199_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf_free>
btree_leaf_free> disk_del hd0

View File

@ -12,7 +12,7 @@ status = 0 success
attr: ----f
/> stat70 /hd0/1/sf_empty/deadbeef
status = 5 file_not_found
/>
/> stat70 /hd0/1/sf/.
status = 0 success
attr: ----f
@ -34,9 +34,9 @@ attr: ----f
/> stat70 /hd0/1/sf/../sf/
status = 0 success
attr: ----f
#stat70 /hd0/1/sf///..//sf
#stat70 /hd0/1/sf///..//sf/
/> #stat70 /hd0/1/sf///..//sf
/> #stat70 /hd0/1/sf///..//sf/
/>
/> stat70 /hd0/1/sf/d0000000000_
status = 0 success
attr: ----f
@ -48,7 +48,7 @@ status = 0 success
attr: ----f
/> stat70 /hd0/1/sf/d0000000003_xxx
status = 5 file_not_found
/>
/> cd /hd0/1/sf
sf> stat70 .
status = 0 success
@ -64,7 +64,7 @@ status = 0 success
attr: ----f
sf> stat70 d0000000003_xxx
status = 5 file_not_found
sf>
sf> cd /hd0/1/block
block> stat70 .
status = 0 success
@ -89,7 +89,7 @@ status = 0 success
attr: ----f
block> stat70 d0000000005_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
block>
block> cd /hd0/1/leaf
leaf> stat70 .
status = 0 success
@ -108,7 +108,7 @@ status = 0 success
attr: ----f
leaf> stat70 d0000000040_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
leaf>
leaf> cd /hd0/1/node
node> stat70 d0000000000_
status = 0 success
@ -140,7 +140,7 @@ attr: ----f
node> stat70 d0000001019_xxxxxxx
status = 0 success
attr: ----f
node>
node> cd /hd0/1/btree_leaf
btree_leaf> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -160,7 +160,7 @@ attr: ----f
btree_leaf> stat70 d0000000999_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf>
btree_leaf> cd /hd0/1/btree_leaf_free
btree_leaf_free> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -180,5 +180,5 @@ attr: ----f
btree_leaf_free> stat70 d0000001199_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf_free>
btree_leaf_free> disk_del hd0

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/xfs_v4_unicode.img hd0 -c 0
/hd0/1: xfs
/>
/> stat80 /hd0/1/dir0
status = 0 success
attr: ----f
@ -32,7 +32,7 @@ attr: ----f
/> stat80 /hd0/1/дир3
status = 0 success
attr: ----f
/>
/> stat80 /hd0/1/dir0/file00
status = 0 success
attr: -----
@ -61,7 +61,7 @@ size: 26
status = 0 success
attr: -----
size: 26
/>
/> read80 /hd0/1/dir0/file00 0 100 -b
status = 6 end_of_file, count = 12
68656c6c6f5f776f726c640a
@ -74,7 +74,7 @@ d0bfd180d0b8d0b2d0b5d182e29da6d0bcd0b8d1800a
/> read80 /hd0/1/дир3/файл33 0 100 -b
status = 6 end_of_file, count = 26
d0bfd180d0b8d0b2d0b5d182e29da6f09f9297d0bcd0b8d1800a
/>
/> ls70 /hd0/1/ -e utf8
status = 6 end_of_file, count = 7
total = 7
@ -131,7 +131,7 @@ status = 5 file_not_found
status = 5 file_not_found
/> ls70 /hd0/1/дир3/ -e default
status = 5 file_not_found
/>
/> ls80 /hd0/1/ -e utf8
status = 6 end_of_file, count = 7
total = 7
@ -220,7 +220,7 @@ total = 3
----f .
----f ..
----- D09;3
/>
/> ls80 /hd0/1/â<>¦ðŸ©â<C2A9>¦/ -e utf8
status = 6 end_of_file, count = 5
total = 5
@ -253,5 +253,5 @@ total = 5
----f iØ=Üf'f'
----f f'iØ=Üf'
----f f'f'iØ=Ü
/>
/> disk_del hd0

View File

@ -12,7 +12,7 @@ status = 0 success
attr: ----f
/> stat70 /hd0/1/sf_empty/deadbeef
status = 5 file_not_found
/>
/> stat70 /hd0/1/sf/.
status = 0 success
attr: ----f
@ -34,9 +34,9 @@ attr: ----f
/> stat70 /hd0/1/sf/../sf/
status = 0 success
attr: ----f
#stat70 /hd0/1/sf///..//sf
#stat70 /hd0/1/sf///..//sf/
/> #stat70 /hd0/1/sf///..//sf
/> #stat70 /hd0/1/sf///..//sf/
/>
/> stat70 /hd0/1/sf/d0000000000_
status = 0 success
attr: ----f
@ -48,7 +48,7 @@ status = 0 success
attr: ----f
/> stat70 /hd0/1/sf/d0000000003_xxx
status = 5 file_not_found
/>
/> cd /hd0/1/sf
sf> stat70 .
status = 0 success
@ -64,7 +64,7 @@ status = 0 success
attr: ----f
sf> stat70 d0000000003_xxx
status = 5 file_not_found
sf>
sf> cd /hd0/1/block
block> stat70 .
status = 0 success
@ -89,7 +89,7 @@ status = 0 success
attr: ----f
block> stat70 d0000000005_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
block>
block> cd /hd0/1/leaf
leaf> stat70 .
status = 0 success
@ -108,7 +108,7 @@ status = 0 success
attr: ----f
leaf> stat70 d0000000040_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 5 file_not_found
leaf>
leaf> cd /hd0/1/node
node> stat70 d0000000000_
status = 0 success
@ -140,7 +140,7 @@ attr: ----f
node> stat70 d0000001099_xxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
node>
node> cd /hd0/1/btree_leaf
btree_leaf> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -160,7 +160,7 @@ attr: ----f
btree_leaf> stat70 d0000000999_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf>
btree_leaf> cd /hd0/1/btree_leaf_free
btree_leaf_free> stat70 d0000000000_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
@ -180,5 +180,5 @@ attr: ----f
btree_leaf_free> stat70 d0000001199_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
status = 0 success
attr: ----f
btree_leaf_free>
btree_leaf_free> disk_del hd0

View File

@ -1,8 +1,8 @@
/> umka_init
/> disk_add ../img/xfs_v5_files_s05k_b4k_n8k.img hd0 -c 0
/hd0/1: xfs
# hole begin
# zero length
/> # hole begin
/> # zero length
/> read70 /hd0/1/hole_begin 0 0 -b
status = 0 success, count = 0
@ -21,7 +21,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_begin 0x4001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_begin 0 1 -b
status = 0 success, count = 1
00
@ -40,7 +40,7 @@ status = 0 success, count = 1
/> read70 /hd0/1/hole_begin 0x4001 1 -b
status = 0 success, count = 1
40
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_begin 0 11 -b
status = 0 success, count = 11
0000000000000000000000
@ -71,9 +71,9 @@ status = 0 success, count = 11
/> read70 /hd0/1/hole_begin 0x4001 11 -b
status = 0 success, count = 11
4002400440064008400a40
# hole middle
# zero length
/>
/> # hole middle
/> # zero length
/> read70 /hd0/1/hole_middle 0x7ffe 0 -b
status = 0 success, count = 0
@ -98,7 +98,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_middle 0xc001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_middle 0x7ffe 1 -b
status = 0 success, count = 1
fe
@ -123,7 +123,7 @@ status = 0 success, count = 1
/> read70 /hd0/1/hole_middle 0xc001 1 -b
status = 0 success, count = 1
c0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_middle 0x7ff4 11 -b
status = 0 success, count = 11
f47ff67ff87ffa7ffc7ffe
@ -172,9 +172,9 @@ status = 0 success, count = 11
/> read70 /hd0/1/hole_middle 0xc001 11 -b
status = 0 success, count = 11
c002c004c006c008c00ac0
# hole end
# zero length
/>
/> # hole end
/> # zero length
/> read70 /hd0/1/hole_end 0xbffe 0 -b
status = 0 success, count = 0
@ -199,7 +199,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/hole_end 0x10001 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/hole_end 0xbffe 1 -b
status = 0 success, count = 1
fe
@ -224,7 +224,7 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/hole_end 0x10001 1 -b
status = 6 end_of_file, count = 0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/hole_end 0xbff4 11 -b
status = 0 success, count = 11
f4bff6bff8bffabffcbffe

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/xfs_v5_files_s05k_b4k_n8k.img hd0 -c 0
/hd0/1: xfs
# zero length
/> # zero length
/> read70 /hd0/1/no_hole 0 0 -b
status = 0 success, count = 0
@ -74,7 +74,7 @@ status = 0 success, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 0 -b
status = 0 success, count = 0
# one-byte length
/> # one-byte length
/> read70 /hd0/1/no_hole 0 1 -b
status = 0 success, count = 1
00
@ -147,7 +147,7 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 1 -b
status = 6 end_of_file, count = 0
# fixed-size block, different begin/end positions
/> # fixed-size block, different begin/end positions
/> read70 /hd0/1/no_hole 0 11 -b
status = 0 success, count = 11
000102030405060708090a
@ -205,8 +205,8 @@ status = 6 end_of_file, count = 0
/> read70 /hd0/1/no_hole 0xffffffffffffffff 11 -b
status = 6 end_of_file, count = 0
# btree
/>
/> # btree
/> read70 /hd0/1/btree_l1_no_hole 0x80000 11 -b
status = 0 success, count = 11
0000080004000800080008

View File

@ -1,6 +1,6 @@
/> umka_init
/> set_mouse_pos_screen 40 30
#disk_add ../img/kolibri.img rd -c 0
/> #disk_add ../img/kolibri.img rd -c 0
/> ramdisk_init ../img/kolibri.img
/rd/1: fat
/> set_skin /sys/DEFAULT.SKN
@ -22,15 +22,15 @@ status: 0
/> display_number 0 10 4 0 0 1234 5 45 0xffff00 1 1 0 0 0x0000ff
/> blit_bitmap chess_image.rgba 20 35 8 8 0 0 8 8 0 0 0 1 32
/> window_redraw 2
/>
/> set_window_caption hi_there 0
/>
/> get_font_smoothing
font smoothing: 2 - subpixel
/> set_font_smoothing 0
/> get_font_smoothing
font smoothing: 0 - off
/>
/> get_window_colors
0x00586786 frame
0x00fefefe grab
@ -43,7 +43,7 @@ font smoothing: 0 - off
0x00000000 work_text
0x007e7e7e work_graph
/> set_window_colors 0 0 0 0 0 0 0 0 0 0
/>
/> dump_win_stack 2
0: 0
1: 1
@ -69,7 +69,7 @@ wnd_caption:
wnd_clientbox (ltwh): 5 24 291 172
priority: 0
in_schedule: prev (2), next (2)
/>
/> process_info -1
cpu_usage: 0
window_stack_position: 2
@ -100,16 +100,16 @@ wnd_state: 0x00
5 top
65 right
3 bottom
/>
/> get_font_size
0px
/> set_font_size 16
/> get_font_size
16px
/>
/> get_screen_size
400x300
/>
/> scrot 016_#f01_#draw_all.out.png
/>
/> disk_del rd

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/xfs_v4_files_s05k_b4k_n8k.img hd0 -c 0
/hd0/1: xfs
/>
/> read70 /hd0/1/4GiB_plus 0x3ff4 11 -b
status = 0 success, count = 11
0000000000000000000000
@ -23,7 +23,7 @@ status = 0 success, count = 11
/> read70 /hd0/1/4GiB_plus 0x4001 11 -b
status = 0 success, count = 11
4002400440064008400a40
/>
/> read70 /hd0/1/4GiB_plus 0x7ff4 11 -b
status = 0 success, count = 11
f47ff67ff87ffa7ffc7ffe
@ -45,7 +45,7 @@ status = 0 success, count = 11
/> read70 /hd0/1/4GiB_plus 0x8001 11 -b
status = 0 success, count = 11
0000000000000000000000
/>
/> read70 /hd0/1/4GiB_plus 0xfffffff4 11 -b
status = 0 success, count = 11
f4fffffff8fffffffcffff
@ -67,7 +67,7 @@ status = 0 success, count = 11
/> read70 /hd0/1/4GiB_plus 0x100000001 11 -b
status = 0 success, count = 11
0000000100000008000000
/>
/> read70 /hd0/1/4GiB_plus 0x11ffffff4 11 -b
status = 0 success, count = 11
0000000000000000000000
@ -89,7 +89,7 @@ status = 0 success, count = 11
/> read70 /hd0/1/4GiB_plus 0x120000001 11 -b
status = 0 success, count = 11
0000200100000008000020
/>
/> read70 /hd0/1/4GiB_plus 0x120003ff4 11 -b
status = 0 success, count = 11
01000000f83f0020010000
@ -111,7 +111,7 @@ status = 0 success, count = 11
/> read70 /hd0/1/4GiB_plus 0x120004001 11 -b
status = 0 success, count = 11
0000000000000000000000
/>
/> read70 /hd0/1/4GiB_plus 0x11fffefff 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -124,7 +124,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x11fffefff 0x2001 -h
status = 0 success, count = 8193
d22f0c1a9c494cc1a8a1e1a2ccf4057502f2839603632d47c69cc272b8d7ef96
/>
/> read70 /hd0/1/4GiB_plus 0x11ffff000 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -137,7 +137,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x11ffff000 0x2001 -h
status = 0 success, count = 8193
0f8d363587a204a536ae4e17046f1b946d3716805d181d147968eb2d1efc5c63
/>
/> read70 /hd0/1/4GiB_plus 0x11ffff001 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -150,7 +150,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x11ffff001 0x2001 -h
status = 0 success, count = 8193
56d243996479770cd97a33c679fb57ff3c354d7785f5d846f53e171bad850389
/>
/> read70 /hd0/1/4GiB_plus 0x120002fff 0x0fff -h
status = 0 success, count = 4095
a126d59a9acb9cd3c977779638d1df609be8bd079b1b57373c87974b73a562ec
@ -163,7 +163,7 @@ f78a428aec38eb1d81a138060671b2a450c7b7d4cdda6226db4cd9fcc073bbc3
/> read70 /hd0/1/4GiB_plus 0x120002fff 0x2001 -h
status = 0 success, count = 8193
5d3ab86c1605d59550fe26506a8e16ca3e6b46b2a8cf9030a5dc5a00bd728823
/>
/> read70 /hd0/1/4GiB_plus 0x120003000 0x0fff -h
status = 0 success, count = 4095
5077407c7ecc83efb242c96ed6ec3ad86008f253a083b61cc9855a5e6c94c3f5
@ -176,7 +176,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x120003000 0x2001 -h
status = 0 success, count = 8193
e6a7c5df31fce8a8ee6ae52b715b2fca721e6fca63d1605e02be585de8526cf1
/>
/> read70 /hd0/1/4GiB_plus 0x120003001 0x0fff -h
status = 0 success, count = 4095
316310be962fd169a9961c0fc91a98deb30ab7c20fe35d32f4c0f14fa30660d5
@ -189,7 +189,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x120003001 0x2001 -h
status = 0 success, count = 8193
1adf6f95f4151bb640c60cf530ebfe91b5e268bf78044bd51de755a95bc07d08
/>
/> read70 /hd0/1/4GiB_plus 0x120003fff 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -202,7 +202,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x120003fff 0x2001 -h
status = 0 success, count = 8193
b70dd656adf5c5b3434b695386dd07658e667f6f9d0cd34af5a3e8527924964f
/>
/> read70 /hd0/1/4GiB_plus 0x120004000 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -215,7 +215,7 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x120004000 0x2001 -h
status = 0 success, count = 8193
b70dd656adf5c5b3434b695386dd07658e667f6f9d0cd34af5a3e8527924964f
/>
/> read70 /hd0/1/4GiB_plus 0x120004001 0x0fff -h
status = 0 success, count = 4095
1f65b79da1bf0dc2a529219184e005cc1453894c4ea996a1307784c7690eb7d2
@ -228,8 +228,8 @@ status = 0 success, count = 4097
/> read70 /hd0/1/4GiB_plus 0x120004001 0x2001 -h
status = 0 success, count = 8193
b70dd656adf5c5b3434b695386dd07658e667f6f9d0cd34af5a3e8527924964f
# data, hole, data
/>
/> # data, hole, data
/> read70 /hd0/1/4GiB_plus 0x120003fff 0x6000 -h
status = 6 end_of_file, count = 20481
f4ab1c2ab5e007814bc19cf58547cf98df1c1c70a1d02f5c417fe2a15b47239f
@ -239,8 +239,8 @@ status = 6 end_of_file, count = 20480
/> read70 /hd0/1/4GiB_plus 0x120004001 0x6000 -h
status = 6 end_of_file, count = 20479
ba9f86ce5ae88d4875fa38ef47f7257ba00e172ed2e2ee1473599de58c80823c
# hole, data, hole
/>
/> # hole, data, hole
/> read70 /hd0/1/4GiB_plus 0x11fffefff 0x6000 -h
status = 0 success, count = 24576
8ffe00fc8d9cb9b2d33865a95917df2cee3f6711c8d6358fd082ed5494851411

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/xfs_v4_btrees_l2.img hd0 -c 0
/hd0/1: xfs
/>
/> ls80 /hd0/1/dir_btree_l2 -f 0 -c 1
status = 0 success, count = 1
----f .
@ -393,7 +393,7 @@ status = 6 end_of_file, count = 83
----f d0000193178_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----f d0000193179_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----f d0000193180_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/>
/> read70 /hd0/1/file_btree_l2 0 16388096 -h
status = 0 success, count = 16388096
8cbbb4bf572aaf6016e608260f372facfffb6e40fc31d8d7d83b08b526273d75
@ -409,5 +409,5 @@ bb66ddff9fa267bf7a42153d0de9dc029b775e23d6378ade96e6c92ceaf6841a
/> read70 /hd0/1/file_btree_l2 0x1000 0x1001 -h
status = 0 success, count = 4097
aa026c31286b2ba83a047f8d07baa712b34da983235afb79b4d2cb60cf668f2b
/>
/> disk_del hd0

View File

@ -4,21 +4,21 @@
/rd/1: fat
/> set_skin /sys/DEFAULT.SKN
status: 0
/>
/> window_redraw 1
/> draw_window 2 10 4 10 0x000088 1 1 1 0 1 4 hello
/> window_redraw 2
/>
/> set_window_caption hi_there 0
/>
/> new_sys_thread
tid: 3
/> switch_to_thread 3
/>
/> window_redraw 1
/> draw_window 4 5 8 5 0x000088 1 1 1 0 1 4 hello
/> window_redraw 2
/>
/> dump_win_map
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
@ -64,7 +64,7 @@ tid: 3
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
/>
/> set redraw_background 0
/> move_window 6 8 5 5
/> dump_win_map
@ -112,7 +112,7 @@ tid: 3
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
/>
/> set redraw_background 0
/> move_window 6 10 5 5
/> dump_win_map
@ -160,7 +160,7 @@ tid: 3
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111
/>
/> scrot 044_#f01_#draw_winmap.out.png
/>
/> disk_del rd

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/exfat_s05k_c16k_b16k.img hd0 -c 0
/hd0/1: exfat
/>
/> ls70 /hd0/1/dir_0 -f 0 -c 0
/> ls70 /hd0/1/dir_0 -f 0 -c 1
status = 0 success, count = 1
@ -19,7 +19,7 @@ status = 6 end_of_file, count = 0
status = 6 end_of_file, count = 0
/> ls70 /hd0/1/dir_0 -f 1 -c 0xffffffff
status = 6 end_of_file, count = 0
/>
/> ls70 /hd0/1/dir_1 -f 0 -c 0
/> ls70 /hd0/1/dir_1 -f 0 -c 1
status = 0 success, count = 1
@ -42,7 +42,7 @@ status = 6 end_of_file, count = 1
/> ls70 /hd0/1/dir_1 -f 1 -c 0xffffffff
status = 6 end_of_file, count = 1
----- file000
/>
/> ls70 /hd0/1/dir_1000
status = 0 success, count = 100
total = 1001
@ -11273,5 +11273,5 @@ total = 10001
----f d0000009999_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/> ls70 /hd0/1/dir_100000
status = 5 file_not_found
/>
/> disk_del hd0

View File

@ -1,7 +1,7 @@
/> umka_init
/> disk_add ../img/exfat_s05k_c8k_b8k.img hd0 -c 0
/hd0/1: exfat
/>
/> stat70 /hd0/1/dir_000
status = 0 success
attr: ----f
@ -226,5 +226,5 @@ attr: ----f
status = 0 success
attr: -----
size: 1
/>
/> disk_del hd0

View File

@ -1,5 +1,5 @@
/> umka_init
/>
/> get_keyboard_mode
keyboard_mode: 0 - ASCII
/> get_keyboard_lang
@ -7,7 +7,7 @@ keyboard_mode: 0 - ASCII
/> get_system_lang
1 - en
/> dump_key_buff
/>
/> get_keyboard_lang
1 - en
/> set_keyboard_lang 0
@ -49,7 +49,7 @@ invalid lang: 0
/> set_keyboard_lang 12
/> get_keyboard_lang
invalid lang: 12
/>
/> get_system_lang
1 - en
/> set_system_lang 0
@ -91,7 +91,7 @@ invalid lang: 0
/> set_system_lang 12
/> get_system_lang
invalid lang: 12
/>
/> set_keyboard_mode 0
/> get_keyboard_mode
keyboard_mode: 0 - ASCII
@ -103,7 +103,7 @@ keyboard_mode: 0 - ASCII
0x00033200
/> dump_key_buff
0 0x34 0x05
/>
/> set_keyboard_mode 1
/> get_keyboard_mode
keyboard_mode: 1 - scancodes
@ -117,7 +117,7 @@ keyboard_mode: 1 - scancodes
/> dump_key_buff
0 0x07 0x00
1 0x09 0x00
/>
/> get_key
0x00000700
/> get key_count
@ -131,7 +131,7 @@ keyboard_mode: 1 - scancodes
/> get key_count
0
/> dump_key_buff
/>
/> get_keyboard_layout -t 1
0x36 0x1b 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x30 0x2d 0x3d 0x08 0x09
0x71 0x77 0x65 0x72 0x74 0x79 0x75 0x69 0x6f 0x70 0x5b 0x5d 0x0d 0x7e 0x61 0x73
@ -186,7 +186,7 @@ keyboard_mode: 1 - scancodes
0xb1 0xb7 0xb9 0xb6 0x41 0x42 0x43 0x44 0xff 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c
0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x41 0x42
0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52
/>
/> set_keyboard_layout -t 0 -f 00ff.layout
status: -1
/> get_keyboard_layout -t normal
@ -216,7 +216,7 @@ status: -1
0xb1 0xb7 0xb9 0xb6 0x41 0x42 0x43 0x44 0xff 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c
0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x41 0x42
0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52
/>
/> set_keyboard_layout -t 1 -f 00ff.layout
status: 0
/> get_keyboard_layout -t normal
@ -246,7 +246,7 @@ status: 0
0xb1 0xb7 0xb9 0xb6 0x41 0x42 0x43 0x44 0xff 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c
0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x41 0x42
0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52
/>
/> set_keyboard_layout -t 2 -f 00ff.layout
status: 0
/> get_keyboard_layout -t normal
@ -276,7 +276,7 @@ status: 0
0xb1 0xb7 0xb9 0xb6 0x41 0x42 0x43 0x44 0xff 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c
0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x41 0x42
0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52
/>
/> set_keyboard_layout -t 3 -f 00ff.layout
status: 0
/> get_keyboard_layout -t normal
@ -306,7 +306,7 @@ status: 0
0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e 0x5f
0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f
0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 0x7a 0x7b 0x7c 0x7d 0x7e 0x7f
/>
/> set_keyboard_layout -t 4 -f 00ff.layout
status: -1
/> get_keyboard_layout -t normal
@ -336,7 +336,7 @@ status: -1
0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e 0x5f
0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f
0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 0x7a 0x7b 0x7c 0x7d 0x7e 0x7f
/>
/> set_keyboard_mode ascii
/> send_scancode 0x11
/> get_key

View File

@ -1,5 +1,5 @@
/> umka_init
/>
/> get_mouse_pos_screen
x y: 200 150
/> get_mouse_pos_window

View File

@ -1,22 +1,22 @@
/> umka_init
#set_mouse_pos_screen 40 30
/> #set_mouse_pos_screen 40 30
/> ramdisk_init ../img/kolibri.img
/rd/1: fat
/> set_skin /sys/DEFAULT.SKN
status: 0
/>
/> load_cursor_from_file /sys/fill.cur
handle = non-zero
/> load_cursor_from_mem ../spray.cur
handle = non-zero
/>
/> window_redraw 1
/> draw_window 10 300 5 200 0x000088 1 1 1 0 1 4 hello
/> window_redraw 2
/>
/>
/>
/> scrot 051_#draw_#cursor_all.out.png
/>
/>
/> disk_del rd

View File

@ -26,9 +26,20 @@
#include "umka.h"
#include "trace.h"
#define HIST_FILE_BASENAME ".umka_shell.history"
#define UMKA_DEFAULT_DISPLAY_WIDTH 400
#define UMKA_DEFAULT_DISPLAY_HEIGHT 300
char history_filename[PATH_MAX];
void build_history_filename() {
const char *dir_name;
if (!(dir_name = getenv("HOME"))) {
dir_name = ".";
}
sprintf(history_filename, "%s/%s", dir_name, HIST_FILE_BASENAME);
}
int
main(int argc, char **argv) {
(void)argc;
@ -40,7 +51,9 @@ main(int argc, char **argv) {
" -r reproducible logs (without pointers and datetime)\n"
" -c collect coverage";
const char *infile = NULL, *outfile = NULL;
struct shell_ctx ctx = {.fin = stdin, .fout = stdout, .reproducible = 0};
struct shell_ctx ctx = {.fin = stdin, .fout = stdout, .reproducible = 0,
.hist_file = history_filename};
build_history_filename();
kos_boot.bpp = 32;
kos_boot.x_res = UMKA_DEFAULT_DISPLAY_WIDTH;
@ -74,11 +87,11 @@ main(int argc, char **argv) {
exit(1);
}
}
if (infile && !(ctx.fin = fopen(infile, "r"))) {
if (infile && !(ctx.fin = freopen(infile, "r", stdin))) {
fprintf(stderr, "[!] can't open file for reading: %s", infile);
exit(1);
}
if (outfile && !(ctx.fout = fopen(outfile, "w"))) {
if (outfile && !(ctx.fout = freopen(outfile, "w", stdout))) {
fprintf(stderr, "[!] can't open file for writing: %s", outfile);
exit(1);
}