This allows you to specify an array of config_par, ending it with NULL name, so that you don't have to calculate the number of entries manually.
Alon --- --- suspend.org/configparser.h 2007-05-13 20:53:13.000000000 +0300 +++ suspend.work/configparser.h 2007-08-04 04:58:08.000000000 +0300 @@ -15,13 +15,13 @@ #define MAX_STR_LEN 256 struct config_par { - char *name; + char *name; /* NULL on last record */ char *fmt; void *ptr; unsigned int len; }; -int parse(char *my_name, char *file_name, int parc, struct config_par *parv); +int parse(char *my_name, char *file_name, struct config_par *parv); void usage(char *my_name, struct option options[], const char *short_options); --- suspend.org/configparser.c 2007-05-13 20:53:13.000000000 +0300 +++ suspend.work/configparser.c 2007-08-04 04:57:50.000000000 +0300 @@ -26,7 +27,7 @@ * note that a non-present config file is not considered an error here */ -int parse(char *my_name, char *file_name, int parc, struct config_par *parv) +int parse(char *my_name, char *file_name, struct config_par *parv) { char *str, *dst, *fmt, buf[MAX_STR_LEN]; struct stat stat_buf; @@ -61,7 +62,7 @@ int parse(char *my_name, char *file_name if (!*str) continue; /* Compare with parameter names */ - for (j = 0; j < parc; j++) { + for (j = 0;parv[j].name != NULL;j++) { k = strlen(parv[j].name); if (!strncmp(parv[j].name, str, k)) { if (!parv[j].ptr) @@ -94,7 +95,7 @@ int parse(char *my_name, char *file_name } } } - if (j >= parc) + if (parv[j].name == NULL) error = -EINVAL; } while (!error); fclose(file); --- suspend.org/swsusp.h 2007-07-29 21:30:27.000000000 +0300 +++ suspend.work/swsusp.h 2007-08-04 04:59:27.000000000 +0300 @@ -198,22 +198,6 @@ struct buf_block { #define SUSPEND_SWAPPINESS 100 -#define GEN_PARAM 10 - -#ifdef CONFIG_COMPRESS -#define COMPRESS_PARAM 1 -#else -#define COMPRESS_PARAM 0 -#endif - -#ifdef CONFIG_ENCRYPT -#define ENCRYPT_PARAM 2 -#else -#define ENCRYPT_PARAM 0 -#endif - -#define PARAM_NO (GEN_PARAM + COMPRESS_PARAM + ENCRYPT_PARAM) - #define ABORT_KEY_CODE 127 #define ABORT_KEY_NAME "backspace" #define REBOOT_KEY_CODE 'r' --- suspend.org/resume.c 2007-05-13 20:53:13.000000000 +0300 +++ suspend.work/resume.c 2007-08-04 15:19:57.000000000 +0300 @@ -54,7 +50,7 @@ static char decrypt; static struct splash splash; -static struct config_par parameters[PARAM_NO] = { +static struct config_par parameters[] = { { .name = "snapshot device", .fmt = "%s", @@ -125,5 +124,11 @@ static struct config_par parameters[PARA .ptr = NULL, }, + { + .name = NULL, + .fmt = NULL, + .ptr = NULL, + .len = 0, + } }; static unsigned int page_size; @@ -783,7 +837,7 @@ static inline int get_config(int argc, c return -EINVAL; } } - error = parse("resume", conf_name, PARAM_NO, parameters); + error = parse("resume", conf_name, parameters); if (error) { fprintf(stderr, "resume: Could not parse config file\n"); return error; --- suspend.org/suspend.c 2007-07-29 21:30:27.000000000 +0300 +++ suspend.work/suspend.c 2007-08-04 15:19:16.000000000 +0300 @@ -93,7 +94,7 @@ static struct vt_mode orig_vtm; static int vfd; char *my_name; -static struct config_par parameters[PARAM_NO] = { +static struct config_par parameters[] = { { .name = "snapshot device", .fmt = "%s", @@ -161,4 +162,10 @@ static struct config_par parameters[PARA .len = SHUTDOWN_LEN, }, + { + .name = NULL, + .fmt = NULL, + .ptr = NULL, + .len = 0, + } }; @@ -1265,7 +1323,7 @@ static inline int get_config(int argc, c s2ram = !s2ram; #endif - error = parse(my_name, conf_name, PARAM_NO, parameters); + error = parse(my_name, conf_name, parameters); if (error) { fprintf(stderr, "%s: Could not parse config file\n", my_name); return error; ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Suspend-devel mailing list Suspend-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/suspend-devel