move sigar_get_self_path to sigar_util
This commit is contained in:
		
							parent
							
								
									dc3eceb517
								
							
						
					
					
						commit
						5fc7cc7134
					
				@ -81,6 +81,8 @@ double sigar_file_system_usage_calc_used(sigar_t *sigar,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info);
 | 
					void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *sigar_get_self_path(sigar_t *sigar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct sigar_cache_entry_t sigar_cache_entry_t;
 | 
					typedef struct sigar_cache_entry_t sigar_cache_entry_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct sigar_cache_entry_t {
 | 
					struct sigar_cache_entry_t {
 | 
				
			||||||
 | 
				
			|||||||
@ -510,6 +510,52 @@ SIGAR_DECLARE(int) sigar_nfs_ping(char *host)
 | 
				
			|||||||
#define vsnprintf _vsnprintf
 | 
					#define vsnprintf _vsnprintf
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int proc_module_get_self(void *data, char *name, int len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    sigar_t *sigar = (sigar_t *)data;
 | 
				
			||||||
 | 
					    char *ptr = rindex(name, '/');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!ptr) {
 | 
				
			||||||
 | 
					        return SIGAR_OK;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (strnEQ(ptr+1, "libsigar-", 9)) {
 | 
				
			||||||
 | 
					        *ptr = '\0'; /* chop libsigar-powerpc-ibm-aix-4.3.x.so */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sigar->self_path = sigar_strdup(name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (SIGAR_LOG_IS_DEBUG(sigar)) {
 | 
				
			||||||
 | 
					            sigar_log_printf(sigar, SIGAR_LOG_DEBUG,
 | 
				
			||||||
 | 
					                             "detected sigar-lib='%s'",
 | 
				
			||||||
 | 
					                             sigar->self_path);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return !SIGAR_OK; /* break loop */
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return SIGAR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *sigar_get_self_path(sigar_t *sigar)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (!sigar->self_path) {
 | 
				
			||||||
 | 
					        sigar_proc_modules_t procmods;
 | 
				
			||||||
 | 
					        procmods.module_getter = proc_module_get_self;
 | 
				
			||||||
 | 
					        procmods.data = sigar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sigar_proc_modules_get(sigar,
 | 
				
			||||||
 | 
					                               sigar_pid_get(sigar),
 | 
				
			||||||
 | 
					                               &procmods);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!sigar->self_path) {
 | 
				
			||||||
 | 
					            /* dont try again */
 | 
				
			||||||
 | 
					            sigar->self_path = sigar_strdup(".");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return sigar->self_path;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SIGAR_DECLARE(void) sigar_log_printf(sigar_t *sigar, int level,
 | 
					SIGAR_DECLARE(void) sigar_log_printf(sigar_t *sigar, int level,
 | 
				
			||||||
                                     const char *format, ...)
 | 
					                                     const char *format, ...)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user