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

Reply via email to