]>
jfr.im git - irc/quakenet/newserv.git/blob - helpmod2/hterm.c
10 hterm
*hterm_add(hterm
** ptr
, const char *name
, const char *desc
)
17 if (name
== NULL
|| desc
== NULL
|| hterm_get(*ptr
, name
))
20 for (;*ptr
&& strcmp(name
, (*ptr
)->name
->content
) > 0;ptr
= &(*ptr
)->next
);
22 htrm
= (hterm
*)malloc(sizeof(hterm
));
23 htrm
->name
= getsstring(name
, strlen(name
));
24 htrm
->description
= getsstring(desc
, strlen(desc
));
33 hterm
*hterm_get(hterm
*source
, const char *str
)
37 for (;ptr
;ptr
= ptr
->next
)
38 if (!ci_strcmp(ptr
->name
->content
, str
))
43 hterm
*hterm_find(hterm
*source
, const char *str
)
48 sprintf(buffer
, "*%s*", str
);
50 for (ptr
= source
;ptr
;ptr
= ptr
->next
)
51 if (strregexp(ptr
->name
->content
, buffer
))
53 for (ptr
= source
;ptr
;ptr
= ptr
->next
)
54 if (strregexp(ptr
->description
->content
, buffer
))
59 hterm
*hterm_get_and_find(hterm
*source
, const char *str
)
61 /* search order: get source, get hterms, find source, find hterms */
63 ptr
= hterm_get(source
, str
);
69 ptr
= hterm_get(hterms
, str
);
75 ptr
= hterm_find(source
, str
);
81 ptr
= hterm_find(hterms
, str
);
90 hterm
*hterm_del(hterm
** start
, hterm
*htrm
)
94 for (;*ptr
;ptr
= &(*ptr
)->next
)
97 hterm
*tmp
= (*ptr
)->next
;
98 freesstring((*ptr
)->name
);
99 freesstring((*ptr
)->description
);
109 void hterm_del_all(hterm
**source
)
115 hterm_del(source
, *source
);
118 int hterm_count(hterm
* ptr
)
121 for (;ptr
;ptr
= ptr
->next
)