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
[email protected]
https://lists.sourceforge.net/lists/listinfo/suspend-devel