📄 data_list.c
字号:
/* * netsnmp_data_list.c * * $Id: data_list.c,v 5.1 2002/12/12 13:04:21 nba Exp $ */#include <net-snmp/net-snmp-config.h>#include <sys/types.h>#include <stdlib.h>#if HAVE_STRING_H#include <string.h>#else#include <strings.h>#endif#if HAVE_DMALLOC_H#include <dmalloc.h>#endif#include <net-snmp/library/data_list.h>/***********************************************************************//* * New Handler based API *//***********************************************************************/inline voidnetsnmp_free_list_data(netsnmp_data_list *node){ Netsnmp_Free_List_Data *beer; if (!node) return; beer = node->free_func; if (beer) (beer) (node->data); SNMP_FREE(node->name);}inline voidnetsnmp_free_all_list_data(netsnmp_data_list *head){ netsnmp_data_list *tmpptr; for (; head;) { netsnmp_free_list_data(head); tmpptr = head; head = head->next; SNMP_FREE(tmpptr); }}inline netsnmp_data_list *netsnmp_create_data_list(const char *name, void *data, Netsnmp_Free_List_Data * beer){ netsnmp_data_list *node = SNMP_MALLOC_TYPEDEF(netsnmp_data_list); if (!node) return NULL; node->name = strdup(name); node->data = data; node->free_func = beer; return node;}inline voidnetsnmp_add_list_data(netsnmp_data_list **head, netsnmp_data_list *node){ netsnmp_data_list *ptr; if (!*head) { *head = node; return; } /* * xxx-rks: check for duplicate names? */ for (ptr = *head; ptr->next != NULL; ptr = ptr->next) { /* * noop */ } if (ptr) /* should always be true */ ptr->next = node;}inline void *netsnmp_get_list_data(netsnmp_data_list *head, const char *name){ for (; head; head = head->next) if (head->name && strcmp(head->name, name) == 0) break; if (head) return head->data; return NULL;}inline void *netsnmp_get_list_node(netsnmp_data_list *head, const char *name){ for (; head; head = head->next) if (head->name && strcmp(head->name, name) == 0) break; if (head) return head; return NULL;}intnetsnmp_remove_list_node(netsnmp_data_list **realhead, const char *name){ netsnmp_data_list *head, *prev; for (head = *realhead, prev = NULL; head; prev = head, head = head->next) { if (head->name && strcmp(head->name, name) == 0) { if (prev) prev->next = head->next; else *realhead = head->next; netsnmp_free_list_data(head); free(head); return 0; } } return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -