1 /******************************************************************************* 2 * Copyright (C) 2004-2008 Intel Corp. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * 7 * - Redistributions of source code must retain the above copyright notice, 8 * this list of conditions and the following disclaimer. 9 * 10 * - Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * 14 * - Neither the name of Intel Corp. nor the names of its 15 * contributors may be used to endorse or promote products derived from this 16 * software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corp. OR THE CONTRIBUTORS 22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGE. 29 *******************************************************************************/ 30 31 #ifndef _AT_VERSION_TOOL_H_ 32 #define _AT_VERSION_TOOL_H_ 33 34 #include <string> 35 #include <list> 36 37 class ATVersion 38 { 39 public: 40 /** 41 function check if user requested version information to be displayed on std output 42 and show version number 43 @param argc Argument count 44 @param argv Argument array 45 @param versionStr Version string to be displayed 46 @return bool true if version user requested version to be displayed 47 false if version information was not displayed 48 */ 49 static bool ShowVersionIfArg(int argc, const char **argv, const char *versionStr); 50 51 /** 52 function gets application version - if target application uses this class to show version 53 @param appName application name 54 @param version string returning version or empty string if version not determined 55 @return true - if application is running, false - if not. 56 */ 57 static bool GetAppVersion(const char *appName, std::string &version); 58 59 /** 60 function gets process version - if target application uses this class to show version 61 @param cmd path to application 62 @return string version or empty string if version not determined 63 */ 64 static std::string GetProcessVersion(std::string cmd); 65 66 /** 67 Checks if an application is running in the system. 68 @param app_name Application binary name (not including path). 69 @param pids returned list of pids of searched application 70 @return true - if application is running, false - if not. 71 */ 72 static bool IsAppRunning(const char *app_name, std::list<unsigned long> &pids); 73 74 /** 75 Returns path associated with application with given PID. Note that to access this information for all processes 76 the function must be called with elevated privileges. 77 @param pid PID of application of interest. 78 @return Application path if possible. 79 Empty string if access is not possbile. 80 NULL if the application isn't runnig. 81 */ 82 static std::string GetAppPathByPid(unsigned long pid); 83 84 static const std::string appSearchPath; 85 }; 86 87 #endif /* _AT_VERSION_TOOL_H_ */ 88