OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/linux_util.h" | 5 #include "base/linux_util.h" |
6 | 6 |
7 #include <dirent.h> | 7 #include <dirent.h> |
8 #include <errno.h> | 8 #include <errno.h> |
9 #include <glib.h> | 9 #include <glib.h> |
10 #include <stdlib.h> | 10 #include <stdlib.h> |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 if (PathService::Get(base::DIR_TEMP, &rv)) | 194 if (PathService::Get(base::DIR_TEMP, &rv)) |
195 return rv; | 195 return rv; |
196 | 196 |
197 // Last resort. | 197 // Last resort. |
198 return FilePath("/tmp"); | 198 return FilePath("/tmp"); |
199 } | 199 } |
200 | 200 |
201 std::string GetLinuxDistro() { | 201 std::string GetLinuxDistro() { |
202 #if defined(OS_CHROMEOS) | 202 #if defined(OS_CHROMEOS) |
203 return linux_distro; | 203 return linux_distro; |
204 #else // if defined(OS_LINUX) | 204 #elif defined(OS_LINUX) |
205 LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::Get(); | 205 LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::Get(); |
206 LinuxDistroState state = distro_state_singleton->State(); | 206 LinuxDistroState state = distro_state_singleton->State(); |
207 if (STATE_DID_NOT_CHECK == state) { | 207 if (STATE_DID_NOT_CHECK == state) { |
208 // We do this check only once per process. If it fails, there's | 208 // We do this check only once per process. If it fails, there's |
209 // little reason to believe it will work if we attempt to run | 209 // little reason to believe it will work if we attempt to run |
210 // lsb_release again. | 210 // lsb_release again. |
211 std::vector<std::string> argv; | 211 std::vector<std::string> argv; |
212 argv.push_back("lsb_release"); | 212 argv.push_back("lsb_release"); |
213 argv.push_back("-d"); | 213 argv.push_back("-d"); |
214 std::string output; | 214 std::string output; |
215 base::GetAppOutput(CommandLine(argv), &output); | 215 base::GetAppOutput(CommandLine(argv), &output); |
216 if (output.length() > 0) { | 216 if (output.length() > 0) { |
217 // lsb_release -d should return: Description:<tab>Distro Info | 217 // lsb_release -d should return: Description:<tab>Distro Info |
218 static const std::string field = "Description:\t"; | 218 static const std::string field = "Description:\t"; |
219 if (output.compare(0, field.length(), field) == 0) { | 219 if (output.compare(0, field.length(), field) == 0) { |
220 linux_distro = output.substr(field.length()); | 220 linux_distro = output.substr(field.length()); |
221 TrimWhitespaceASCII(linux_distro, TRIM_ALL, &linux_distro); | 221 TrimWhitespaceASCII(linux_distro, TRIM_ALL, &linux_distro); |
222 } | 222 } |
223 } | 223 } |
224 distro_state_singleton->CheckFinished(); | 224 distro_state_singleton->CheckFinished(); |
225 return linux_distro; | 225 return linux_distro; |
226 } else if (STATE_CHECK_STARTED == state) { | 226 } else if (STATE_CHECK_STARTED == state) { |
227 // If the distro check above is in progress in some other thread, we're | 227 // If the distro check above is in progress in some other thread, we're |
228 // not going to wait for the results. | 228 // not going to wait for the results. |
229 return "Unknown"; | 229 return "Unknown"; |
230 } else { | 230 } else { |
231 // In STATE_CHECK_FINISHED, no more writing to |linux_distro|. | 231 // In STATE_CHECK_FINISHED, no more writing to |linux_distro|. |
232 return linux_distro; | 232 return linux_distro; |
233 } | 233 } |
| 234 #else |
| 235 NOTIMPLEMENTED(); |
234 #endif | 236 #endif |
235 } | 237 } |
236 | 238 |
237 FilePath GetXDGDirectory(EnvironmentVariableGetter* env, | 239 FilePath GetXDGDirectory(EnvironmentVariableGetter* env, |
238 const char* env_name, const char* fallback_dir) { | 240 const char* env_name, const char* fallback_dir) { |
239 std::string env_value; | 241 std::string env_value; |
240 if (env->Getenv(env_name, &env_value) && !env_value.empty()) | 242 if (env->Getenv(env_name, &env_value) && !env_value.empty()) |
241 return FilePath(env_value); | 243 return FilePath(env_value); |
242 return GetHomeDir(env).Append(fallback_dir); | 244 return GetHomeDir(env).Append(fallback_dir); |
243 } | 245 } |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 } | 374 } |
373 } | 375 } |
374 | 376 |
375 closedir(fd); | 377 closedir(fd); |
376 } | 378 } |
377 | 379 |
378 return already_found; | 380 return already_found; |
379 } | 381 } |
380 | 382 |
381 } // namespace base | 383 } // namespace base |
OLD | NEW |