diff --git a/Makefile b/Makefile index 1513239..cd783ca 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,8 @@ CFLAGS := -ggdb3 -O2 -Wall -I. -DINTERFACES_FILE=\"${INTERFACES_FILE}\" LIBIFUPDOWN_SRC = \ libifupdown/list.c \ libifupdown/dict.c \ - libifupdown/interface.c + libifupdown/interface.c \ + libifupdown/interface-file.c LIBIFUPDOWN_OBJ = ${LIBIFUPDOWN_SRC:.c=.o} LIBIFUPDOWN_LIB = libifupdown.a diff --git a/cmd/ifquery.c b/cmd/ifquery.c index c2a08dc..4c30ab8 100644 --- a/cmd/ifquery.c +++ b/cmd/ifquery.c @@ -92,7 +92,11 @@ main(int argc, char *argv[]) } } - lif_interface_collection_init(&collection); + if (!lif_interface_file_parse(&collection, interfaces_file)) + { + fprintf(stderr, "ifquery: could not parse %s\n", interfaces_file); + return EXIT_FAILURE; + } if (optind >= argc) usage(); @@ -103,7 +107,7 @@ main(int argc, char *argv[]) struct lif_dict_entry *entry = lif_dict_find(&collection, argv[idx]); if (entry == NULL) { - printf("ifquery: unknown interface %s\n", argv[idx]); + fprintf(stderr, "ifquery: unknown interface %s\n", argv[idx]); return EXIT_FAILURE; } diff --git a/libifupdown/interface-file.c b/libifupdown/interface-file.c new file mode 100644 index 0000000..62a6125 --- /dev/null +++ b/libifupdown/interface-file.c @@ -0,0 +1,25 @@ +/* + * libifupdown/interface-file.h + * Purpose: /etc/network/interfaces parser + * + * Copyright (c) 2020 Ariadne Conill + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * This software is provided 'as is' and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising + * from the use of this software. + */ + +#include +#include "libifupdown/interface-file.h" + +bool +lif_interface_file_parse(struct lif_dict *collection, const char *filename) +{ + lif_interface_collection_init(collection); + + return true; +} diff --git a/libifupdown/interface-file.h b/libifupdown/interface-file.h new file mode 100644 index 0000000..5769445 --- /dev/null +++ b/libifupdown/interface-file.h @@ -0,0 +1,24 @@ +/* + * libifupdown/interface-file.h + * Purpose: /etc/network/interfaces parser + * + * Copyright (c) 2020 Ariadne Conill + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * This software is provided 'as is' and without any warranty, express or + * implied. In no event shall the authors be liable for any damages arising + * from the use of this software. + */ + +#ifndef LIBIFUPDOWN_INTERFACE_FILE_H__GUARD +#define LIBIFUPDOWN_INTERFACE_FILE_H__GUARD + +#include +#include "libifupdown/interface.h" + +extern bool lif_interface_file_parse(struct lif_dict *collection, const char *filename); + +#endif diff --git a/libifupdown/libifupdown.h b/libifupdown/libifupdown.h index a9c287e..89e868a 100644 --- a/libifupdown/libifupdown.h +++ b/libifupdown/libifupdown.h @@ -19,5 +19,6 @@ #include "libifupdown/list.h" #include "libifupdown/dict.h" #include "libifupdown/interface.h" +#include "libifupdown/interface-file.h" #endif