Annotation of embedaddon/pciutils/lib/params.c, revision 1.1
1.1 ! misho 1: /*
! 2: * The PCI Library -- Parameters
! 3: *
! 4: * Copyright (c) 2008 Martin Mares <mj@ucw.cz>
! 5: *
! 6: * Can be freely distributed and used under the terms of the GNU GPL.
! 7: */
! 8:
! 9: #include <stdio.h>
! 10: #include <stdlib.h>
! 11: #include <string.h>
! 12:
! 13: #include "internal.h"
! 14:
! 15: char *
! 16: pci_get_param(struct pci_access *acc, char *param)
! 17: {
! 18: struct pci_param *p;
! 19:
! 20: for (p=acc->params; p; p=p->next)
! 21: if (!strcmp(p->param, param))
! 22: return p->value;
! 23: return NULL;
! 24: }
! 25:
! 26: void
! 27: pci_define_param(struct pci_access *acc, char *param, char *value, char *help)
! 28: {
! 29: struct pci_param *p = pci_malloc(acc, sizeof(*p));
! 30:
! 31: p->next = acc->params;
! 32: acc->params = p;
! 33: p->param = param;
! 34: p->value = value;
! 35: p->value_malloced = 0;
! 36: p->help = help;
! 37: }
! 38:
! 39: int
! 40: pci_set_param_internal(struct pci_access *acc, char *param, char *value, int copy)
! 41: {
! 42: struct pci_param *p;
! 43:
! 44: for (p=acc->params; p; p=p->next)
! 45: if (!strcmp(p->param, param))
! 46: {
! 47: if (p->value_malloced)
! 48: pci_mfree(p->value);
! 49: p->value_malloced = copy;
! 50: if (copy)
! 51: p->value = pci_strdup(acc, value);
! 52: else
! 53: p->value = value;
! 54: return 0;
! 55: }
! 56: return -1;
! 57: }
! 58:
! 59: int
! 60: pci_set_param(struct pci_access *acc, char *param, char *value)
! 61: {
! 62: return pci_set_param_internal(acc, param, value, 1);
! 63: }
! 64:
! 65: void
! 66: pci_free_params(struct pci_access *acc)
! 67: {
! 68: struct pci_param *p;
! 69:
! 70: while (p = acc->params)
! 71: {
! 72: acc->params = p->next;
! 73: if (p->value_malloced)
! 74: pci_mfree(p->value);
! 75: pci_mfree(p);
! 76: }
! 77: }
! 78:
! 79: struct pci_param *
! 80: pci_walk_params(struct pci_access *acc, struct pci_param *prev)
! 81: {
! 82: /* So far, the params form a simple linked list, but this can change in the future */
! 83: if (!prev)
! 84: return acc->params;
! 85: else
! 86: return prev->next;
! 87: }
! 88:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>