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