Skip to content

Conversation

@basxto
Copy link

@basxto basxto commented Dec 20, 2025

I added CVS files, extracted the directory and file names from them. They are included in TFT and most demos, but not all demos.

All W3Demos which I have are now 100%, including the one you likely used.

The TFT which I tested only has one file missing, but it’s not the one you used. The amount of files differs and it’s not the correct version. Please retest if you still have them around.

This adds the new folder English\SetupDat\, but it looks like that is also in the German version. Some other localizations might have a different folder.

SetupDat\DirectX End User EULA.txt is impossible to guess, but it was in the CVS data.

@basxto
Copy link
Author

basxto commented Dec 20, 2025

Initially AI generated scripts, which I used:

#!/bin/bash
#lst2listfilefix.sh
if [ "$#" -ne 2 ]; then
    echo "Usage: $0 <*.lst> <listfile.txt>"
    exit 1
fi

lst_file="$1"
listfile="$2"

while IFS= read -r line; do
    filename=$(echo "${line//\\/\\\\}" | tr -d '"' | tr -d '\r')
    cmd="s/${filename}/${filename}/ig"
    echo "${cmd}"
    sed -i "$cmd" "${listfile}"
done < "$lst_file"
#!/bin/bash
#cvs2listfile.sh

> listfile.txt
stack=("")
while [ ${#stack[@]} -gt 0 ]; do
    d="${stack[0]}"
    stack=("${stack[@]:1}")
    if [ -z "$d" ]; then
        cvsdir="CVS"
    else
        cvsdir="$d/CVS"
    fi
    if [ ! -d "$cvsdir" ]; then
        continue
    fi
    for admin_file in Entries{,.Log,.Backup,.Static} Root Repository Tag Notify{,.tmp} Base Baserev{,.tmp} Template; do
        path="$cvsdir/$admin_file"
        winpath=$(echo "$path" | tr '/' '\\')
        echo "$winpath" >> listfile.txt
    done
    entries_file="$cvsdir/Entries"
    if [ ! -f "$entries_file" ]; then
        continue
    fi
    declare -a subdirs=()
    while IFS= read -r line; do
        [ -z "$line" ] && continue
        [ "$line" = "D" ] && continue
        if [[ "$line" == /* ]]; then
            filename=$(echo "$line" | awk -F/ '{print $2}')
            [ -z "$filename" ] && continue
            full_path=$( [ -z "$d" ] && echo "$filename" || echo "$d/$filename" )
            winpath=$(echo "$full_path" | tr '/' '\\')
            echo "$winpath" >> listfile.txt
        elif [[ "$line" == D/* ]]; then
            dirname=$(echo "$line" | awk -F/ '{print $2}')
            [ -z "$dirname" ] && continue
            new_d=$( [ -z "$d" ] && echo "$dirname" || echo "$d/$dirname" )
            subdirs+=("$new_d")
        fi
    done < "$entries_file"
    if [ -z "$d" ]; then
        search_path="."
    else
        search_path="$d"
    fi
    actual_dirs=""
    for item in "$search_path"/*/; do
        if [ -d "$item" ]; then
            actual_dir=$(echo "$item" | sed 's/\/$//' | sed 's/^\.\///')
            if [ -n "$actual_dir" ]; then
                actual_dirs="$actual_dirs $actual_dir"
            fi
        fi
    done
    for actual_dir in $actual_dirs; do
        subdirs+=("$actual_dir")
    done
    declare -A seen
    declare -a unique_subdirs=()
    for dir in "${subdirs[@]}"; do
        if [[ -z "${seen[$dir]}" ]]; then
            unique_subdirs+=("$dir")
            seen[$dir]=1
        fi
    done
    subdirs=("${unique_subdirs[@]}")
    for ((i=${#subdirs[@]}-1; i>=0; i--)); do
        stack=("${subdirs[i]}" "${stack[@]}")
    done
done

The Unify* commits were made with custom .lst files to reuse the script for a quick replace all:

"SetupDat\"
"Images\"
"Font\"
"Audio\"
"Files100\"
"Files100\support\"
"Files100\support\BattleNet\"
"Files100\support\Images\"
"Files100\support\Layout\"
"Files100\support\ReadMe\"
"Files100\support\Support\"
"AI Scripts\"
"Campaigns\"
"Campaign\"
"Movies\
"Maps\"

"War3.mpq"
"War3Patch.mpq"
"War3x.mpq"
"War3xlocal.mpq"
"WorldEdit.exe"
"World Editor.exe"
"War3Demo.exe"
"Warcraft III Demo.exe"
"War3.exe"
"Warcraft III.exe"
"Frozen Throne.exe"
"Storm.dll"
"Game.dll"
"ijl15.dll"
"Mss32.dll"
"Mssfast.m3d"
"Msseax2.m3d"
"Mssdolby.m3d"
"Mp3dec.asi"
"Reverb3.flt"
"BNUpdate.exe"
"Blizzard.dll"
"UndeadEd.mpq"
"TutorialOp.mpq"
"TutorialIn.mpq"
"OutroX.mpq"
"OrcEd.mpq"
"NightElfEd.mpq"
"IntroX.mpq"
"HumanOp.mpq"
"HumanEd.mpq"
"Demo0"
"democampaign"
"War3Unin"
"W3DemoUnin"
"apMap"
"apMisc"
"apExtra"
"apPreview"
"apSkin"
"apUnits"
"apImported"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant