Index: fusl/src/process/posix_spawn_file_actions_addopen.c |
diff --git a/fusl/src/process/posix_spawn_file_actions_addopen.c b/fusl/src/process/posix_spawn_file_actions_addopen.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..368922c76b5259944059bad15d1c1d9d8e79fce5 |
--- /dev/null |
+++ b/fusl/src/process/posix_spawn_file_actions_addopen.c |
@@ -0,0 +1,20 @@ |
+#include <spawn.h> |
+#include <stdlib.h> |
+#include <string.h> |
+#include <errno.h> |
+#include "fdop.h" |
+ |
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict fa, int fd, const char *restrict path, int flags, mode_t mode) |
+{ |
+ struct fdop *op = malloc(sizeof *op + strlen(path) + 1); |
+ if (!op) return ENOMEM; |
+ op->cmd = FDOP_OPEN; |
+ op->fd = fd; |
+ op->oflag = flags; |
+ op->mode = mode; |
+ strcpy(op->path, path); |
+ if ((op->next = fa->__actions)) op->next->prev = op; |
+ op->prev = 0; |
+ fa->__actions = op; |
+ return 0; |
+} |