int CheckIfGuidance(char *line,int isLabel) { int i; char *word; i = isLabel ? isLabel + 2 : 0; /* Ignore spaces */ while(isspace(line[i])) i++; if (line[i++]=='.') { word=GetWord(&line[i],' '); if(strcmp(word,"extern")==0) { /* Step over .extern word in line */ i+=7; /* Ignore spaces */ while(isspace(line[i])) i++; HandleExtern(&line[i]); return 1; } else if(strcmp(word,"entry")==0) { i+=6; while(isspace(line[i])) i++; HandleEntry(&line[i],&constInstructionArr[MAX_INSTRUCTION-1]); return 1; } else { printf("Error! in Line %d :%s , illegal command \n", countLine, line); SeconnedPhaseSucess=0; } } else { return 0; } return 0; }
void PackageProcessor::handlePackageUnarchFinished (int ret, QProcess::ExitStatus) { sender ()->deleteLater (); QProcess *unarch = qobject_cast<QProcess*> (sender ()); int packageId = unarch->property ("PackageID").toInt (); const auto& stagingDir = unarch->property ("StagingDirectory").toString (); Mode mode = static_cast<Mode> (unarch->property ("Mode").toInt ()); auto cleanupGuard = std::shared_ptr<void> (nullptr, [&stagingDir, this] (void*) { CleanupDir (stagingDir); }); if (ret) { QString errString = QString::fromUtf8 (unarch->readAllStandardError ()); qWarning () << Q_FUNC_INFO << "unpacker exited with" << ret << errString << "for" << packageId << unarch->property ("Path").toString (); QString errorString = tr ("Unable to unpack package archive, unpacker exited with %1: %2.") .arg (ret) .arg (errString); emit packageInstallError (packageId, errorString); return; } int oldId = -1; if (mode == MUpdate) { oldId = Core::Instance ().GetStorage ()->FindInstalledPackage (packageId); if (!CleanupBeforeUpdate (oldId, packageId)) { qWarning () << Q_FUNC_INFO << "unable to cleanup"; return; } } QDir packageDir; try { packageDir = Core::Instance ().GetPackageDir (packageId); } catch (const std::exception& e) { qWarning () << Q_FUNC_INFO << "while trying to get dir for package" << packageId << "got we exception" << e.what (); QString errorString = tr ("Unable to get directory for the package: %1.") .arg (QString::fromUtf8 (e.what ())); emit packageInstallError (packageId, errorString); return; } QDirIterator dirIt (stagingDir, QDir::NoDotAndDotDot | QDir::Readable | QDir::NoSymLinks | QDir::Dirs | QDir::Files, QDirIterator::Subdirectories); while (dirIt.hasNext ()) { dirIt.next (); QFileInfo fi = dirIt.fileInfo (); if (fi.isDir () || fi.isFile ()) if (!HandleEntry (packageId, fi, stagingDir, packageDir)) { try { Remove (packageId); } catch (const std::exception& e) { qWarning () << Q_FUNC_INFO << "while removing partially installed package" << packageId << "got:" << e.what (); } QString errorString = tr ("Unable to copy " "files from staging area to " "destination directory."); emit packageInstallError (packageId, errorString); return; } } switch (mode) { case MInstall: emit packageInstalled (packageId); break; case MUpdate: emit packageUpdated (oldId, packageId); break; } }