*
* Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
*
- * Can be freely distributed and used under the terms of the GNU GPL.
+ * Can be freely distributed and used under the terms of the GNU GPL v2+.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <stdio.h>
if (result)
return result;
len = strlen(a->id_file_name);
- if (len >= 3 && memcmp(a->id_file_name + len - 3, ".gz", 3) != 0)
+ if (len < 3 || memcmp(a->id_file_name + len - 3, ".gz", 3) != 0)
return result;
new_name = malloc(len - 2);
memcpy(new_name, a->id_file_name, len - 3);
#define pci_close(f) gzclose(f)
#define PCI_ERROR(f, err) \
if (!err) { \
- int errnum; \
+ int errnum = 0; \
gzerror(f, &errnum); \
if (errnum >= 0) err = NULL; \
else if (errnum == Z_ERRNO) err = "I/O error"; \
const char *err;
pci_free_name_list(a);
- a->id_load_failed = 1;
+ a->id_load_attempted = 1;
if (!(f = pci_open(a)))
return 0;
err = id_parse_list(a, f, &lino);
pci_close(f);
if (err)
a->error("%s at %s, line %d\n", err, a->id_file_name, lino);
- a->id_load_failed = 0;
return 1;
}
{
pci_id_cache_flush(a);
pci_id_hash_free(a);
- a->id_load_failed = 0;
+ pci_id_hwdb_free(a);
+ a->id_load_attempted = 0;
}
void