function downloadFile($url, $installFile, $archivedFile)
{
    global $ch;
    $tmpFile = $installFile . '.tmp';
    if (!file_exists($archivedFile) || filesize($archivedFile) == 0) {
        if (file_exists($installFile)) {
            unlink($installFile);
        }
        if (file_exists($tmpFile)) {
            unlink($tmpFile);
        }
        kdebug('About to download ' . $url . ', to ' . $archivedFile);
        if ($curlErrno = curl_errno($ch)) {
            kdebug('curl_errno() returns ' . $curlErrno . ', re-initializing');
            $ch = curl_init();
        }
        $fp = fopen($tmpFile, "w");
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        //  		curl_close($ch);
        fclose($fp);
        rename($tmpFile, $archivedFile);
    }
    if (file_exists($installFile)) {
        unlink($installFile);
    }
    link($archivedFile, $installFile);
    //kdebug('link(' . $archivedFile . ', ' . $installFile . ')');
}
function downloadFile($url, $installFile, $archivedFile)
{
    $tmpFile = $installFile . '.tmp';
    if (!file_exists($archivedFile) || filesize($archivedFile) == 0) {
        if (file_exists($installFile)) {
            unlink($archivedFile);
        }
        if (file_exists($tmpFile)) {
            unlink($tmpFile);
        }
        $ch = curl_init($url);
        $fp = fopen($tmpFile, "w");
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
        rename($tmpFile, $archivedFile);
    }
    if (file_exists($installFile)) {
        unlink($installFile);
    }
    link($archivedFile, $installFile);
    kdebug('link(' . $archivedFile . ', ' . $installFile . ')');
}