00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <string.h>
00024 #include <stdio.h>
00025 #include "lininfo.h"
00026 #include <sys/types.h>
00027 #include <dirent.h>
00028
00029 #include <glib.h>
00030 #include <pthread.h>
00031 #include <gtk/gtk.h>
00032
00033 extern pthread_t thread_id;
00034
00035
00036 void set_tooltiptext(GtkWidget *object,gchar *str)
00037 {
00038 g_assert(object!=NULL && str!=NULL);
00039
00040 GtkTooltips *gtt;
00041
00042 gtt=gtk_tooltips_new();
00043 gtk_tooltips_set_tip(gtt,object,str,NULL);
00044
00045 }
00046
00051 char *
00052 trim (char *str)
00053 {
00054 return (str + strspn (str, " "));
00055 }
00056
00061 char *
00062 rtrim(char* str)
00063 {
00064 g_assert(str!=NULL);
00065
00066 char* p;
00067 if((p=rindex(str,' '))==NULL)
00068 return(str);
00069 while(p>str){
00070 if(*p==' '){
00071 *p='\0';
00072 p--;
00073 }
00074 else return(str);
00075 }
00076 return(str);
00077 }
00078
00079
00085 int
00086 skip_lines (char* contents, int num_lines)
00087 {
00088 g_assert(contents!=NULL && num_lines>=0);
00089
00090 int i, c;
00091
00092 for (i = 0; i < num_lines; c++)
00093 if (*contents=='\n'){
00094 i++;
00095 }else{
00096 contents++;
00097 }
00098
00099 return (0);
00100 }
00101
00109 void
00110 find_data_for (char* pattern,char* member, const char* contents)
00111 {
00112
00113 g_assert(pattern!=NULL && member!=NULL && contents!=NULL);
00114
00115 char p[25];
00116 char* line;
00117
00118 sscanf(pattern,"%[^\t:]",p);
00119
00120 strcpy(p,rtrim(p));
00121 if((line=strstr(contents,p))==NULL){
00122 strcpy(member,"Unknown");
00123 return;
00124 }
00125
00126 sscanf(line, pattern,member);
00127
00128 }
00129
00132 void lkmonitor_exit()
00133 {
00134 if(pthread_cancel(thread_id)!=0)
00135 g_warning("Can't cancel collector thread!");
00136
00137 gtk_main_quit();
00138 }