1- #include "cfg.h"
1+ /*
2+ * Simple config parser
3+ *
4+ * Copyright (c) 2017 Christopher Haster
5+ * Distributed under the MIT license
6+ */
7+ #include "emubd/lfs_cfg.h"
28
39#include <stdlib.h>
410#include <errno.h>
511#include <string.h>
612#include <stdio.h>
713
814
9- static int cfg_buffer ( cfg_t * cfg , char c ) {
15+ static int lfs_cfg_buffer ( lfs_cfg_t * cfg , char c ) {
1016 // Amortize double
1117 if (cfg -> blen == cfg -> bsize ) {
1218 size_t nsize = cfg -> bsize * 2 ;
@@ -26,16 +32,16 @@ static int cfg_buffer(cfg_t *cfg, char c) {
2632 return 0 ;
2733}
2834
29- static int cfg_attr ( cfg_t * cfg , unsigned key , unsigned val ) {
35+ static int lfs_cfg_attr ( lfs_cfg_t * cfg , unsigned key , unsigned val ) {
3036 // Amortize double
3137 if (cfg -> len == cfg -> size ) {
3238 size_t nsize = cfg -> size * 2 ;
33- struct cfg_attr * nattrs = malloc (nsize * sizeof (struct cfg_attr ));
39+ struct lfs_cfg_attr * nattrs = malloc (nsize * sizeof (struct lfs_cfg_attr ));
3440 if (!nattrs ) {
3541 return - ENOMEM ;
3642 }
3743
38- memcpy (nattrs , cfg -> attrs , cfg -> size * sizeof (struct cfg_attr ));
44+ memcpy (nattrs , cfg -> attrs , cfg -> size * sizeof (struct lfs_cfg_attr ));
3945 free (cfg -> attrs );
4046 cfg -> attrs = nattrs ;
4147 cfg -> size = nsize ;
@@ -50,14 +56,14 @@ static int cfg_attr(cfg_t *cfg, unsigned key, unsigned val) {
5056 }
5157
5258 memmove (& cfg -> attrs [i + 1 ], & cfg -> attrs [i ],
53- (cfg -> size - i )* sizeof (struct cfg_attr ));
59+ (cfg -> size - i )* sizeof (struct lfs_cfg_attr ));
5460 cfg -> attrs [i ].key = key ;
5561 cfg -> attrs [i ].val = val ;
5662 cfg -> len += 1 ;
5763 return 0 ;
5864}
5965
60- static bool cfg_match (FILE * f , const char * matches ) {
66+ static bool lfs_cfg_match (FILE * f , const char * matches ) {
6167 char c = getc (f );
6268 ungetc (c , f );
6369
@@ -70,11 +76,11 @@ static bool cfg_match(FILE *f, const char *matches) {
7076 return false;
7177}
7278
73- int cfg_create ( cfg_t * cfg , const char * filename ) {
79+ int lfs_cfg_create ( lfs_cfg_t * cfg , const char * filename ) {
7480 // start with some initial space
7581 cfg -> len = 0 ;
7682 cfg -> size = 4 ;
77- cfg -> attrs = malloc (cfg -> size * sizeof (struct cfg_attr ));
83+ cfg -> attrs = malloc (cfg -> size * sizeof (struct lfs_cfg_attr ));
7884
7985 cfg -> blen = 0 ;
8086 cfg -> bsize = 16 ;
@@ -88,50 +94,50 @@ int cfg_create(cfg_t *cfg, const char *filename) {
8894 while (!feof (f )) {
8995 int err ;
9096
91- while (cfg_match (f , " \t\v\f" )) {
97+ while (lfs_cfg_match (f , " \t\v\f" )) {
9298 fgetc (f );
9399 }
94100
95- if (!cfg_match (f , "#\r\n" )) {
101+ if (!lfs_cfg_match (f , "#\r\n" )) {
96102 unsigned key = cfg -> blen ;
97- while (!cfg_match (f , " \t\v\f:#" ) && !feof (f )) {
98- if ((err = cfg_buffer (cfg , fgetc (f )))) {
103+ while (!lfs_cfg_match (f , " \t\v\f:#" ) && !feof (f )) {
104+ if ((err = lfs_cfg_buffer (cfg , fgetc (f )))) {
99105 return err ;
100106 }
101107 }
102- if ((err = cfg_buffer (cfg , 0 ))) {
108+ if ((err = lfs_cfg_buffer (cfg , 0 ))) {
103109 return err ;
104110 }
105111
106- while (cfg_match (f , " \t\v\f" )) {
112+ while (lfs_cfg_match (f , " \t\v\f" )) {
107113 fgetc (f );
108114 }
109115
110- if (cfg_match (f , ":" )) {
116+ if (lfs_cfg_match (f , ":" )) {
111117 fgetc (f );
112- while (cfg_match (f , " \t\v\f" )) {
118+ while (lfs_cfg_match (f , " \t\v\f" )) {
113119 fgetc (f );
114120 }
115121
116122 unsigned val = cfg -> blen ;
117- while (!cfg_match (f , " \t\v\f#\r\n" ) && !feof (f )) {
118- if ((err = cfg_buffer (cfg , fgetc (f )))) {
123+ while (!lfs_cfg_match (f , " \t\v\f#\r\n" ) && !feof (f )) {
124+ if ((err = lfs_cfg_buffer (cfg , fgetc (f )))) {
119125 return err ;
120126 }
121127 }
122- if ((err = cfg_buffer (cfg , 0 ))) {
128+ if ((err = lfs_cfg_buffer (cfg , 0 ))) {
123129 return err ;
124130 }
125131
126- if ((err = cfg_attr (cfg , key , val ))) {
132+ if ((err = lfs_cfg_attr (cfg , key , val ))) {
127133 return err ;
128134 }
129135 } else {
130136 cfg -> blen = key ;
131137 }
132138 }
133139
134- while (!cfg_match (f , "\r\n" ) && !feof (f )) {
140+ while (!lfs_cfg_match (f , "\r\n" ) && !feof (f )) {
135141 fgetc (f );
136142 }
137143 fgetc (f );
@@ -140,15 +146,15 @@ int cfg_create(cfg_t *cfg, const char *filename) {
140146 return 0 ;
141147}
142148
143- void cfg_destroy ( cfg_t * cfg ) {
149+ void lfs_cfg_destroy ( lfs_cfg_t * cfg ) {
144150 free (cfg -> attrs );
145151}
146152
147- bool cfg_has ( cfg_t * cfg , const char * key ) {
148- return cfg_get (cfg , key , 0 );
153+ bool lfs_cfg_has ( lfs_cfg_t * cfg , const char * key ) {
154+ return lfs_cfg_get (cfg , key , 0 );
149155}
150156
151- const char * cfg_get ( cfg_t * cfg , const char * key , const char * def ) {
157+ const char * lfs_cfg_get ( lfs_cfg_t * cfg , const char * key , const char * def ) {
152158 // binary search for attribute
153159 int lo = 0 ;
154160 int hi = cfg -> len - 1 ;
@@ -168,8 +174,8 @@ const char *cfg_get(cfg_t *cfg, const char *key, const char *def) {
168174 return def ;
169175}
170176
171- ssize_t cfg_geti ( cfg_t * cfg , const char * key , ssize_t def ) {
172- const char * val = cfg_get (cfg , key , 0 );
177+ ssize_t lfs_cfg_geti ( lfs_cfg_t * cfg , const char * key , ssize_t def ) {
178+ const char * val = lfs_cfg_get (cfg , key , 0 );
173179 if (!val ) {
174180 return def ;
175181 }
@@ -179,8 +185,8 @@ ssize_t cfg_geti(cfg_t *cfg, const char *key, ssize_t def) {
179185 return (end == val ) ? def : res ;
180186}
181187
182- size_t cfg_getu ( cfg_t * cfg , const char * key , size_t def ) {
183- const char * val = cfg_get (cfg , key , 0 );
188+ size_t lfs_cfg_getu ( lfs_cfg_t * cfg , const char * key , size_t def ) {
189+ const char * val = lfs_cfg_get (cfg , key , 0 );
184190 if (!val ) {
185191 return def ;
186192 }
0 commit comments