Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1881 → Rev 1882

/programs/develop/libraries/menuetlibc/src/libc/dos/process/dosexec.c
0,0 → 1,102
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <menuet/os.h>
#include <sys/stat.h>
 
int _dos_exec(const char *program, const char *args, char * const envp[])
{
return -1;
}
 
 
int _is_unixy_shell (const char *shellpath)
{
return -1;
}
 
int _is_dos_shell (const char *shellpath)
{
return -1;
}
 
int __dosexec_command_exec(const char *program, char **argv, char **envp)
{
return -1;
}
 
char * __dosexec_find_on_path(const char *program, char *envp[], char *buf)
{
return NULL;
}
 
 
static void build_args(char * dstbuf,char * const argv[],int argc)
{
int i,j;
for(i=0;i<argc;i++)
{
j=strlen(argv[i]);
if(i==(argc-1))
sprintf(dstbuf,"%s",argv[i]);
else
sprintf(dstbuf,"%s ",argv[i]);
dstbuf+=j;
}
}
 
int __spawnve(int mode, const char *path, char *const argv[], char *const envp[])
{
char * buffer_for_args;
int ap,asz;
struct systree_info st_info;
int res;
fflush(stdout);
if(!path)
{
errno=EINVAL;
return -1;
}
if(strlen(path)>FILENAME_MAX-1)
{
errno = ENAMETOOLONG;
return -1;
}
for(ap=0,asz=10;argv[ap]!=NULL;ap++)
{
asz+=strlen(argv[ap])+1;
}
if(ap)
{
buffer_for_args=malloc(asz);
if(!buffer_for_args)
{
errno=ENOMEM;
return -1;
}
memset(buffer_for_args,0,asz);
build_args(buffer_for_args,argv,ap);
} else buffer_for_args=NULL;
st_info.command = 7;
st_info.file_offset_low = 0;
st_info.file_offset_high = (__u32)buffer_for_args;
st_info.size = 0;
st_info.data_pointer = 0;
st_info._zero = 0;
//_fix_path(path,st_info.name);
st_info.nameptr = path;
res = __kolibri__system_tree_access(&st_info);
if (res == -5)
errno = ENOENT;
else if (res == -31)
errno = ENOEXEC;
else if (res == -30 || res == -32)
errno = ENOMEM;
else if (res < 0)
errno = EINVAL;
free(buffer_for_args);
if(mode==0x1BADB002) exit(0);
return (res>0)?res:-1;
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property