summaryrefslogtreecommitdiffstats
path: root/test.c
diff options
context:
space:
mode:
authornima <nima@abc39116-655e-4be6-ad55-d661dc543056>2008-07-01 06:01:21 +0000
committernima <nima@abc39116-655e-4be6-ad55-d661dc543056>2008-07-01 06:01:21 +0000
commiteb7958574ce98601433022d7d23343025c1e34b8 (patch)
tree2f9f0003beaff39d40a0f836ee035de330cea4de /test.c
parent4f5bfc68e416a7d1e6264e43278fe9b9df684eed (diff)
downloadpython-dmidecode-eb7958574ce98601433022d7d23343025c1e34b8.tar.gz
python-dmidecode-eb7958574ce98601433022d7d23343025c1e34b8.tar.xz
python-dmidecode-eb7958574ce98601433022d7d23343025c1e34b8.zip
Project progressing along excellently. The python module is now functional and
has as many methods as the --type option takes. Next is to expand and harness the code around the `--string' option. git-svn-id: svn://svn.autonomy.net.au/python-dmidecode@3 abc39116-655e-4be6-ad55-d661dc543056
Diffstat (limited to 'test.c')
-rw-r--r--test.c109
1 files changed, 9 insertions, 100 deletions
diff --git a/test.c b/test.c
index 1b86b2f..b200316 100644
--- a/test.c
+++ b/test.c
@@ -1,3 +1,5 @@
+#include <Python.h>
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -14,9 +16,8 @@
#define EFI_NOT_FOUND (-1)
#define EFI_NO_SMBIOS (-2)
-#include <Python.h>
-#include "catsprintf.h"
#include "global.h"
+#include "catsprintf.h"
extern void dmi_dump(struct dmi_header *h, const char *prefix);
extern void dmi_decode(struct dmi_header *h, u16 ver);
@@ -25,103 +26,11 @@ extern void to_dmi_header(struct dmi_header *h, u8 *data);
extern void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem);
extern int smbios_decode(u8 *buf, const char *devmem);
extern int legacy_decode(u8 *buf, const char *devmem);
+extern int submain(int argc, char * const argv[]);
-
-
-int main(int argc, char * const argv[])
-{
- bzero(buffer, 50000);
-
- int ret=0; /* Returned value */
- int found=0;
- size_t fp;
- int efi;
- u8 *buf;
-
- if(sizeof(u8)!=1 || sizeof(u16)!=2 || sizeof(u32)!=4 || '\0'!=0)
- {
- fprintf(stderr, "%s: compiler incompatibility\n", argv[0]);
- exit(255);
- }
-
- /* Set default option values */
- opt.devmem=DEFAULT_MEM_DEV;
- opt.flags=0;
-
- if(parse_command_line(argc, argv)<0)
- {
- ret=2;
- goto exit_free;
- }
-
- if(opt.flags & FLAG_HELP)
- {
- print_help();
- goto exit_free;
- }
-
- if(opt.flags & FLAG_VERSION)
- {
- printf("%s\n", VERSION);
- goto exit_free;
- }
-
- if(!(opt.flags & FLAG_QUIET))
- printf("# dmidecode %s\n", VERSION);
-
- /* First try EFI (ia64, Intel-based Mac) */
- efi=address_from_efi(&fp);
- switch(efi)
- {
- case EFI_NOT_FOUND:
- goto memory_scan;
- case EFI_NO_SMBIOS:
- ret=1;
- goto exit_free;
- }
-
- if((buf=mem_chunk(fp, 0x20, opt.devmem))==NULL)
- {
- ret=1;
- goto exit_free;
- }
-
- if(smbios_decode(buf, opt.devmem))
- found++;
- goto done;
-
-memory_scan:
- /* Fallback to memory scan (x86, x86_64) */
- if((buf=mem_chunk(0xF0000, 0x10000, opt.devmem))==NULL)
- {
- ret=1;
- goto exit_free;
- }
-
- for(fp=0; fp<=0xFFF0; fp+=16)
- {
- if(memcmp(buf+fp, "_SM_", 4)==0 && fp<=0xFFE0)
- {
- if(smbios_decode(buf+fp, opt.devmem))
- found++;
- fp+=16;
- }
- else if(memcmp(buf+fp, "_DMI_", 5)==0)
- {
- if (legacy_decode(buf+fp, opt.devmem))
- found++;
- }
- }
-
-done:
- free(buf);
-
- if(!found && !(opt.flags & FLAG_QUIET))
- printf("# No SMBIOS nor DMI entry point found, sorry.\n");
-
-exit_free:
- free(opt.type);
-
- printf("%s\n", buffer);
- return ret;
+int main(int argc, char * const argv[]) {
+ bzero(buffer, 50000);
+ int r = submain(argc, argv);
+ printf("%s", buffer);
+ return r;
}