# HG changeset patch # User Pascal Bellard # Date 1490957471 -7200 # Node ID 8fab00f1f6beba98502f196556d2bd6fd9ac4162 # Parent 766a40e6c5e04190ff81fd221e4725f2bbddb8cd linld: fix chdirname diff -r 766a40e6c5e0 -r 8fab00f1f6be linld/stuff/src/CRTL.ASM --- a/linld/stuff/src/CRTL.ASM Fri Mar 31 10:37:54 2017 +0200 +++ b/linld/stuff/src/CRTL.ASM Fri Mar 31 12:51:11 2017 +0200 @@ -165,29 +165,6 @@ endp _puts - ifdef EXTRA -;*************************************************************** -;int chdir(char *path); -;*************************************************************** - global _chdir:near - proc _chdir near - - pop ax - pop dx - push dx - push ax -chdir: - stc - mov ax,713Bh - int 21h - jnc chkc - mov ah,3Bh - jmp dos - - endp _chdir - endif - - ;*************************************************************** ;int fileattr(const char* name); ;*************************************************************** @@ -1340,9 +1317,9 @@ proc _progname near push si di es - xor di,di mov ah,30h int 21h + xor di,di cmp al,3 mov ax,di jb @@skip @@ -1379,7 +1356,7 @@ ;*************************************************************** -;int chdirname(char *path) +;void chdirname(char *path) ;*************************************************************** global _chdirname:near proc _chdirname near @@ -1391,35 +1368,36 @@ cmp [byte bx+1],3Ah jne @@nodisk - mov dl,[bx] - or dl,20h + mov dl,20h + or dl,[bx] sub dl,61h mov ah,0Eh - push bx int 21h - pop bx inc bx inc bx @@nodisk: - mov dx,bx xor cx,cx @@next: mov al,[bx] cmp al,5Ch jne @@tsteos - mov cx,bx + mov dx,bx + inc cx @@tsteos: inc bx or al,al jnz @@next - cbw jcxz @@end - mov bx,cx + mov bx,dx push [word bx] mov [bx],al - push bx - call chdir - pop bx + stc + mov ax,713Bh ; chdir long filename + int 21h + mov ah,3Bh ; chdir + jnc chdirdone + int 21h +chdirdone: pop [word bx] @@end: ret diff -r 766a40e6c5e0 -r 8fab00f1f6be linld/stuff/src/CRTLX.H --- a/linld/stuff/src/CRTLX.H Fri Mar 31 10:37:54 2017 +0200 +++ b/linld/stuff/src/CRTLX.H Fri Mar 31 12:51:11 2017 +0200 @@ -7,8 +7,7 @@ extern "C" int strlen(const char* s); extern "C" char* strstr(const char* a,const char* b); extern "C" char *progname(void); -extern "C" int chdir(char *path); -extern "C" int chdirname(char *path); +extern "C" void chdirname(char *path); extern "C" unsigned long kver2ul(char *kernel_version); extern "C" char *ultoa(unsigned long n); extern "C" void try_default_args(); diff -r 766a40e6c5e0 -r 8fab00f1f6be linld/stuff/upx.sh --- a/linld/stuff/upx.sh Fri Mar 31 10:37:54 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -#!/bin/sh - -upx -5 $1 -o=$(($(stat -c %s $1) - 15)) -if dd bs=1 skip=$o if=$1 count=15 2> /dev/null | hd | \ - grep -iq "2c e8 3c 01 77 f9 c1 04 08 29 34 ad e2 f1 c3"; then - echo "0 3C E8 75 FB 37 91 D3 04 91 |" | hexdump -R | \ - dd bs=1 seek=$o of=$1 conv=notrunc 2> /dev/null -else - upx -d $1 > /dev/null 2>&1 - upx -5 --8086 $1 -fi diff -r 766a40e6c5e0 -r 8fab00f1f6be syslinux/stuff/iso2exe/upx.sh --- a/syslinux/stuff/iso2exe/upx.sh Fri Mar 31 10:37:54 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -#!/bin/sh - -upx -5 $1 -o=$(($(stat -c %s $1) - 15)) -if dd bs=1 skip=$o if=$1 count=15 2> /dev/null | hd | \ - grep -iq "2c e8 3c 01 77 f9 c1 04 08 29 34 ad e2 f1 c3"; then - echo "0 3C E8 75 FB 37 91 D3 04 91 |" | hexdump -R | \ - dd bs=1 seek=$o of=$1 conv=notrunc 2> /dev/null -else - upx -d $1 > /dev/null 2>&1 - upx -5 --8086 $1 -fi