style(3p/nix): Enforce braces around loops and conditionals
This change was generated with:
  fd -e cc -e hh | xargs -I{} clang-tidy {} -p ~/projects/nix-build/ \
    --checks='-*,readability-braces-around-statements' --fix \
    -fix-errors
Some manual fixes were applied because some convoluted unbraced
statements couldn't be untangled by clang-tidy.
This commit still includes invalid files, but I decided to clean them
up in a subsequent commit so that it becomes more obvious where
clang-tidy failed. Maybe this will allow for a bug-report to
clang-tidy.
			
			
This commit is contained in:
		
							parent
							
								
									c758de9d22
								
							
						
					
					
						commit
						b490742a51
					
				
					 44 changed files with 661 additions and 298 deletions
				
			
		
							
								
								
									
										58
									
								
								third_party/nix/src/libstore/build.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								third_party/nix/src/libstore/build.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -350,12 +350,17 @@ void Goal::waiteeDone(GoalPtr waitee, ExitCode result) { | |||
|   trace(format("waitee '%1%' done; %2% left") % waitee->name % waitees.size()); | ||||
| 
 | ||||
|   if (result == ecFailed || result == ecNoSubstituters || | ||||
|       result == ecIncompleteClosure) | ||||
|       result == ecIncompleteClosure) { | ||||
|     ++nrFailed; | ||||
|   } | ||||
| 
 | ||||
|   if (result == ecNoSubstituters) ++nrNoSubstituters; | ||||
|   if (result == ecNoSubstituters) { | ||||
|     ++nrNoSubstituters; | ||||
|   } | ||||
| 
 | ||||
|   if (result == ecIncompleteClosure) ++nrIncompleteClosure; | ||||
|   if (result == ecIncompleteClosure) { | ||||
|     ++nrIncompleteClosure; | ||||
|   } | ||||
| 
 | ||||
|   if (waitees.empty() || (result == ecFailed && !settings.keepGoing)) { | ||||
|     /* If we failed and keepGoing is not set, we remove all
 | ||||
|  | @ -1147,7 +1152,9 @@ void DerivationGoal::outputsSubstituted() { | |||
|   /*  If the substitutes form an incomplete closure, then we should
 | ||||
|       build the dependencies of this derivation, but after that, we | ||||
|       can still use the substitutes for this derivation itself. */ | ||||
|   if (nrIncompleteClosure > 0) retrySubstitution = true; | ||||
|   if (nrIncompleteClosure > 0) { | ||||
|     retrySubstitution = true; | ||||
|   } | ||||
| 
 | ||||
|   nrFailed = nrNoSubstituters = nrIncompleteClosure = 0; | ||||
| 
 | ||||
|  | @ -1659,7 +1666,9 @@ MakeError(NotDeterministic, BuildError) | |||
| } | ||||
| 
 | ||||
