From 29dbfca8354315a81f075c3c1fff3557ac8c92e5 Mon Sep 17 00:00:00 2001 From: Andreas Ziermann Date: Fri, 27 Nov 2015 11:42:33 +0100 Subject: libc/msdos: program name missing in argv[0] Correct the missing program name the arg[0]. --- libc/msdos/msdos.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'libc') diff --git a/libc/msdos/msdos.c b/libc/msdos/msdos.c index 973b0a6..ab3d586 100644 --- a/libc/msdos/msdos.c +++ b/libc/msdos/msdos.c @@ -175,6 +175,29 @@ auto_func: ! Label for bcc -M to work. #endasm #endif +void set_program_name(__argv) +char ** __argv; +{ + unsigned char *ptr; + int src,len; + + __set_es(__envseg); + src=0; + while(__peek_es(src++)!=0) + { + while(__peek_es(src++)!=0); + } + src+=2; // step over 0x0001 + len=0; + while (__peek_es(src+len++)!=0); + ptr=sbrk(len); + __argv[0]=ptr; + while(len--) + { + *ptr++=__peek_es(src++); + } +} + __mkargv(__argc, __argv) int __argc; char ** __argv; @@ -183,6 +206,8 @@ char ** __argv; unsigned char *ptr, *p; int es=__get_es(); + set_program_name(__argv); + __set_es(__psp); /* Pointer to the args */ length = __peek_es(0x80); /* Length of cmd line */ if( length > 0 ) -- cgit v1.2.1