Esempio n. 1
0
BOOL VersionInRange(LARGE_INTEGER lVersion, LPCTSTR lpszLowerVersion, LPCTSTR lpszUpperVersion )
{
	BOOL bResult = FALSE;
	if( _tcslen(lpszLowerVersion)>0 
		&& !(CompareVersion(lVersion, ParseVersion(lpszLowerVersion), _T(">="), bResult ) && bResult) )
		return FALSE;

	if( _tcslen(lpszUpperVersion)>0 
		&& !(CompareVersion( lVersion, ParseVersion(lpszUpperVersion), _T("<"), bResult ) && bResult) )
		return FALSE;
	return TRUE;
}
Esempio n. 2
0
void Updater::infoFinished()
{
    QNetworkReply *reply = ( QNetworkReply * )sender();
    if ( !reply->error() )
    {
        infoFile.write( reply->readAll() );
        infoFile.close();

        QSettings info( infoFile.fileName(), QSettings::IniFormat, this );

        QString ThisVersion = QMPlay2Core.getSettings().getString( "Version" );
        QString NewVersion  = info.value( "Version" ).toString();

        QDate NewVersionDate = ParseVersion( NewVersion );
        if ( NewVersionDate.isValid() )
        {
            if ( NewVersionDate > ParseVersion( ThisVersion ) )
            {
                QString FileURL;
#if defined Q_OS_WIN && defined QMPLAY2_CPU_X86
                if ( sizeof( void * ) == 8 )
                    FileURL = info.value( "Win64" ).toString();
                if ( FileURL.isEmpty() ) //32bit or 64bit does not exists on server
                    FileURL = info.value( "Win32" ).toString();
#elif defined Q_OS_LINUX && defined QMPLAY2_CPU_X86
                if ( sizeof( void * ) == 8 )
                    FileURL = info.value( "Linux64" ).toString();
                if ( FileURL.isEmpty() ) //32bit or 64bit does not exists on server
                    FileURL = info.value( "Linux32" ).toString();
#endif
                if ( FileURL.isEmpty() )
                    endWork( tr( "Brak dostępnej aktualizacji" ) );
                else if ( updateFile.open( QFile::WriteOnly | QFile::Truncate ) )
                    getFile( QUrl( FileURL.replace( "$Version", NewVersion ) ) );
                else
                    endWork( tr( "Błąd zapisu aktualizacji" ) );
            }
            else
                endWork( tr( "Program jest aktualny" ) );
        }
        else
            endWork( tr( "Błąd sprawdzania aktualizacji" ) );
    }
    else
        endWork( tr( "Błąd sprawdzania aktualizacji" ) );
    infoFile.remove();
    reply->deleteLater();
}
Esempio n. 3
0
void
nsHttpResponseHead::ParseStatusLine(const char *line)
{
    //
    // Parse Status-Line:: HTTP-Version SP Status-Code SP Reason-Phrase CRLF
    //

    // HTTP-Version
    ParseVersion(line);

    if ((mVersion == NS_HTTP_VERSION_0_9) || !(line = PL_strchr(line, ' '))) {
        mStatus = 200;
        AssignDefaultStatusText();
    }
    else {
        // Status-Code
        mStatus = (uint16_t) atoi(++line);
        if (mStatus == 0) {
            LOG(("mal-formed response status; assuming status = 200\n"));
            mStatus = 200;
        }

        // Reason-Phrase is whatever is remaining of the line
        if (!(line = PL_strchr(line, ' '))) {
            AssignDefaultStatusText();
        }
        else
            mStatusText = nsDependentCString(++line);
    }

    LOG(("Have status line [version=%u status=%u statusText=%s]\n",
        unsigned(mVersion), unsigned(mStatus), mStatusText.get()));
}
void
nsHttpResponseHead::ParseStatusLine(const char *line)
{
    //
    // Parse Status-Line:: HTTP-Version SP Status-Code SP Reason-Phrase CRLF
    //
 
    // HTTP-Version
    ParseVersion(line);
    
    if ((mVersion == NS_HTTP_VERSION_0_9) || !(line = PL_strchr(line, ' '))) {
        mStatus = 200;
        mStatusText.AssignLiteral("OK");
    }
    else {
        // Status-Code
        mStatus = (PRUint16) atoi(++line);
        if (mStatus == 0) {
            LOG(("mal-formed response status; assuming status = 200\n"));
            mStatus = 200;
        }

        // Reason-Phrase is whatever is remaining of the line
        if (!(line = PL_strchr(line, ' '))) {
            LOG(("mal-formed response status line; assuming statusText = 'OK'\n"));
            mStatusText.AssignLiteral("OK");
        }
        else
            mStatusText = ++line;
    }

    LOG(("Have status line [version=%u status=%u statusText=%s]\n",
        PRUintn(mVersion), PRUintn(mStatus), mStatusText.get()));
}
Esempio n. 5
0
BOOL CompareString( LPCTSTR lpLeft, LPCTSTR lpRight, LPCTSTR sOpt, BOOL& bResult ) 
{
	INT nRet = 0;
	if(IsVersionString(lpLeft) && IsVersionString(lpRight))
	{
		LARGE_INTEGER llLeft, llRight;
		llLeft = ParseVersion(lpLeft);
		llRight = ParseVersion(lpRight);
		
		nRet = CompareLargeInts(llLeft, llRight);
	}
	else
	{
		nRet = _tcsicmp(lpLeft, lpRight);
	}
	
	return EvalCompareResult(nRet, sOpt, bResult);
}
Esempio n. 6
0
int KDownloadUpdatePackage::DownloadPacks(
								  IDownloaderNotification* pNotify, 
								  const TCHAR cpszRemotePath[], 
								  const TCHAR cpszUpdatePath[], 
								  const TCHAR cpszClientVersion[], 
								  const TCHAR cpszCurrentVersion[]
)
{
	int nRetCode = false;
	int nResult  = false;
	int nStrLen  = false;

	KGLOG_PROCESS_ERROR(pNotify);
	KGLOG_PROCESS_ERROR(cpszRemotePath);
	KGLOG_PROCESS_ERROR(cpszUpdatePath);
	KGLOG_PROCESS_ERROR(cpszClientVersion);
	KGLOG_PROCESS_ERROR(cpszCurrentVersion);

	m_pNotify = pNotify;

	nStrLen = (int)_tcslen(cpszRemotePath);
	_tcsncpy(m_szRemotePath, cpszRemotePath, nStrLen + 1);
	m_szRemotePath[nStrLen] = _T('\0');

	nStrLen = (int)_tcslen(cpszUpdatePath);
	_tcsncpy(m_szUpdatePath, cpszUpdatePath, nStrLen + 1);
	m_szUpdatePath[nStrLen] = _T('\0');

	nStrLen = (int)_tcslen(cpszClientVersion);
	_tcsncpy(m_szClientLang, cpszClientVersion, nStrLen + 1);
	m_szClientLang[nStrLen] = _T('\0');

	nStrLen = (int)_tcslen(cpszCurrentVersion);
	_tcsncpy(m_szCurrentVersion, cpszCurrentVersion, nStrLen + 1);
	m_szCurrentVersion[nStrLen] = _T('\0');

	if (!m_nDownloadVersionFlag)
	{
		nRetCode = DownLoadVersion();
		KGLOG_PROCESS_ERROR(nRetCode);
	}	

	nRetCode = ParseVersion();
	KGLOG_PROCESS_ERROR(nRetCode);

	nRetCode = DownloadUpdatePackage();
	KGLOG_PROCESS_ERROR(nRetCode);	

	nResult = true;
Exit0:
	return nResult;
}
Esempio n. 7
0
bool HttpRequest::ParseStartLine(const StringPiece& data, HttpMessage::ErrorCode* error) {
    ErrorCode error_placeholder;
    if (error == NULL)
        error = &error_placeholder;

    static const size_t kMinHttpMethodLength = 3;
    size_t pos = data.find(' ', kMinHttpMethodLength);
    if (pos == StringPiece::npos) {
        *error = ERROR_START_LINE_NOT_COMPLETE;
        return false;
    }

    StringPiece method = data.substr(0, pos);
    StringTrim(&method);
    m_method = GetMethodByName(method);
    if (m_method == METHOD_UNKNOWN) {
        *error = ERROR_METHOD_NOT_FOUND;
        return false;
    }

    size_t prev_pos = pos + 1;
    pos = data.find(' ', prev_pos);
    StringPiece uri;
    if (pos == StringPiece::npos) {
        uri = data.substr(prev_pos);
    } else {
        uri = data.substr(prev_pos, pos - prev_pos);
    }
    StringTrim(&uri);
    uri.copy_to_string(&m_uri);

    if (pos != StringPiece::npos) {
        StringPiece version = data.substr(pos);
        StringTrim(&version);
        if (!ParseVersion(version)) {
            *error = ERROR_VERSION_UNSUPPORTED;
            return false;
        }
    }

    return true;
}
Esempio n. 8
0
Update_Status UpdateChecker::IsUpdateAvailable(const Version& currentVersion)
{
    Update_Status updateAvailable = UPDATER_LATEST_STABLE;

    try {
        CInternetSession internet;

        OSVERSIONINFOEX osVersion = SysVersion::GetFullVersion();
        CString osVersionStr;
        osVersionStr.Format(_T("Windows %1u.%1u"), osVersion.dwMajorVersion, osVersion.dwMinorVersion);
        if (SysVersion::Is64Bit()) {
            osVersionStr += _T(" x64");
        }

        CString headersFmt = _T("User-Agent: MPC-HC");
        if (VersionInfo::Is64Bit()) {
            headersFmt += _T(" (64-bit)");
        }
#ifdef MPCHC_LITE
        headersFmt += _T(" Lite");
#endif
        headersFmt += _T(" (%s)/");
        headersFmt += VersionInfo::GetFullVersionString();
        headersFmt += _T("\r\n");

        CString headers;
        headers.Format(headersFmt, osVersionStr);

        CHttpFile* versionFile = (CHttpFile*) internet.OpenURL(versionFileURL,
                                                               1,
                                                               INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_RELOAD,
                                                               headers,
                                                               DWORD(-1));

        if (versionFile) {
            CString latestVersionStr;
            char buffer[101];
            UINT br = 0;

            while ((br = versionFile->Read(buffer, 50)) > 0) {
                buffer[br] = '\0';
                latestVersionStr += buffer;
            }

            if (!ParseVersion(latestVersionStr, latestVersion)) {
                updateAvailable = UPDATER_ERROR;
            } else {
                time_t lastCheck = time(nullptr);
                AfxGetApp()->WriteProfileBinary(IDS_R_SETTINGS, IDS_RS_UPDATER_LAST_CHECK, (LPBYTE)&lastCheck, sizeof(time_t));

                int comp = CompareVersion(currentVersion, latestVersion);

                if (comp < 0) {
                    CString ignoredVersionStr = AfxGetApp()->GetProfileString(IDS_R_SETTINGS, IDS_RS_UPDATER_IGNORE_VERSION, _T("0.0.0.0"));
                    Version ignoredVersion;
                    bool ignored = false;

                    if (ParseVersion(ignoredVersionStr, ignoredVersion)) {
                        ignored = (CompareVersion(ignoredVersion, latestVersion) >= 0);
                    }

                    updateAvailable = ignored ? UPDATER_UPDATE_AVAILABLE_IGNORED : UPDATER_UPDATE_AVAILABLE;
                } else if (comp > 0) {
                    updateAvailable = UPDATER_NEWER_VERSION;
                }
            }

            versionFile->Close(); // Close() isn't called by the destructor
            delete versionFile;
        } else {
            updateAvailable = UPDATER_ERROR;
        }
    } catch (CInternetException* pEx) {
        updateAvailable = UPDATER_ERROR;
        pEx->Delete();
    }

    return updateAvailable;
}
Esempio n. 9
0
inline bool IsFirstNewer(const std::string& v1, const std::string& v2, bool check_prerelease)
{
    return IsFirstNewer(ParseVersion(v1), ParseVersion(v2), check_prerelease);
}
Esempio n. 10
0
int main(int argc, char* argv[])
{
  if (argc > 1 && (IsArg(argv[1], "h") ||
                   IsArg(argv[1], "help") ||
                   IsArg(argv[1], "?")))
  {
    Usage();
    return 0;
  }

  if (argc == 2 && (IsArg(argv[1], "v") || IsArg(argv[1], "version")))
  {
    Output(PR_FALSE, "Mozilla XULRunner %s\n", GRE_BUILD_ID);
    return 0;
  }

  if (argc > 1) {
    PRBool registerGlobal = IsArg(argv[1], "register-global");
    PRBool registerUser   = IsArg(argv[1], "register-user");
    if (registerGlobal || registerUser) {
      if (argc != 2) {
        Usage();
        return 1;
      }

      nsCOMPtr<nsIFile> regDir;
      nsresult rv = GetXULRunnerDir(argv[0], getter_AddRefs(regDir));
      if (NS_FAILED(rv))
        return 2;

      return RegisterXULRunner(registerGlobal, regDir,
                               kGREProperties,
                               NS_ARRAY_LENGTH(kGREProperties)) ? 0 : 2;
    }

    registerGlobal = IsArg(argv[1], "unregister-global");
    registerUser   = IsArg(argv[1], "unregister-user");
    if (registerGlobal || registerUser) {
      if (argc != 2) {
        Usage();
        return 1;
      }

      nsCOMPtr<nsIFile> regDir;
      nsresult rv = GetXULRunnerDir(argv[0], getter_AddRefs(regDir));
      if (NS_FAILED(rv))
        return 2;
      UnregisterXULRunner(registerGlobal, regDir);
      return 0;
    }

    if (IsArg(argv[1], "find-gre")) {
      if (argc != 3) {
        Usage();
        return 1;
      }

      char path[MAXPATHLEN];
      static const GREVersionRange vr = {
        argv[2], PR_TRUE,
        argv[2], PR_TRUE
      };
      static const GREProperty kProperties[] = {
        { "xulrunner", "true" }
      };

      nsresult rv = GRE_GetGREPathWithProperties(&vr, 1, kProperties,
                                                 NS_ARRAY_LENGTH(kProperties),
                                                 path, sizeof(path));
      if (NS_FAILED(rv))
        return 1;

      printf("%s\n", path);
      return 0;
    }

    if (IsArg(argv[1], "gre-version")) {
      if (argc != 2) {
        Usage();
        return 1;
      }

      printf("%s\n", GRE_BUILD_ID);
      return 0;
    }

    if (IsArg(argv[1], "install-app")) {
      if (argc < 3 || argc > 5) {
        Usage();
        return 1;
      }

      char *appLocation = argv[2];

      char *installTo = nsnull;
      if (argc > 3) {
        installTo = argv[3];
        if (!*installTo) // left blank?
          installTo = nsnull;
      }

      char *leafName = nsnull;
      if (argc > 4) {
        leafName = argv[4];
        if (!*leafName)
          leafName = nsnull;
      }

      nsCOMPtr<nsIFile> regDir;
      nsresult rv = GetXULRunnerDir(argv[0], getter_AddRefs(regDir));
      if (NS_FAILED(rv))
        return 2;

      return InstallXULApp(regDir, appLocation, installTo, leafName);
    }
  }

  geckoVersion = ParseVersion(GRE_BUILD_ID);

  const char *appDataFile = PR_GetEnv("XUL_APP_FILE");

  if (!(appDataFile && *appDataFile)) {
    if (argc < 2) {
      Usage();
      return 1;
    }

    if (IsArg(argv[1], "app")) {
      if (argc == 2) {
        Usage();
        return 1;
      }
      argv[1] = argv[0];
      ++argv;
      --argc;
    }

    appDataFile = argv[1];
    argv[1] = argv[0];
    ++argv;
    --argc;

    static char kAppEnv[MAXPATHLEN];
    PR_snprintf(kAppEnv, MAXPATHLEN, "XUL_APP_FILE=%s", appDataFile);
    PR_SetEnv(kAppEnv);
  }

  nsCAutoString vendor, name, version, buildID, appID, copyright;

  nsXREAppData appData = { sizeof(nsXREAppData), 0 };

  int rv = LoadAppData(appDataFile, &appData,
                       vendor, name, version, buildID, appID, copyright);
  if (!rv)
    rv = XRE_main(argc, argv, &appData);

  NS_IF_RELEASE(appData.directory);

  return rv;
}
Esempio n. 11
0
static PRBool CheckMaxVersion(const char *versionStr)
{
  PRUint32 v = ParseVersion(versionStr);
  return geckoVersion <= v;
}