Files
cleonos/cleonos/c/apps/shell/shell_script.c

47 lines
935 B
C

#include "shell_internal.h"
int ush_run_script_file(ush_state *sh, const char *path) {
char script[USH_SCRIPT_MAX + 1ULL];
char line[USH_LINE_MAX];
u64 got;
u64 i;
u64 line_pos = 0ULL;
if (sh == (ush_state *)0 || path == (const char *)0 || path[0] == '\0') {
return 0;
}
got = cleonos_sys_fs_read(path, script, USH_SCRIPT_MAX);
if (got == 0ULL) {
return 0;
}
if (got > USH_SCRIPT_MAX) {
got = USH_SCRIPT_MAX;
}
script[got] = '\0';
for (i = 0ULL; i <= got; i++) {
char ch = script[i];
if (ch == '\r') {
continue;
}
if (ch == '\n' || ch == '\0') {
line[line_pos] = '\0';
ush_execute_line(sh, line);
line_pos = 0ULL;
continue;
}
if (line_pos + 1ULL < (u64)sizeof(line)) {
line[line_pos++] = ch;
}
}
return 1;
}