diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2007-08-15 17:18:27 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2007-08-15 17:18:27 +0000 |
commit | 7e41682e4af1e94d0d11c9199f8676d3f334b03f (patch) | |
tree | 42f420c849ec4b2c2f3a7cad25bba05c895062ff | |
parent | 28429ab05fb064779a64969e961776260c0bef0b (diff) | |
download | suspend-utils-7e41682e4af1e94d0d11c9199f8676d3f334b03f.tar.gz |
Patch from Alon Bar-Lev <alon.barlev@gmail.com> to make the array of parameters
NULL-retminated.
-rw-r--r-- | config_parser.c | 6 | ||||
-rw-r--r-- | config_parser.h | 4 | ||||
-rw-r--r-- | resume.c | 10 | ||||
-rw-r--r-- | suspend.c | 10 | ||||
-rw-r--r-- | swsusp.h | 16 |
5 files changed, 21 insertions, 25 deletions
diff --git a/config_parser.c b/config_parser.c index 23fdce4..74dd01d 100644 --- a/config_parser.c +++ b/config_parser.c @@ -26,7 +26,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 +61,7 @@ int parse(char *my_name, char *file_name, int parc, struct config_par *parv) 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 +94,7 @@ int parse(char *my_name, char *file_name, int parc, struct config_par *parv) } } } - if (j >= parc) + if (parv[j].name == NULL) error = -EINVAL; } while (!error); fclose(file); diff --git a/config_parser.h b/config_parser.h index 9b5814e..f130510 100644 --- a/config_parser.h +++ b/config_parser.h @@ -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); @@ -58,7 +58,7 @@ static int use_platform_suspend; static struct splash splash; -static struct config_par parameters[PARAM_NO] = { +static struct config_par parameters[] = { { .name = "snapshot device", .fmt = "%s", @@ -130,6 +130,12 @@ static struct config_par parameters[PARAM_NO] = { .fmt = "%s", .ptr = NULL, }, + { + .name = NULL, + .fmt = NULL, + .ptr = NULL, + .len = 0, + } }; static unsigned int page_size; @@ -783,7 +789,7 @@ static inline int get_config(int argc, char *argv[]) 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; @@ -93,7 +93,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", @@ -167,6 +167,12 @@ static struct config_par parameters[PARAM_NO] = { .ptr = shutdown_method_value, .len = SHUTDOWN_LEN, }, + { + .name = NULL, + .fmt = NULL, + .ptr = NULL, + .len = 0, + } }; static unsigned int page_size; @@ -1265,7 +1271,7 @@ static inline int get_config(int argc, char *argv[]) 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; @@ -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' |