From 0c0b00ab8086c07600680d41e2f8feefe0f8f150 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 7 Dec 2000 23:16:19 +0000 Subject: first draft can detect your cdrom drives soon will launch the stage2 --- mdk-stage1/tools.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 mdk-stage1/tools.c (limited to 'mdk-stage1/tools.c') diff --git a/mdk-stage1/tools.c b/mdk-stage1/tools.c new file mode 100644 index 000000000..e07fcd347 --- /dev/null +++ b/mdk-stage1/tools.c @@ -0,0 +1,71 @@ +/* + * Guillaume Cottenceau (gc@mandrakesoft.com) + * + * Copyright 2000 MandrakeSoft + * + * This software may be freely redistributed under the terms of the GNU + * public license. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +/* + * Portions from Erik Troan (ewt@redhat.com) + * + * Copyright 1996 Red Hat Software + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "stage1.h" +#include "log.h" + +#include "tools.h" + +int total_memory(void) +{ + int fd; + int i; + char buf[4096]; + char * memtotal_tag = "MemTotal:"; + int memtotal = 0; + + fd = open("/proc/meminfo", O_RDONLY); + if (fd == -1) + fatal_error("could not open /proc/meminfo"); + + i = read(fd, buf, sizeof(buf)); + if (i < 0) + fatal_error("could not read /proc/meminfo"); + + close(fd); + buf[i] = 0; + + i = 0; + while (buf[i] != 0 && strncmp(&buf[i], memtotal_tag, strlen(memtotal_tag))) + i++; + + while (buf[i] != 0 && buf[i] != '\n' && !isdigit(buf[i])) + i++; + + if (buf[i] == 0 || buf[i] == '\n') + fatal_error("could not read MemTotal"); + + while (buf[i] != 0 && isdigit(buf[i])) { + memtotal = (memtotal * 10) + (buf[i] - '0'); + i++; + } + + log_message("%s %d kB", memtotal_tag, memtotal); + + return memtotal; +} -- cgit v1.2.1