| HookReply DerivationGoal::tryBuildHook() { | ||||
|   if (!worker.tryBuildHook || !useDerivation) return rpDecline; | ||||
|   if (!worker.tryBuildHook || !useDerivation) { | ||||
|     return rpDecline; | ||||
|   } | ||||
| 
 | ||||
|   if (!worker.hook) worker.hook = std::make_unique<HookInstance>(); | ||||
| 
 | ||||
|  | @ -2231,7 +2240,9 @@ void DerivationGoal::startBuilder() { | |||
|        us. | ||||
|     */ | ||||
| 
 | ||||
|     if (!fixedOutput) privateNetwork = true; | ||||
|     if (!fixedOutput) { | ||||
|       privateNetwork = true; | ||||
|     } | ||||
| 
 | ||||
|     userNamespaceSync.create(); | ||||
| 
 | ||||
|  | @ -3117,7 +3128,9 @@ void DerivationGoal::registerOutputs() { | |||
|     bool allValid = true; | ||||
|     for (auto& i : drv->outputs) | ||||
|       if (!worker.store.isValidPath(i.second.path)) allValid = false; | ||||
|     if (allValid) return; | ||||
|     if (allValid) { | ||||
|       return; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   std::map<std::string, ValidPathInfo> infos; | ||||
|  | @ -3345,7 +3358,9 @@ void DerivationGoal::registerOutputs() { | |||
|     infos[i.first] = info; | ||||
|   } | ||||
| 
 | ||||
|   if (buildMode == bmCheck) return; | ||||
|   if (buildMode == bmCheck) { | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   /* Apply output checks. */ | ||||
|   checkOutputs(infos); | ||||
|  | @ -4095,9 +4110,10 @@ GoalPtr Worker::makeDerivationGoal(const Path& path, | |||
|         std::make_shared<DerivationGoal>(path, wantedOutputs, *this, buildMode); | ||||
|     derivationGoals[path] = goal; | ||||
|     wakeUp(goal); | ||||
|   } else | ||||
|   } else { | ||||
|     (dynamic_cast<DerivationGoal*>(goal.get())) | ||||
|         ->addWantedOutputs(wantedOutputs); | ||||
|   } | ||||
|   return goal; | ||||
| } | ||||
| 
 | ||||
|  | @ -4167,7 +4183,9 @@ void Worker::childStarted(GoalPtr goal, const set<int>& fds, bool inBuildSlot, | |||
|   child.inBuildSlot = inBuildSlot; | ||||
|   child.respectTimeouts = respectTimeouts; | ||||
|   children.emplace_back(child); | ||||
|   if (inBuildSlot) nrLocalBuilds++; | ||||
|   if (inBuildSlot) { | ||||
|     nrLocalBuilds++; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void Worker::childTerminated(Goal* goal, bool wakeSleepers) { | ||||
|  | @ -4413,14 +4431,22 @@ unsigned int Worker::exitStatus() { | |||
|    */ | ||||
|   unsigned int mask = 0; | ||||
|   bool buildFailure = permanentFailure || timedOut || hashMismatch; | ||||
|   if (buildFailure) mask |= 0x04;  // 100
 | ||||
|   if (timedOut) mask |= 0x01;      // 101
 | ||||
|   if (hashMismatch) mask |= 0x02;  // 102
 | ||||
|   if (buildFailure) { | ||||
|     mask |= 0x04;  // 100
 | ||||
|   } | ||||
|   if (timedOut) { | ||||
|     mask |= 0x01;  // 101
 | ||||
|   } | ||||
|   if (hashMismatch) { | ||||
|     mask |= 0x02;  // 102
 | ||||
|   } | ||||
|   if (checkMismatch) { | ||||
|     mask |= 0x08;  // 104
 | ||||
|   } | ||||
| 
 | ||||
|   if (mask) mask |= 0x60; | ||||
|   if (mask) { | ||||
|     mask |= 0x60; | ||||
|   } | ||||
|   return mask ? mask : 1; | ||||
| } | ||||
| 
 | ||||
|  | @ -4430,9 +4456,9 @@ bool Worker::pathContentsGood(const Path& path) { | |||
|   LOG(INFO) << "checking path '" << path << "'..."; | ||||
|   auto info = store.queryPathInfo(path); | ||||
|   bool res; | ||||
|   if (!pathExists(path)) | ||||
|   if (!pathExists(path)) { | ||||
|     res = false; | ||||
|   else { | ||||
|   } else { | ||||
|     HashResult current = hashPath(info->narHash.type, path); | ||||
|     Hash nullHash(htSHA256); | ||||
|     res = info->narHash == nullHash || info->narHash == current.first; | ||||
|  |  | |||
							
								
								
									
										19
									
								
								third_party/nix/src/libstore/derivations.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								third_party/nix/src/libstore/derivations.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -185,19 +185,21 @@ Derivation Store::derivationFromPath(const Path& drvPath) { | |||
| 
 | ||||
| static void printString(string& res, const string& s) { | ||||
|   res += '"'; | ||||
|   for (const char* i = s.c_str(); *i; i++) | ||||
|   for (const char* i = s.c_str(); *i; i++) { | ||||
|     if (*i == '\"' || *i == '\\') { | ||||
|       res += "\\"; | ||||
|       res += *i; | ||||
|     } else if (*i == '\n') | ||||
|     } else if (*i == '\n') { | ||||
|       res += "\\n"; | ||||
|     else if (*i == '\r') | ||||
|     } else if (*i == '\r') { | ||||
|       res += "\\r"; | ||||
|     else if (*i == '\t') | ||||
|     } else if (*i == '\t') { | ||||
|       res += "\\t"; | ||||
|     else | ||||
|     } else { | ||||
|       res += *i; | ||||
|   res += '"'; | ||||
|     } | ||||
|     res += '"'; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| template <class ForwardIterator> | ||||
|  | @ -205,10 +207,11 @@ static void printStrings(string& res, ForwardIterator i, ForwardIterator j) { | |||
|   res += '['; | ||||
|   bool first = true; | ||||
|   for (; i != j; ++i) { | ||||
|     if (first) | ||||
|     if (first) { | ||||
|       first = false; | ||||
|     else | ||||
|     } else { | ||||
|       res += ','; | ||||
|     } | ||||
|     printString(res, *i); | ||||
|   } | ||||
|   res += ']'; | ||||
|  |  | |||
							
								
								
									
										19
									
								
								third_party/nix/src/libstore/download.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								third_party/nix/src/libstore/download.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -108,10 +108,14 @@ struct CurlDownloader : public Downloader { | |||
| 
 | ||||
|     ~DownloadItem() { | ||||
|       if (req) { | ||||
|         if (active) curl_multi_remove_handle(downloader.curlm, req); | ||||
|         if (active) { | ||||
|           curl_multi_remove_handle(downloader.curlm, req); | ||||
|         } | ||||
|         curl_easy_cleanup(req); | ||||
|       } | ||||
|       if (requestHeaders) curl_slist_free_all(requestHeaders); | ||||
|       if (requestHeaders) { | ||||
|         curl_slist_free_all(requestHeaders); | ||||
|       } | ||||
|       try { | ||||
|         if (!done) | ||||
|           fail(DownloadError( | ||||
|  | @ -242,7 +246,9 @@ struct CurlDownloader : public Downloader { | |||
|     } | ||||
| 
 | ||||
|     void init() { | ||||
|       if (!req) req = curl_easy_init(); | ||||
|       if (!req) { | ||||
|         req = curl_easy_init(); | ||||
|       } | ||||
| 
 | ||||
|       curl_easy_reset(req); | ||||
| 
 | ||||
|  | @ -316,8 +322,9 @@ struct CurlDownloader : public Downloader { | |||
|                        settings.netrcFile.get().c_str()); | ||||
|       curl_easy_setopt(req, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); | ||||
| 
 | ||||
|       if (writtenToSink) | ||||
|       if (writtenToSink) { | ||||
|         curl_easy_setopt(req, CURLOPT_RESUME_FROM_LARGE, writtenToSink); | ||||
|       } | ||||
| 
 | ||||
|       result.data = std::make_shared<std::string>(); | ||||
|       result.bodySize = 0; | ||||
|  | @ -505,7 +512,9 @@ struct CurlDownloader : public Downloader { | |||
| 
 | ||||
|     workerThread.join(); | ||||
| 
 | ||||
|     if (curlm) curl_multi_cleanup(curlm); | ||||
|     if (curlm) { | ||||
|       curl_multi_cleanup(curlm); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   void stopWorkerThread() { | ||||
|  |  | |||
							
								
								
									
										12
									
								
								third_party/nix/src/libstore/gc.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								third_party/nix/src/libstore/gc.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -630,7 +630,9 @@ void LocalStore::tryToDelete(GCState& state, const Path& path) { | |||
|        ‘nix-store --delete’ doesn't have the unexpected effect of | ||||
|        recursing into derivations and outputs. */ | ||||
|     state.dead.insert(visited.begin(), visited.end()); | ||||
|     if (state.shouldDelete) deletePathRecursive(state, path); | ||||
|     if (state.shouldDelete) { | ||||
|       deletePathRecursive(state, path); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | @ -704,7 +706,9 @@ void LocalStore::collectGarbage(const GCOptions& options, GCResults& results) { | |||
|   state.shouldDelete = options.action == GCOptions::gcDeleteDead || | ||||
|                        options.action == GCOptions::gcDeleteSpecific; | ||||
| 
 | ||||
|   if (state.shouldDelete) deletePath(reservedPath); | ||||
|   if (state.shouldDelete) { | ||||
|     deletePath(reservedPath); | ||||
|   } | ||||
| 
 | ||||
|   /* Acquire the global GC root.  This prevents
 | ||||
|      a) New roots from being added. | ||||
|  | @ -737,7 +741,9 @@ void LocalStore::collectGarbage(const GCOptions& options, GCResults& results) { | |||
|      that is not reachable from `roots' is garbage. */ | ||||
| 
 | ||||
|   if (state.shouldDelete) { | ||||
|     if (pathExists(trashDir)) deleteGarbage(state, trashDir); | ||||
|     if (pathExists(trashDir)) { | ||||
|       deleteGarbage(state, trashDir); | ||||
|     } | ||||
|     try { | ||||
|       createDirs(trashDir); | ||||
|     } catch (SysError& e) { | ||||
|  |  | |||
|  | @ -77,8 +77,9 @@ class HttpBinaryCacheStore : public BinaryCacheStore { | |||
|     } catch (DownloadError& e) { | ||||
|       /* S3 buckets return 403 if a file doesn't exist and the
 | ||||
|          bucket is unlistable, so treat 403 as 404. */ | ||||
|       if (e.error == Downloader::NotFound || e.error == Downloader::Forbidden) | ||||
|       if (e.error == Downloader::NotFound || e.error == Downloader::Forbidden) { | ||||
|         return false; | ||||
|       } | ||||
|       maybeDisable(); | ||||
|       throw; | ||||
|     } | ||||
|  |  | |||
|  | @ -96,10 +96,10 @@ std::shared_ptr<std::string> LocalFSStore::getBuildLog(const Path& path_) { | |||
|                           : fmt("%s/%s/%s", logDir, drvsLogDir, baseName); | ||||
|     Path logBz2Path = logPath + ".bz2"; | ||||
| 
 | ||||
|     if (pathExists(logPath)) | ||||
|     if (pathExists(logPath)) { | ||||
|       return std::make_shared<std::string>(readFile(logPath)); | ||||
| 
 | ||||
|     else if (pathExists(logBz2Path)) { | ||||
|     } else if (pathExists(logBz2Path)) { | ||||
|       try { | ||||
|         return decompress("bzip2", readFile(logBz2Path)); | ||||
|       } catch (Error&) { | ||||
|  |  | |||
							
								
								
									
										35
									
								
								third_party/nix/src/libstore/local-store.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								third_party/nix/src/libstore/local-store.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -157,19 +157,17 @@ LocalStore::LocalStore(const Params& params) | |||
|   /* Check the current database schema and if necessary do an
 | ||||
|      upgrade.  */ | ||||
|   int curSchema = getSchema(); | ||||
|   if (curSchema > nixSchemaVersion) | ||||
|   if (curSchema > nixSchemaVersion) { | ||||
|     throw Error( | ||||
|         format( | ||||
|             "current Nix store schema is version %1%, but I only support %2%") % | ||||
|         curSchema % nixSchemaVersion); | ||||
| 
 | ||||
|   else if (curSchema == 0) { /* new store */ | ||||
|   } else if (curSchema == 0) { /* new store */ | ||||
|     curSchema = nixSchemaVersion; | ||||
|     openDB(*state, true); | ||||
|     writeFile(schemaPath, (format("%1%") % nixSchemaVersion).str()); | ||||
|   } | ||||
| 
 | ||||
|   else if (curSchema < nixSchemaVersion) { | ||||
|   } else if (curSchema < nixSchemaVersion) { | ||||
|     if (curSchema < 5) | ||||
|       throw Error( | ||||
|           "Your Nix store has a database in Berkeley DB format,\n" | ||||
|  | @ -219,10 +217,9 @@ LocalStore::LocalStore(const Params& params) | |||
|     writeFile(schemaPath, (format("%1%") % nixSchemaVersion).str()); | ||||
| 
 | ||||
|     lockFile(globalLock.get(), ltRead, true); | ||||
|   } | ||||
| 
 | ||||
|   else | ||||
|   } else { | ||||
|     openDB(*state, false); | ||||
|   } | ||||
| 
 | ||||
|   /* Prepare SQL statements. */ | ||||
|   state->stmtRegisterValidPath.create( | ||||
|  | @ -325,8 +322,9 @@ void LocalStore::openDB(State& state, bool create) { | |||
|   SetDllDirectoryW(L""); | ||||
| #endif | ||||
| 
 | ||||
|   if (sqlite3_busy_timeout(db, 60 * 60 * 1000) != SQLITE_OK) | ||||
|   if (sqlite3_busy_timeout(db, 60 * 60 * 1000) != SQLITE_OK) { | ||||
|     throwSQLiteError(db, "setting timeout"); | ||||
|   } | ||||
| 
 | ||||
|   db.exec("pragma foreign_keys = 1"); | ||||
| 
 | ||||
|  | @ -347,8 +345,9 @@ void LocalStore::openDB(State& state, bool create) { | |||
|   { | ||||
|     SQLiteStmt stmt; | ||||
|     stmt.create(db, "pragma main.journal_mode;"); | ||||
|     if (sqlite3_step(stmt) != SQLITE_ROW) | ||||
|     if (sqlite3_step(stmt) != SQLITE_ROW) { | ||||
|       throwSQLiteError(db, "querying journal mode"); | ||||
|     } | ||||
|     prevMode = string((const char*)sqlite3_column_text(stmt, 0)); | ||||
|   } | ||||
|   if (prevMode != mode && | ||||
|  | @ -622,7 +621,9 @@ uint64_t LocalStore::addValidPath(State& state, const ValidPathInfo& info, | |||
|        derivations).  Note that if this throws an error, then the | ||||
|        DB transaction is rolled back, so the path validity | ||||
|        registration above is undone. */ | ||||
|     if (checkOutputs) checkDerivationOutputs(info.path, drv); | ||||
|     if (checkOutputs) { | ||||
|       checkDerivationOutputs(info.path, drv); | ||||
|     } | ||||
| 
 | ||||
|     for (auto& i : drv.outputs) { | ||||
|       state.stmtAddDerivationOutput.use()(id)(i.first)(i.second.path).exec(); | ||||
|  | @ -1046,8 +1047,9 @@ Path LocalStore::addToStoreFromDump(const string& dump, const string& name, | |||
|       if (recursive) { | ||||
|         StringSource source(dump); | ||||
|         restorePath(realPath, source); | ||||
|       } else | ||||
|       } else { | ||||
|         writeFile(realPath, dump); | ||||
|       } | ||||
| 
 | ||||
|       canonicalisePathMetaData(realPath, -1); | ||||
| 
 | ||||
|  | @ -1059,8 +1061,9 @@ Path LocalStore::addToStoreFromDump(const string& dump, const string& name, | |||
|       if (recursive) { | ||||
|         hash.first = hashAlgo == htSHA256 ? h : hashString(htSHA256, dump); | ||||
|         hash.second = dump.size(); | ||||
|       } else | ||||
|       } else { | ||||
|         hash = hashPath(htSHA256, realPath); | ||||
|       } | ||||
| 
 | ||||
|       optimisePath(realPath);  // FIXME: combine with hashPath()
 | ||||
| 
 | ||||
|  | @ -1297,14 +1300,16 @@ void LocalStore::verifyPath(const Path& path, const PathSet& store, | |||
|     } else { | ||||
|       LOG(ERROR) << "path '" << path | ||||
|                  << "' disappeared, but it still has valid referrers!"; | ||||
|       if (repair) try { | ||||
|       if (repair) { | ||||
|         try { | ||||
|           repairPath(path); | ||||
|         } catch (Error& e) { | ||||
|           LOG(WARNING) << e.msg(); | ||||
|           errors = true; | ||||
|         } | ||||
|       else | ||||
|       } else { | ||||
|         errors = true; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     return; | ||||
|  |  | |||
|  | @ -206,7 +206,9 @@ retry: | |||
|      the store itself (we don't want or need to mess with its | ||||
|      permissions). */ | ||||
|   bool mustToggle = dirOf(path) != realStoreDir; | ||||
|   if (mustToggle) makeWritable(dirOf(path)); | ||||
|   if (mustToggle) { | ||||
|     makeWritable(dirOf(path)); | ||||
|   } | ||||
| 
 | ||||
|   /* When we're done, make the directory read-only again and reset
 | ||||
|      its timestamp back to 0. */ | ||||
|  |  | |||
							
								
								
									
										4
									
								
								third_party/nix/src/libstore/references.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								third_party/nix/src/libstore/references.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -18,7 +18,9 @@ static void search(const unsigned char* s, size_t len, StringSet& hashes, | |||
|   static bool initialised = false; | ||||
|   static bool isBase32[256]; | ||||
|   if (!initialised) { | ||||
|     for (unsigned int i = 0; i < 256; ++i) isBase32[i] = false; | ||||
|     for (unsigned int i = 0; i < 256; ++i) { | ||||
|       isBase32[i] = false; | ||||
|     } | ||||
|     for (unsigned int i = 0; i < base32Chars.size(); ++i) | ||||
|       isBase32[(unsigned char)base32Chars[i]] = true; | ||||
|     initialised = true; | ||||
|  |  | |||
							
								
								
									
										7
									
								
								third_party/nix/src/libstore/remote-store.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								third_party/nix/src/libstore/remote-store.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -33,7 +33,9 @@ Path readStorePath(Store& store, Source& from) { | |||
| template <class T> | ||||
| T readStorePaths(Store& store, Source& from) { | ||||
|   T paths = readStrings<T>(from); | ||||
|   for (auto& i : paths) store.assertStorePath(i); | ||||
|   for (auto& i : paths) { | ||||
|     store.assertStorePath(i); | ||||
|   } | ||||
|   return paths; | ||||
| } | ||||
| 
 | ||||
|  | @ -600,10 +602,11 @@ void RemoteStore::queryMissing(const PathSet& targets, PathSet& willBuild, | |||
|                                unsigned long long& narSize) { | ||||
|   { | ||||
|     auto conn(getConnection()); | ||||
|     if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 19) | ||||
|     if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 19) { | ||||
|       // Don't hold the connection handle in the fallback case
 | ||||
|       // to prevent a deadlock.
 | ||||
|       goto fallback; | ||||
|     } | ||||
|     conn->to << wopQueryMissing << targets; | ||||
|     conn.processStderr(); | ||||
|     willBuild = readStorePaths<PathSet>(*this, conn->from); | ||||
|  |  | |||
							
								
								
									
										31
									
								
								third_party/nix/src/libstore/sqlite.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								third_party/nix/src/libstore/sqlite.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -14,15 +14,19 @@ namespace nix { | |||
|   int exterr = sqlite3_extended_errcode(db); | ||||
| 
 | ||||
|   auto path = sqlite3_db_filename(db, nullptr); | ||||
|   if (!path) path = "(in-memory)"; | ||||
|   if (!path) { | ||||
|     path = "(in-memory)"; | ||||
|   } | ||||
| 
 | ||||
|   if (err == SQLITE_BUSY || err == SQLITE_PROTOCOL) { | ||||
|     throw SQLiteBusy( | ||||
|         err == SQLITE_PROTOCOL | ||||
|             ? fmt("SQLite database '%s' is busy (SQLITE_PROTOCOL)", path) | ||||
|             : fmt("SQLite database '%s' is busy", path)); | ||||
|   } else | ||||
|     throw SQLiteError("%s: %s (in '%s')", fs.s, sqlite3_errstr(exterr), path); | ||||
|   } else { | ||||
|     throw | ||||
|   } | ||||
|   SQLiteError("%s: %s (in '%s')", fs.s, sqlite3_errstr(exterr), path); | ||||
| } | ||||
| 
 | ||||
| SQLite::SQLite(const Path& path) { | ||||
|  | @ -34,8 +38,9 @@ SQLite::SQLite(const Path& path) { | |||
| 
 | ||||
| SQLite::~SQLite() { | ||||
|   try { | ||||
|     if (db && sqlite3_close(db) != SQLITE_OK) | ||||
|     if (db && sqlite3_close(db) != SQLITE_OK) { | ||||
|       throwSQLiteError(db, "closing database"); | ||||
|     } | ||||
|   } catch (...) { | ||||
|     ignoreException(); | ||||
|   } | ||||
|  | @ -81,8 +86,9 @@ SQLiteStmt::Use& SQLiteStmt::Use::operator()(const std::string& value, | |||
|     if (sqlite3_bind_text(stmt, curArg++, value.c_str(), -1, | ||||
|                           SQLITE_TRANSIENT) != SQLITE_OK) | ||||
|       throwSQLiteError(stmt.db, "binding argument"); | ||||
|   } else | ||||
|   } else { | ||||
|     bind(); | ||||
|   } | ||||
|   return *this; | ||||
| } | ||||
| 
 | ||||
|  | @ -90,14 +96,16 @@ SQLiteStmt::Use& SQLiteStmt::Use::operator()(int64_t value, bool notNull) { | |||
|   if (notNull) { | ||||
|     if (sqlite3_bind_int64(stmt, curArg++, value) != SQLITE_OK) | ||||
|       throwSQLiteError(stmt.db, "binding argument"); | ||||
|   } else | ||||
|   } else { | ||||
|     bind(); | ||||
|   } | ||||
|   return *this; | ||||
| } | ||||
| 
 | ||||
| SQLiteStmt::Use& SQLiteStmt::Use::bind() { | ||||
|   if (sqlite3_bind_null(stmt, curArg++) != SQLITE_OK) | ||||
|   if (sqlite3_bind_null(stmt, curArg++) != SQLITE_OK) { | ||||
|     throwSQLiteError(stmt.db, "binding argument"); | ||||
|   } | ||||
|   return *this; | ||||
| } | ||||
| 
 | ||||
|  | @ -134,21 +142,24 @@ bool SQLiteStmt::Use::isNull(int col) { | |||
| 
 | ||||
| SQLiteTxn::SQLiteTxn(sqlite3* db) { | ||||
|   this->db = db; | ||||
|   if (sqlite3_exec(db, "begin;", 0, 0, 0) != SQLITE_OK) | ||||
|   if (sqlite3_exec(db, "begin;", 0, 0, 0) != SQLITE_OK) { | ||||
|     throwSQLiteError(db, "starting transaction"); | ||||
|   } | ||||
|   active = true; | ||||
| } | ||||
| 
 | ||||
| void SQLiteTxn::commit() { | ||||
|   if (sqlite3_exec(db, "commit;", 0, 0, 0) != SQLITE_OK) | ||||
|   if (sqlite3_exec(db, "commit;", 0, 0, 0) != SQLITE_OK) { | ||||
|     throwSQLiteError(db, "committing transaction"); | ||||
|   } | ||||
|   active = false; | ||||
| } | ||||
| 
 | ||||
| SQLiteTxn::~SQLiteTxn() { | ||||
|   try { | ||||
|     if (active && sqlite3_exec(db, "rollback;", 0, 0, 0) != SQLITE_OK) | ||||
|     if (active && sqlite3_exec(db, "rollback;", 0, 0, 0) != SQLITE_OK) { | ||||
|       throwSQLiteError(db, "aborting transaction"); | ||||
|     } | ||||
|   } catch (...) { | ||||
|     ignoreException(); | ||||
|   } | ||||
|  |  | |||
							
								
								
									
										9
									
								
								third_party/nix/src/libstore/store-api.cc
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								third_party/nix/src/libstore/store-api.cc
									
										
									
									
										vendored
									
									
								
							|  | @ -42,7 +42,9 @@ Path Store::toStorePath(const Path& path) const { | |||
| Path Store::followLinksToStore(const Path& _path) const { | ||||
|   Path path = absPath(_path); | ||||
|   while (!isInStore(path)) { | ||||
|     if (!isLink(path)) break; | ||||
|     if (!isLink(path)) { | ||||
|       break; | ||||
|     } | ||||
|     string target = readLink(path); | ||||
|     path = absPath(target, dirOf(path)); | ||||
|   } | ||||
|  | @ -828,10 +830,11 @@ StoreType getStoreType(const std::string& uri, const std::string& stateDir) { | |||
|   } else if (uri == "" || uri == "auto") { | ||||
|     if (access(stateDir.c_str(), R_OK | W_OK) == 0) | ||||
|       return tLocal; | ||||
|     else if (pathExists(settings.nixDaemonSocketFile)) | ||||
|     else if (pathExists(settings.nixDaemonSocketFile)) { | ||||
|       return tDaemon; | ||||
|     else | ||||
|     } else { | ||||
|       return tLocal; | ||||
|     } | ||||
|   } else { | ||||
|     return tOther; | ||||
|   } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue