13b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov/*
23b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * Copyright (C) 2009 bsdroid project
33b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *               Alexey Tarasov <tarasov@dodologics.com>
43b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *
53b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * Copyright (C) 2007 The Android Open Source Project
63b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *
73b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * Licensed under the Apache License, Version 2.0 (the "License");
83b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * you may not use this file except in compliance with the License.
93b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * You may obtain a copy of the License at
103b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *
113b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *      http://www.apache.org/licenses/LICENSE-2.0
123b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov *
133b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * Unless required by applicable law or agreed to in writing, software
143b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * distributed under the License is distributed on an "AS IS" BASIS,
153b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
163b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * See the License for the specific language governing permissions and
173b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov * limitations under the License.
183b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov */
193b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
203b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov#include <sys/types.h>
213b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov#include <unistd.h>
223b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov#include <limits.h>
233b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov#include <stdio.h>
243b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
253b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasovvoid
263b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasovget_my_path(char *exe, size_t maxLen)
273b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov{
283b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov    char proc[64];
293b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
303b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov    snprintf(proc, sizeof(proc), "/proc/%d/file", getpid());
313b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
323b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov    int err = readlink(proc, exe, maxLen - 1);
333b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
343b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov    exe[err > 0 ? err : 0] = '\0';
353b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov}
363b226f9e3b893a3e088d7b854b0e7c523e79063fAlexey Tarasov
37