summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgpt/cgpt_wrapper.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c
index 577b2766..50957ccb 100644
--- a/cgpt/cgpt_wrapper.c
+++ b/cgpt/cgpt_wrapper.c
@@ -140,6 +140,23 @@ cleanup:
}
int main(int argc, const char *argv[]) {
+ char resolved_cgpt[PATH_MAX];
+ pid_t pid = getpid();
+ char exe_link[40];
+
+ if (argc < 1) {
+ return -1;
+ }
+
+ snprintf(exe_link, sizeof(exe_link), "/proc/%d/exe", pid);
+ memset(resolved_cgpt, 0, sizeof(resolved_cgpt));
+ if (readlink(exe_link, resolved_cgpt, sizeof(resolved_cgpt) - 1) == -1) {
+ perror("readlink");
+ return -1;
+ }
+
+ argv[0] = resolved_cgpt;
+
if (argc > 2 && !has_dash_D(argc, argv)) {
const char *mtd_device = find_mtd_device(argc, argv);
if (mtd_device) {