# HG changeset patch # User Shinji KONO # Date 1545986635 -32400 # Node ID 096b3fc7aa668c82dfd78db5187ac21ea7bd9e87 # Parent 84430575206401ab0dfd6abb4b93462ea8fc3143 fix diff -r 844305752064 -r 096b3fc7aa66 os9/mc09/crtos9.asm --- a/os9/mc09/crtos9.asm Thu Dec 27 20:16:34 2018 +0900 +++ b/os9/mc09/crtos9.asm Fri Dec 28 17:43:55 2018 +0900 @@ -27,8 +27,9 @@ _start _00000 LEAS -256,S ALLOCATE WORK AREA + leay _name,pcr + pshs x,y POINT TO CONTENT OF ARGUMENT VECTOR leay ,u - pshs d,x POINT TO CONTENT OF ARGUMENT VECTOR PSHS Y * clear globals on Y LDX #_GLOBALS @@ -234,4 +235,5 @@ * * * + emod _eom diff -r 844305752064 -r 096b3fc7aa66 os9/mc09/makefile --- a/os9/mc09/makefile Thu Dec 27 20:16:34 2018 +0900 +++ b/os9/mc09/makefile Fri Dec 28 17:43:55 2018 +0900 @@ -36,12 +36,12 @@ mc2.c: patch fd = 0; stdout = STDOUT; stdout->fd = 1; @@ -44,34 +45,40 @@ /* create argv here */ argc = 0; argv = 0; - n = 0; - quote = 0; for( i = 0; i < 2 ; i++ ) { - if (i==1 && argc) { argv = (char**)malloc(sizeof(char*)*argc); } - p = args; - while((c = *p++)) { - if (i==1) argv[n] = args; + if (i==1) { + argv = (char**)malloc(sizeof(char*)*(argc+1)); + argv[0] = prog; + } + n = 1; + quote = 0; + q = p = args; + if (i==1) argv[n] = args; + while((c = *p++) && c!='\r') { if (c=='\'') { if (!quote) { - if (i==1) argv[n]++; + q--; quote = 1; - continue; } else { - if (i==1) p[-1]=0; + if (i==1) *q=0; quote = 0; } } else if (c=='\\') { p++; - continue; } else if (c==' ') { - if (quote) - continue; - if (i==1) p[-1]=0; + if (!quote) { + if (i==1) { + *q = 0; argv[n++] = q+1; + } + } } - n++; + if (i==1) *q = *p; + q++; p++; } - p[-1]=0; + if (i==1) *q = 0; + argc = n; } + argv[n]=0; main(argc,argv); }