Flutter Linux Embedder
path_utils.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
6 
7 #if defined(_WIN32)
8 #include <windows.h>
9 #elif defined(__linux__)
10 #include <linux/limits.h>
11 #include <unistd.h>
12 #endif
13 
14 namespace flutter {
15 
16 std::filesystem::path GetExecutableDirectory() {
17 #if defined(_WIN32)
18  wchar_t buffer[MAX_PATH];
19  if (GetModuleFileName(nullptr, buffer, MAX_PATH) == 0) {
20  return std::filesystem::path();
21  }
22  std::filesystem::path executable_path(buffer);
23  return executable_path.remove_filename();
24 #elif defined(__linux__)
25  char buffer[PATH_MAX + 1];
26  ssize_t length = readlink("/proc/self/exe", buffer, sizeof(buffer));
27  if (length > PATH_MAX) {
28  return std::filesystem::path();
29  }
30  std::filesystem::path executable_path(std::string(buffer, length));
31  return executable_path.remove_filename();
32 #else
33  return std::filesystem::path();
34 #endif
35 }
36 
37 } // namespace flutter
flutter::GetExecutableDirectory
std::filesystem::path GetExecutableDirectory()
Definition: path_utils.cc:16
path_utils.h
flutter
Definition: accessibility_bridge.cc:14
buffer
static const uint8_t buffer[]
Definition: fl_pixel_buffer_texture_test.cc:44
length
size_t length
Definition: fl_standard_message_codec_test.cc:1113