mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-23 17:52:26 -05:00
Ports: Add mrsh port
This commit is contained in:
parent
b3a24d732d
commit
ce56770875
Notes:
sideshowbarker
2024-07-19 09:39:00 +09:00
Author: https://github.com/bugaevc Commit: https://github.com/SerenityOS/serenity/commit/ce567708751 Pull-request: https://github.com/SerenityOS/serenity/pull/1184
9 changed files with 301 additions and 0 deletions
7
Ports/mrsh/package.sh
Executable file
7
Ports/mrsh/package.sh
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash ../.port_include.sh
|
||||
port=mrsh
|
||||
version=d9763a32e7da572677d1681bb1fc67f117d641f3
|
||||
files="https://codeload.github.com/emersion/mrsh/legacy.tar.gz/d9763a32e7da572677d1681bb1fc67f117d641f3 emersion-mrsh-d9763a3.tar.gz"
|
||||
useconfigure=true
|
||||
makeopts=
|
||||
workdir=emersion-mrsh-d9763a3
|
45
Ports/mrsh/patches/disable-fnmatch.patch
Normal file
45
Ports/mrsh/patches/disable-fnmatch.patch
Normal file
|
@ -0,0 +1,45 @@
|
|||
--- a/shell/task/task.c 2020-02-03 18:16:49.579018362 +0300
|
||||
+++ b/shell/task/task.c 2020-02-03 18:24:17.149890856 +0300
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
-#include <fnmatch.h>
|
||||
+// #include <fnmatch.h>
|
||||
#include <mrsh/ast.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -218,7 +218,7 @@
|
||||
}
|
||||
char *pattern = word_to_pattern(*word_ptr);
|
||||
if (pattern != NULL) {
|
||||
- selected = fnmatch(pattern, word_str, 0) == 0;
|
||||
+ // selected = fnmatch(pattern, word_str, 0) == 0;
|
||||
free(pattern);
|
||||
} else {
|
||||
char *str = mrsh_word_str(*word_ptr);
|
||||
--- a/shell/task/word.c 2020-02-03 18:25:52.544717475 +0300
|
||||
+++ b/shell/task/word.c 2020-02-03 18:26:47.036189658 +0300
|
||||
@@ -1,7 +1,7 @@
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
-#include <fnmatch.h>
|
||||
+// #include <fnmatch.h>
|
||||
#include <mrsh/buffer.h>
|
||||
#include <mrsh/parser.h>
|
||||
#include <stdio.h>
|
||||
@@ -364,11 +364,13 @@
|
||||
trimmed = buf;
|
||||
}
|
||||
|
||||
+/*
|
||||
if (fnmatch(pattern, match, 0) == 0) {
|
||||
char *result = strdup(trimmed);
|
||||
free(buf);
|
||||
return result;
|
||||
}
|
||||
+*/
|
||||
|
||||
buf[i] = ch;
|
||||
}
|
34
Ports/mrsh/patches/disable-glob.patch
Normal file
34
Ports/mrsh/patches/disable-glob.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
--- a/shell/word.c 2020-02-04 15:23:40.077301321 +0300
|
||||
+++ b/shell/word.c 2020-02-04 15:24:09.428550187 +0300
|
||||
@@ -1,7 +1,7 @@
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
-#include <glob.h>
|
||||
+// #include <glob.h>
|
||||
#include <mrsh/buffer.h>
|
||||
#include <pwd.h>
|
||||
#include <stdbool.h>
|
||||
@@ -338,11 +338,13 @@
|
||||
const struct mrsh_array *fields) {
|
||||
for (size_t i = 0; i < fields->len; ++i) {
|
||||
const struct mrsh_word *field = fields->data[i];
|
||||
-
|
||||
+/*
|
||||
char *pattern = word_to_pattern(field);
|
||||
if (pattern == NULL) {
|
||||
+*/
|
||||
mrsh_array_add(expanded, mrsh_word_str(field));
|
||||
continue;
|
||||
+/*
|
||||
}
|
||||
|
||||
glob_t glob_buf;
|
||||
@@ -361,6 +363,7 @@
|
||||
}
|
||||
|
||||
free(pattern);
|
||||
+*/
|
||||
}
|
||||
|
||||
return true;
|
11
Ports/mrsh/patches/disable-pipebuf.patch
Normal file
11
Ports/mrsh/patches/disable-pipebuf.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/shell/redir.c 2020-02-03 18:09:07.918039522 +0300
|
||||
+++ b/shell/redir.c 2020-02-03 18:10:13.701606476 +0300
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
// We can write at most PIPE_BUF bytes without blocking. If we want to write
|
||||
// more, we need to fork and continue writing in another process.
|
||||
- size_t remaining = PIPE_BUF;
|
||||
+ size_t remaining = 0;
|
||||
bool more = false;
|
||||
size_t i;
|
||||
for (i = 0; i < lines->len; ++i) {
|
17
Ports/mrsh/patches/disable-sysctl.patch
Normal file
17
Ports/mrsh/patches/disable-sysctl.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
--- a/builtin/times.c 2020-02-03 17:40:26.634489515 +0300
|
||||
+++ b/builtin/times.c 2020-02-03 17:41:52.351246681 +0300
|
||||
@@ -16,11 +16,14 @@
|
||||
}
|
||||
|
||||
struct tms buf;
|
||||
+/*
|
||||
long clk_tck = sysconf(_SC_CLK_TCK);
|
||||
if (clk_tck == -1) {
|
||||
perror("sysconf");
|
||||
return 1;
|
||||
}
|
||||
+*/
|
||||
+ long clk_tck = 1000;
|
||||
|
||||
if (times(&buf) == (clock_t)-1) {
|
||||
perror("times");
|
18
Ports/mrsh/patches/disable-ulimit.patch
Normal file
18
Ports/mrsh/patches/disable-ulimit.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
--- a/builtin/ulimit.c 2020-02-03 17:43:24.961064732 +0300
|
||||
+++ b/builtin/ulimit.c 2020-02-03 17:46:08.082450486 +0300
|
||||
@@ -14,6 +14,9 @@
|
||||
static const char ulimit_usage[] = "usage: ulimit [-f] [blocks]\n";
|
||||
|
||||
int builtin_ulimit(struct mrsh_state *state, int argc, char *argv[]) {
|
||||
+ fprintf(stderr, "unimplemented\n");
|
||||
+ return 1;
|
||||
+/*
|
||||
mrsh_optind = 0;
|
||||
int opt;
|
||||
while ((opt = mrsh_getopt(argc, argv, ":f")) != -1) {
|
||||
@@ -58,4 +61,5 @@
|
||||
}
|
||||
|
||||
return 0;
|
||||
+*/
|
||||
}
|
26
Ports/mrsh/patches/hardcode-default-path.patch
Normal file
26
Ports/mrsh/patches/hardcode-default-path.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
--- a/shell/path.c 2020-02-03 18:04:51.852832611 +0300
|
||||
+++ b/shell/path.c 2020-02-03 18:06:50.023851071 +0300
|
||||
@@ -27,18 +27,23 @@
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
+/*
|
||||
size_t pathe_size = confstr(_CS_PATH, NULL, 0);
|
||||
if (pathe_size == 0) {
|
||||
return NULL;
|
||||
}
|
||||
pathe = malloc(pathe_size);
|
||||
+*/
|
||||
+ pathe = strdup("/bin:/usr/bin");
|
||||
if (pathe == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
+/*
|
||||
if (confstr(_CS_PATH, pathe, pathe_size) != pathe_size) {
|
||||
free(pathe);
|
||||
return NULL;
|
||||
}
|
||||
+*/
|
||||
}
|
||||
|
||||
static char path[PATH_MAX + 1];
|
33
Ports/mrsh/patches/workaround-limits-include-order.patch
Normal file
33
Ports/mrsh/patches/workaround-limits-include-order.patch
Normal file
|
@ -0,0 +1,33 @@
|
|||
--- a/builtin/cd.c 2020-02-03 17:38:39.619544218 +0300
|
||||
+++ b/builtin/cd.c 2020-02-03 17:39:18.387886672 +0300
|
||||
@@ -10,6 +10,8 @@
|
||||
#include <unistd.h>
|
||||
#include "builtin.h"
|
||||
|
||||
+#define PATH_MAX 4096
|
||||
+
|
||||
static const char cd_usage[] = "usage: cd [-L|-P] [-|directory]\n";
|
||||
|
||||
static int cd(struct mrsh_state *state, const char *path) {
|
||||
--- a/shell/entry.c 2020-02-03 18:02:41.502709181 +0300
|
||||
+++ b/shell/entry.c 2020-02-03 18:03:02.254888038 +0300
|
||||
@@ -12,6 +12,8 @@
|
||||
#include "parser.h"
|
||||
#include "shell/trap.h"
|
||||
|
||||
+#define PATH_MAX 4096
|
||||
+
|
||||
static char *expand_str(struct mrsh_state *state, const char *src) {
|
||||
struct mrsh_parser *parser = mrsh_parser_with_data(src, strlen(src));
|
||||
if (parser == NULL) {
|
||||
--- a/shell/path.c 2020-02-03 18:03:55.014342748 +0300
|
||||
+++ b/shell/path.c 2020-02-03 18:04:08.167456108 +0300
|
||||
@@ -8,6 +8,8 @@
|
||||
#include <unistd.h>
|
||||
#include "shell/path.h"
|
||||
|
||||
+#define PATH_MAX 4096
|
||||
+
|
||||
const char *expand_path(struct mrsh_state *state, const char *file, bool exec,
|
||||
bool default_path) {
|
||||
if (strchr(file, '/')) {
|
110
Ports/mrsh/patches/workaround-warnings.patch
Normal file
110
Ports/mrsh/patches/workaround-warnings.patch
Normal file
|
@ -0,0 +1,110 @@
|
|||
--- a/ast.c 2020-02-03 17:32:44.302405596 +0300
|
||||
+++ b/ast.c 2020-02-03 17:35:40.520962185 +0300
|
||||
@@ -576,6 +576,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
case MRSH_NODE_COMMAND:;
|
||||
struct mrsh_command *cmd = mrsh_node_get_command(node);
|
||||
switch (cmd->type) {
|
||||
@@ -626,6 +627,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
case MRSH_NODE_WORD:;
|
||||
struct mrsh_word *word = mrsh_node_get_word(node);
|
||||
switch (word->type) {
|
||||
@@ -653,8 +655,10 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
|
||||
static void position_next(struct mrsh_position *dst,
|
||||
@@ -700,6 +704,7 @@
|
||||
return;
|
||||
case MRSH_WORD_ARITHMETIC:
|
||||
assert(false); // TODO
|
||||
+ return;
|
||||
case MRSH_WORD_LIST:;
|
||||
struct mrsh_word_list *wl = mrsh_word_get_list(word);
|
||||
if (wl->children.len == 0) {
|
||||
@@ -713,6 +718,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
|
||||
void mrsh_command_range(struct mrsh_command *cmd, struct mrsh_position *begin,
|
||||
@@ -800,8 +806,10 @@
|
||||
mrsh_command_get_function_definition(cmd);
|
||||
*begin = fd->name_range.begin;
|
||||
mrsh_command_range(fd->body, NULL, end);
|
||||
+ return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
|
||||
static void buffer_append_str(struct mrsh_buffer *buf, const char *str) {
|
||||
@@ -818,6 +826,7 @@
|
||||
case MRSH_WORD_COMMAND:
|
||||
case MRSH_WORD_ARITHMETIC:
|
||||
assert(false);
|
||||
+ return;
|
||||
case MRSH_WORD_LIST:;
|
||||
const struct mrsh_word_list *wl = mrsh_word_get_list(word);
|
||||
for (size_t i = 0; i < wl->children.len; ++i) {
|
||||
@@ -827,6 +836,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
|
||||
char *mrsh_word_str(const struct mrsh_word *word) {
|
||||
@@ -891,6 +901,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
case MRSH_NODE_COMMAND:;
|
||||
struct mrsh_command *cmd = mrsh_node_get_command(node);
|
||||
switch (cmd->type) {
|
||||
@@ -956,6 +967,7 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
case MRSH_NODE_WORD:;
|
||||
// TODO: quoting
|
||||
struct mrsh_word *word = mrsh_node_get_word(node);
|
||||
@@ -1002,8 +1014,10 @@
|
||||
return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
assert(false);
|
||||
+ return;
|
||||
}
|
||||
|
||||
char *mrsh_node_format(struct mrsh_node *node) {
|
||||
--- a/main.c 2020-02-03 18:40:40.433381483 +0300
|
||||
+++ b/main.c 2020-02-03 18:39:57.708015856 +0300
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <unistd.h>
|
||||
#include "frontend.h"
|
||||
|
||||
-extern char **environ;
|
||||
+// extern char **environ;
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
struct mrsh_state *state = mrsh_state_create();
|
Loading…
Add table
Reference in a new issue