1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-29 09:47:45 +00:00
serenity/Ports/citron/patches/0001-Get-rid-of-wordexp-on-serenity.patch
2023-08-16 15:32:42 +03:30

76 lines
2.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ali Mohammad Pur <ali.mpfard@gmail.com>
Date: Fri, 11 Feb 2022 16:13:52 +0330
Subject: [PATCH] Get rid of wordexp on serenity
---
src/file.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/file.c b/src/file.c
index a3bfd163f832ca52202d5acc47f1d76ba6c1ce8a..720a6e5bfb4e4512f1f6a33467096fc1991dc11b 100644
--- a/src/file.c
+++ b/src/file.c
@@ -18,11 +18,13 @@
#include "citron.h"
#include "siphash.h"
#include <dirent.h>
+#ifndef __serenity__
#include <wordexp.h>
#ifndef WORDEXP_READY
# define WORDEXP_READY 1
#endif
+#endif
#include <termios.h>
static struct termios oldTermios, newTermios;
@@ -461,6 +463,7 @@ ctr_object* ctr_file_rpath(ctr_object* myself, ctr_argument* argumentList)
char rpath[PATH_MAX + 1];
char* ret = realpath(cpath, rpath);
if (!ret) {
+#ifndef __serenity__
if (WORDEXP_READY) {
wordexp_t exp_result;
int st = wordexp(cpath, &exp_result, 0);
@@ -469,6 +472,7 @@ ctr_object* ctr_file_rpath(ctr_object* myself, ctr_argument* argumentList)
memset(rpath, 0, PATH_MAX);
memcpy(rpath, r, strlen(r));
wordfree(&exp_result);
+ ret = rpath;
} else {
char* err;
switch (st) {
@@ -499,8 +503,13 @@ ctr_object* ctr_file_rpath(ctr_object* myself, ctr_argument* argumentList)
CtrStdFlow = ctr_build_string_from_cstring(strerror(errno));
return CtrStdNil;
}
+#else
+ ctr_heap_free(cpath);
+ CtrStdFlow = ctr_build_string_from_cstring(strerror(errno));
+ return CtrStdNil;
+#endif
}
- path = ctr_build_string_from_cstring(rpath);
+ path = ctr_build_string_from_cstring(ret);
ctr_heap_free(cpath);
return path;
}
@@ -515,6 +524,9 @@ ctr_object* ctr_file_expand(ctr_object* myself, ctr_argument* argumentList)
if (argumentList->object == NULL)
return CtrStdNil;
ctr_object* path = ctr_internal_cast2string(argumentList->object);
+#ifdef __serenity__
+ return path;
+#else
char* cpath = ctr_heap_allocate_cstring(path);
wordexp_t exp_result;
int st = wordexp(cpath, &exp_result, 0);
@@ -557,6 +569,7 @@ ctr_object* ctr_file_expand(ctr_object* myself, ctr_argument* argumentList)
return CtrStdNil;
}
return arr;
+#endif
}
/**