summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-08-17 21:41:21 +0200
committerMiguel <m.i@gmx.at>2018-08-17 21:41:21 +0200
commitc15925a24efe14f437d8a2699500241a58fdc8f9 (patch)
treec0db3a7d2a4f857324735df35e9cc1f0539c5f24 /kernel/syscalls.c
parent6fd78c2ff950310d8372ec0353553cc4a5a43e72 (diff)
cleanup and working on fifo pipes
Diffstat (limited to 'kernel/syscalls.c')
-rw-r--r--kernel/syscalls.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c
index c507a4e..9f10d20 100644
--- a/kernel/syscalls.c
+++ b/kernel/syscalls.c
@@ -175,10 +175,22 @@ int syscall_execve(char *name, char **argv, char **env)
while(argv[arg_count]!=NULL)arg_count++;
char **argv1=kballoc(1);
- char **env1=kballoc(1);
+ if(argv!=NULL)
+ {
+ copy_args(argv,argv1);
+ }
+ else{
+ argv1=NULL;
+ }
- copy_args(argv,argv1);
- copy_args(env,env1);
+ char **env1=kballoc(1);
+ if(env!=NULL)
+ {
+ copy_args(env,env1);
+ }
+ else{
+ env1=NULL;
+ }
uint32_t alloc;
uint32_t entry_global=load_elf(name,&alloc);
@@ -214,12 +226,13 @@ int syscall_execve(char *name, char **argv, char **env)
}
+// TODO: support other files too (not only fifo pipes)
int syscall_open(char *name, int flags, int mode)
{
#ifdef LOG_SYSCALLS
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"open (name=0x%08X(\"%s\"), flags=%d, mode=%d)",name, name,flags,mode);
#endif
- panic(FOOLOS_MODULE_NAME,"unhandled syscall: open");
+ //panic(FOOLOS_MODULE_NAME,"unhandled syscall: open");
}