1. Move main() out of s2ram.c into s2ram-main.c, this will enable s2ram.o to be included in both s2ram and s2both without recompilation.
2. Split whitelist.c into whitelist.h/whitelist.c as including .c is none standard/unsupported. --- diff -urNp suspend.org/s2ram.c suspend-0.6_beta1/s2ram.c --- suspend.org/s2ram.c 2007-06-17 23:51:30.000000000 +0300 +++ suspend-0.6_beta1/s2ram.c 2007-08-02 17:36:49.000000000 +0300 @@ -42,82 +43,3 @@ int s2ram_generic_do(void) return ret; } -#ifndef CONFIG_BOTH -int main(int argc, char *argv[]) -{ - int i, ret = 0; - int active_console = -1; - struct option options[] = { - { - "help\0\tthis text.", - no_argument, NULL, 'h' - }, - { - "test\0\ttest if the machine is in the database.", - no_argument, NULL, 'n' - }, - { - "identify\0prints a string that identifies the machine.", - no_argument, NULL, 'i' - }, - HACKS_LONG_OPTS - { NULL, 0, NULL, 0 } - }; - const char *optstring = "hni" "fspmrva:"; - - while ((i = getopt_long(argc, argv, optstring, options, NULL)) != -1) { - switch (i) { - case 'h': - usage("s2ram", options, optstring); - exit(0); - case 'i': - identify_machine(); - exit(0); - case 'n': - ret = machine_known(); - exit(ret); - case '?': - usage("s2ram", options, optstring); - exit(1); - break; - default: - s2ram_add_flag(i,optarg); - break; - } - } - - ret = s2ram_is_supported(); - - if (ret == S2RAM_UNKNOWN) { - printf("Machine is unknown.\n"); - identify_machine(); - goto out; - } - - if (ret == S2RAM_NOFB) - printf("This machine can only suspend without framebuffer.\n"); - - if (ret) - goto out; - - /* switch to console 1 first, since we might be in X */ - active_console = fgconsole(); - printf("Switching from vt%d to vt1\n", active_console); - chvt(1); - - ret = s2ram_hacks(); - if (ret) - goto out; - ret = s2ram_do(); - s2ram_resume(); - - out: - /* if we switched consoles before suspend, switch back */ - if (active_console > 0) { - printf("switching back to vt%d\n", active_console); - chvt(active_console); - } - - return ret; -} -#endif iff -urNp suspend.org/s2ram-main.c suspend-0.6_beta1/s2ram-main.c --- suspend.org/s2ram-main.c 1970-01-01 02:00:00.000000000 +0200 +++ suspend-0.6_beta1/s2ram-main.c 2007-08-02 17:36:35.000000000 +0300 @@ -0,0 +1,97 @@ +/* + * Suspend-to-RAM + * + * Copyright 2006 Pavel Machek <[EMAIL PROTECTED]> + * Distribute under GPLv2. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <getopt.h> +#include <errno.h> +#include <string.h> + +#ifndef S2RAM +#define S2RAM +#endif +#include "vt.h" +#include "s2ram.h" +#include "configparser.h" + +int main(int argc, char *argv[]) +{ + int i, ret = 0; + int active_console = -1; + struct option options[] = { + { + "help\0\tthis text.", + no_argument, NULL, 'h' + }, + { + "test\0\ttest if the machine is in the database.", + no_argument, NULL, 'n' + }, + { + "identify\0prints a string that identifies the machine.", + no_argument, NULL, 'i' + }, + HACKS_LONG_OPTS + { NULL, 0, NULL, 0 } + }; + const char *optstring = "hni" "fspmrva:"; + + while ((i = getopt_long(argc, argv, optstring, options, NULL)) != -1) { + switch (i) { + case 'h': + usage("s2ram", options, optstring); + exit(0); + case 'i': + identify_machine(); + exit(0); + case 'n': + ret = machine_known(); + exit(ret); + case '?': + usage("s2ram", options, optstring); + exit(1); + break; + default: + s2ram_add_flag(i,optarg); + break; + } + } + + ret = s2ram_is_supported(); + + if (ret == S2RAM_UNKNOWN) { + printf("Machine is unknown.\n"); + identify_machine(); + goto out; + } + + if (ret == S2RAM_NOFB) + printf("This machine can only suspend without framebuffer.\n"); + + if (ret) + goto out; + + /* switch to console 1 first, since we might be in X */ + active_console = fgconsole(); + printf("Switching from vt%d to vt1\n", active_console); + chvt(1); + + ret = s2ram_hacks(); + if (ret) + goto out; + ret = s2ram_do(); + s2ram_resume(); + + out: + /* if we switched consoles before suspend, switch back */ + if (active_console > 0) { + printf("switching back to vt%d\n", active_console); + chvt(active_console); + } + + return ret; +} diff -urNp suspend.org/s2ram-x86.c suspend-0.6_beta1/s2ram-x86.c --- suspend.org/s2ram-x86.c 2007-08-03 00:33:20.000000000 +0300 +++ suspend-0.6_beta1/s2ram-x86.c 2007-08-02 23:50:33.000000000 +0300 @@ -16,7 +17,8 @@ #include "vbetool/vbetool.h" #include "vt.h" #include "s2ram.h" #include "configparser.h" +#include "whitelist.h" /* From dmidecode.c */ void dmi_scan(void); @@ -36,19 +39,6 @@ char bios_version[1024], sys_vendor[1024 #define S2RAM_NOFB 126 #define S2RAM_UNKNOWN 127 -/* flags for the whitelist */ -#define S3_BIOS 0x01 /* machine needs acpi_sleep=s3_bios */ -#define S3_MODE 0x02 /* machine needs acpi_sleep=s3_mode */ -#define VBE_SAVE 0x04 /* machine needs "vbetool save / restore" */ -#define VBE_POST 0x08 /* machine needs "vbetool post" */ -#define RADEON_OFF 0x10 /* machine needs "radeontool light off" */ -#define UNSURE 0x20 /* unverified entries from acpi-support 0.59 */ -#define NOFB 0x40 /* must not use a frame buffer */ -#define VBE_MODE 0x80 /* machine needs "vbetool vbemode get / set" */ -#define PCI_SAVE 0x100 /* we need to save the VGA PCI registers */ - -#include "whitelist.c" - void identify_machine(void) { if (!dmi_scanned) { diff -urNp suspend.org/whitelist.c suspend-0.6_beta1/whitelist.c --- suspend.org/whitelist.c 2007-08-03 00:33:21.000000000 +0300 +++ suspend-0.6_beta1/whitelist.c 2007-08-02 23:53:08.000000000 +0300 @@ -3,14 +3,8 @@ * and all the workarounds */ -struct machine_entry -{ - const char *sys_vendor; - const char *sys_product; - const char *sys_version; - const char *bios_version; - unsigned int flags; -}; +#include <stdlib.h> +#include "whitelist.h" struct machine_entry whitelist[] = { { "IBM", "", "ThinkPad X32", "", RADEON_OFF|S3_BIOS|S3_MODE }, diff -urNp suspend.org/whitelist.h suspend-0.6_beta1/whitelist.h --- suspend.org/whitelist.h 1970-01-01 02:00:00.000000000 +0200 +++ suspend-0.6_beta1/whitelist.h 2007-08-02 23:50:04.000000000 +0300 @@ -0,0 +1,26 @@ +/* whitelist.h + * whitelist of machines that are known to work somehow + * and all the workarounds + */ + +/* flags for the whitelist */ +#define S3_BIOS 0x01 /* machine needs acpi_sleep=s3_bios */ +#define S3_MODE 0x02 /* machine needs acpi_sleep=s3_mode */ +#define VBE_SAVE 0x04 /* machine needs "vbetool save / restore" */ +#define VBE_POST 0x08 /* machine needs "vbetool post" */ +#define RADEON_OFF 0x10 /* machine needs "radeontool light off" */ +#define UNSURE 0x20 /* unverified entries from acpi-support 0.59 */ +#define NOFB 0x40 /* must not use a frame buffer */ +#define VBE_MODE 0x80 /* machine needs "vbetool vbemode get / set" */ +#define PCI_SAVE 0x100 /* we need to save the VGA PCI registers */ + +struct machine_entry +{ + const char *sys_vendor; + const char *sys_product; + const char *sys_version; + const char *bios_version; + unsigned int flags; +}; + +extern struct machine_entry whitelist[]; --- suspend.org/Makefile 2007-07-29 21:30:27.000000000 +0300 +++ suspend-0.6_beta1/Makefile 2007-08-03 01:14:35.000000000 +0300 @@ -16,8 +16,8 @@ LD_FLAGS=-L/usr/local/lib S2RAM_LD_FLAGS = $(LD_FLAGS) SWSUSP_LD_FLAGS = $(LD_FLAGS) ifeq ($(ARCH), x86) -S2RAM_OBJ += s2ram-x86.o dmidecode.o radeontool.o vbetool/vbetool.o +S2RAM_OBJ += s2ram-x86.o whitelist.o dmidecode.o radeontool.o vbetool/vbetool.o S2RAM_LD_FLAGS += -lx86 -lpci -lz else ifeq ($(ARCH), ppc) S2RAM_OBJ += s2ram-ppc.o @@ -84,7 +84,7 @@ clean: rm -f $(BINARIES) suspend-keygen suspend.keys *.o vbetool/*.o #### Rules for objects -s2ram-x86.o: %.o : %.c %.h whitelist.c +s2ram-x86.o: %.o : %.c %.h $(CC) $(CC_FLAGS) -c $< -o $@ s2ram-both.o: s2ram.c s2ram.h @@ -105,7 +105,7 @@ dmidecode.o radeontool.o : %.o: %.c s2disk: $(SWSUSP_OBJ) suspend.c $(CC) -g $(CC_FLAGS) $^ -o $@ $(SWSUSP_LD_FLAGS) -s2ram: $(S2RAM_OBJ) s2ram.c +s2ram: $(S2RAM_OBJ) s2ram.c s2ram-main.c $(CC) -g $(CC_FLAGS) -include s2ram-$(ARCH).h $^ -o $@ $(S2RAM_LD_FLAGS) s2both: $(SWSUSP_OBJ) $(S2RAM_OBJ) s2ram-both.o suspend.c ------------------------------------------------------------------------- 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