summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--TODO2
-rw-r--r--include/db.c37
-rw-r--r--include/expression.c50
4 files changed, 62 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 23cc2849..ffb138c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
Changes for 1.0beta11:
+ - housekeeping to delete hosts having status 'deleted' (Alexei)
- AC_FUNC_GETLOADAVG changes to AC_REPLACE_FUNCS(getloadavg) in
configure.in (Alexei)
- eliminated compiler's warnings under SUSE v8.2 (Alexei)
diff --git a/TODO b/TODO
index 05f88c10..dda7ba30 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
1.0beta11:
- - new host status: 'deleted'. Housekeeping to delete hosts, items, etc
+ - new item status: 'deleted'. Housekeeping to delete items, etc
- fix problems under SUSE 8.2
- user groups
- get rid of strlen() in for(;;)
diff --git a/include/db.c b/include/db.c
index 039492db..4b892f68 100644
--- a/include/db.c
+++ b/include/db.c
@@ -521,8 +521,40 @@ void update_triggers_status_to_unknown(int hostid,int clock)
return;
}
+void DBdelete_service(int serviceid)
+{
+ char sql[MAX_STRING_LEN+1];
+
+ sprintf(sql,"delete from services_links where servicedownid=%d or serviceupid=%d", serviceid, serviceid);
+ DBexecute(sql);
+ sprintf(sql,"delete from services where serviceid=%d", serviceid);
+ DBexecute(sql);
+}
+
+void DBdelete_services_by_triggerid(int triggerid)
+{
+ int i, serviceid;
+ char sql[MAX_STRING_LEN+1];
+ DB_RESULT *result;
+
+ zabbix_log(LOG_LEVEL_DEBUG,"In DBdelete_services_by_triggerid(%d)", triggerid);
+ sprintf(sql,"select serviceid from services where triggerid=%d", triggerid);
+ result = DBselect(sql);
+
+ for(i=0;i<DBnum_rows(result);i++)
+ {
+ serviceid=atoi(DBget_field(result,i,0));
+ DBdelete_service(serviceid);
+ }
+ DBfree_result(result);
+
+ zabbix_log(LOG_LEVEL_DEBUG,"End of DBdelete_services_by_triggerid(%d)", triggerid);
+}
+
void DBdelete_trigger(int triggerid)
{
+ char sql[MAX_STRING_LEN+1];
+
sprintf(sql,"delete from trigger_depends where triggerid_down=%d or triggerid_up=%d", triggerid, triggerid);
DBexecute(sql);
sprintf(sql,"delete from functions where triggerid=%d", triggerid);
@@ -562,10 +594,11 @@ void DBdelete_triggers_by_itemid(int itemid)
zabbix_log(LOG_LEVEL_DEBUG,"End of DBdelete_triggers_by_itemid(%d)", itemid);
}
-}
void DBdelete_history_by_itemid(int itemid)
{
+ char sql[MAX_STRING_LEN+1];
+
sprintf(sql,"delete from history where itemid=%d", itemid);
DBexecute(sql);
sprintf(sql,"delete from history_str where itemid=%d", itemid);
@@ -574,6 +607,8 @@ void DBdelete_history_by_itemid(int itemid)
void DBdelete_item(int itemid)
{
+ char sql[MAX_STRING_LEN+1];
+
zabbix_log(LOG_LEVEL_DEBUG,"In DBdelete_item(%d)", itemid);
DBdelete_triggers_by_itemid(itemid);
diff --git a/include/expression.c b/include/expression.c
index 96aa0028..7be86182 100644
--- a/include/expression.c
+++ b/include/expression.c
@@ -50,7 +50,8 @@ int is_double(char *c)
int dot=-1;
zabbix_log(LOG_LEVEL_DEBUG, "Starting is_double:[%s]", c );
- for(i=0;i<(int)strlen(c);i++)
+/* for(i=0;i<(int)strlen(c);i++)*/
+ for(i=0;c[i]!=0;i++)
{
if((c[i]>='0')&&(c[i]<='9'))
{
@@ -84,7 +85,8 @@ void delete_spaces(char *c)
zabbix_log( LOG_LEVEL_DEBUG, "Before deleting spaces:%s", c );
j=0;
- for(i=0;i<(int)strlen(c);i++)
+/* for(i=0;i<(int)strlen(c);i++)*/
+ for(i=0;c[i]!=0;i++)
{
if( c[i] != ' ')
{
@@ -106,7 +108,8 @@ int find_char(char *str,char c)
zabbix_log( LOG_LEVEL_DEBUG, "Before find_char:%s[%c]", str, c );
- for(i=0;i<(int)strlen(str);i++)
+/* for(i=0;i<(int)strlen(str);i++)*/
+ for(i=0;str[i]!=0;i++)
{
if(str[i]==c) return i;
}
@@ -138,7 +141,8 @@ int evaluate_simple (double *result,char *exp)
strncpy( first, exp, MAX_STRING_LEN );
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -174,7 +178,8 @@ int evaluate_simple (double *result,char *exp)
strncpy( first, exp, MAX_STRING_LEN );
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -208,7 +213,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -241,7 +247,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -276,7 +283,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -302,7 +310,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -336,7 +345,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -362,7 +372,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -388,7 +399,8 @@ int evaluate_simple (double *result,char *exp)
strncpy(first, exp, MAX_STRING_LEN);
first[l]=0;
j=0;
- for(i=l+1;i<(int)strlen(exp);i++)
+/* for(i=l+1;i<(int)strlen(exp);i++)*/
+ for(i=l+1;exp[i]!=0;i++)
{
second[j]=exp[i];
j++;
@@ -594,20 +606,6 @@ int substitute_macros(char *exp)
zabbix_log( LOG_LEVEL_DEBUG, "Value5 [%s]", exp );
-/* j=0;
- for(i=0;i<(int)strlen(exp);i++)
- {
- if( (i>=l+3) && (i<=r) )
- continue;
- exp[j]=exp[i];
- if(i==l)
- exp[j]='%';
- if(i==l+1)
- exp[j]='s';
- j++;
- }
- exp[j]=0;*/
-
sprintf(res,exp,value);
strncpy(exp,res, MAX_STRING_LEN);
/* delete_spaces(exp); */