Bootvorgang des Installers weitergebracht.

git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@343 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
ms
2006-11-08 22:30:51 +00:00
parent 0153429794
commit 3d6e120285
11 changed files with 577 additions and 401 deletions

View File

@@ -7,8 +7,6 @@
* Contains some functs for scanning /proc for ide info on CDROMS and
* harddisks.
*
* $Id: ide.c,v 1.4 2003/12/11 11:25:53 riddles Exp $
*
*/
#include "install.h"

View File

@@ -6,8 +6,6 @@
* (c) Lawrence Manning, 2001
* Contains main entry point, and misc functions.
*
* $Id: main.c,v 1.63.2.57 2005/09/25 19:57:46 gespinasse Exp $
*
*/
#include "install.h"
@@ -24,26 +22,8 @@ char **ctr;
char *pcmcia = NULL;
extern char url[STRING_SIZE];
extern char *bz_tr[];
extern char *cs_tr[];
extern char *da_tr[];
extern char *en_tr[];
extern char *es_tr[];
extern char *fi_tr[];
extern char *fr_tr[];
extern char *hu_tr[];
extern char *la_tr[];
extern char *nl_tr[];
extern char *de_tr[];
extern char *tr_tr[];
extern char *it_tr[];
extern char *el_tr[];
extern char *pl_tr[];
extern char *pt_tr[];
extern char *so_tr[];
extern char *sv_tr[];
extern char *no_tr[];
extern char *vi_tr[];
int main(int argc, char *argv[])
{
@@ -51,10 +31,6 @@ int main(int argc, char *argv[])
char *langnames[] = { "English", NULL };
char *shortlangnames[] = { "en", NULL };
char **langtrs[] = { en_tr, NULL };
#elifdef LANG_ALL
char *langnames[] = { "Brasil", "Cestina", "Dansk", "Deutsch", "English", "Español", "Français", "Hellenic", "Italiano", "Spanish Latino", "Magyar", "Nederlands", "Norsk", "Polski", "Português", "Soomali", "Suomi", "Svenska", "Türkçe", "Tieng Viet", NULL };
char *shortlangnames[] = { "bz", "cs", "da", "de", "en", "es", "fr", "el", "it", "la", "hu", "nl", "no", "pl", "pt", "so", "fi", "sv", "tr", "vi", NULL };
char **langtrs[] = { bz_tr, cs_tr, da_tr, de_tr, en_tr, es_tr, fr_tr, el_tr, it_tr, la_tr, hu_tr, nl_tr, no_tr, pl_tr, pt_tr, so_tr, fi_tr, sv_tr, tr_tr, vi_tr, NULL };
#else
char *langnames[] = { "Deutsch", "English", NULL };
char *shortlangnames[] = { "de", "en", NULL };
@@ -162,29 +138,13 @@ int main(int argc, char *argv[])
/* No need to ask. "choice" already has the index for English */
#else
rc = newtWinMenu("Language selection",
"Select the language you wish to use for the " NAME ".", 50, 5, 5, 8,
langnames, &choice, "Ok", NULL);
"Select the language you wish to use for your " NAME ".", 50, 5, 5, 8,
langnames, &choice, "OK", NULL);
#endif
ctr = langtrs[choice];
strcpy(shortlangname, shortlangnames[choice]);
if (strcmp(shortlangname, "el") == 0)
mysystem("/bin/setfont iso07u-16");
else if (strcmp(shortlangname, "pt") == 0)
mysystem("/bin/setfont lat1-16");
else if (strcmp(shortlangname, "bz") == 0)
mysystem("/bin/setfont lat1-16");
else if (strcmp(shortlangname, "cs") == 0)
mysystem("/bin/setfont lat2-16");
else if (strcmp(shortlangname, "hu") == 0)
mysystem("/bin/setfont lat2-16");
else if (strcmp(shortlangname, "pl") == 0)
mysystem("/bin/setfont lat2-16");
else if (strcmp(shortlangname, "tr") == 0)
mysystem("/bin/setfont lat5-16");
else if (strcmp(shortlangname, "vi") == 0)
mysystem("/bin/setfont viscii10-8x16");
else
mysystem("/bin/setfont lat0-16");
mysystem("/bin/setfont lat0-16");
newtDrawRootText(14, 0, NAME " v" VERSION " - " SLOGAN );
newtPushHelpLine(ctr[TR_HELPLINE]);

View File

@@ -17,8 +17,6 @@
*
* Copyright 2002: Mark Wormgoor <mark@wormgoor.com>
*
* $Id: usb.c,v 1.9.2.3 2004/11/16 22:48:43 alanh Exp $
*
*/
#include "install.h"
@@ -37,23 +35,22 @@ int initialize_usb() {
ehcihcd = 0;
}
if (usbohci) {
mysystem("/sbin/rmmod usb-ohci");
mysystem("/sbin/rmmod ohci-hcd");
usbohci = 0;
}
if (usbuhci) {
mysystem("/sbin/rmmod usb-uhci");
mysystem("/sbin/rmmod uhci-hcd");
usbuhci = 0;
}
if (mysystem("/sbin/modprobe ehci-hcd") == 0)
ehcihcd = 1;
if (mysystem("/sbin/modprobe usb-ohci") == 0)
if (mysystem("/sbin/modprobe ohci-hcd") == 0)
usbohci = 1;
if (mysystem("/sbin/modprobe usb-uhci") == 0)
if (mysystem("/sbin/modprobe uhci-hcd") == 0)
usbuhci = 1;
mysystem("/sbin/modprobe hid");
mysystem("/sbin/modprobe keybdev");
mysystem("/sbin/modprobe usbhid");
return 0;
}
@@ -79,17 +76,17 @@ int write_usb_modules_conf() {
if (usbohci) {
if (index)
fprintf(handle,"alias usb-controller%d usb-ohci\n",index);
fprintf(handle,"alias usb-controller%d ohci-hcd\n",index);
else
fprintf(handle,"alias usb-controller usb-ohci\n");
fprintf(handle,"alias usb-controller ohci-hcd\n");
index++;
}
if (usbuhci) {
if (index)
fprintf(handle,"alias usb-controller%d usb-uhci\n",index);
fprintf(handle,"alias usb-controller%d uhci-hcd\n",index);
else
fprintf(handle,"alias usb-controller usb-uhci\n");
fprintf(handle,"alias usb-controller uhci-hcd\n");
index++;
}
fclose(handle);

View File

@@ -1,327 +1,327 @@
/* SmoothWall libsmooth.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains library functions.
*
* $Id: main.c,v 1.6.2.9 2005/12/09 22:31:41 franck78 Exp $
*
*/
#include "libsmooth.h"
extern FILE *flog;
extern char *mylog;
extern char **ctr;
/* reboot(). reboots. */
void reboot(void)
{
mysystem("/etc/halt");
}
/* stripnl(). Replaces \n with \0 */
void stripnl(char *s)
{
char *t = strchr(s, '\n');
if (t) *t = '\0';
}
/* Little wrapper. */
int mysystem(char *command)
{
char mycommand[STRING_SIZE];
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: %s\n", command);
return system(mycommand);
}
void errorbox(char *message)
{
newtWinMessage(ctr[TR_ERROR], ctr[TR_OK], message);
}
void statuswindow(int width, int height, char *title, char *text, ...)
{
newtComponent t, f;
char *buf = NULL;
int size = 0;
int i = 0;
va_list args;
va_start(args, text);
do {
size += 1000;
if (buf) free(buf);
buf = malloc(size);
i = vsnprintf(buf, size, text, args);
} while (i == size);
va_end(args);
newtCenteredWindow(width, height, title);
t = newtTextbox(1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP);
newtTextboxSetText(t, buf);
f = newtForm(NULL, NULL, 0);
free(buf);
newtFormAddComponent(f, t);
newtDrawForm(f);
newtRefresh();
newtFormDestroy(f);
}
int runcommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
statuswindow(60, 4, title, message);
rc = mysystem(command);
newtPopWindow();
return rc;
}
int runhiddencommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
char mycommand[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
statuswindow(60, 4, title, message);
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: ***** HIDDEN *****\n");
rc = system(mycommand);
newtPopWindow();
return rc;
}
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, char *title, char *command,
int lines, char *text, ...)
{
newtComponent t, f, s;
char *buf = NULL;
int size = 0;
int i = 0;
va_list args;
int rc = 0;
FILE *p;
char buffer[STRING_SIZE];
int progress = 0;
char mycommand[STRING_SIZE];
va_start(args, text);
do {
size += 1000;
if (buf) free(buf);
buf = malloc(size);
i = vsnprintf(buf, size, text, args);
} while (i == size);
va_end(args);
newtCenteredWindow(width, height, title);
t = newtTextbox(1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP);
newtTextboxSetText(t, buf);
f = newtForm(NULL, NULL, 0);
free(buf);
newtFormAddComponent(f, t);
s = newtScale(1, 3, width - 2, lines);
newtScaleSet(s, progress);
newtFormAddComponent(f, s);
newtDrawForm(f);
newtRefresh();
snprintf(mycommand, STRING_SIZE, "%s 2>>%s", command, mylog);
fprintf(flog, "Running command: %s\n", command);
if (!(p = popen(command, "r")))
{
rc = 1;
goto EXIT;
}
setvbuf(p, NULL, _IOLBF, 255);
while (fgets(buffer, STRING_SIZE, p))
{
newtScaleSet(s, ++progress);
newtRefresh();
fprintf(flog, "%s", buffer);
}
rc = pclose(p);
EXIT:
newtFormDestroy(f);
newtPopWindow();
return rc;
}
int checkformodule(char *module)
{
FILE *file;
char buffer[STRING_SIZE];
int result = 0;
if (!(file = fopen("/proc/modules", "r")))
{
fprintf(flog, "Unable to open /proc/modules in checkformodule()\n");
return 0;
}
while (fgets(buffer, STRING_SIZE, file))
{
if (strncmp(buffer, module, strlen(module)) == 0)
{
if (buffer[strlen(module)] == ' ')
{
result = 1;
goto EXIT;
}
}
}
EXIT:
fclose(file);
return result;
}
int _replace_string(char string[], char *from, char *to)
{
int fromlen = strlen(from);
int tolen = strlen(to);
char *start, *p1, *p2;
for(start = string; *start != '\0'; start++)
{
p1 = from;
p2 = start;
while(*p1 != '\0')
{
if(*p1 != *p2)
break;
p1++;
p2++;
}
if(*p1 == '\0')
{
if(fromlen != tolen)
{
memmove(start + tolen, start + fromlen,
strlen(start + fromlen) + 1);
}
for(p1 = to; *p1 != '\0'; p1++)
*start++ = *p1;
return 1;
}
}
return 0;
}
int replace(char filename1[], char *from, char *to)
{
FILE *file1, *file2;
char filename2[1000];
char temp[1000];
int ret = 0;
/* Open the source and destination files */
strcpy (filename2, filename1);
strcat (filename2, ".new");
if (!(file1 = fopen (filename1, "r"))) return 1;
if (!(file2 = fopen (filename2, "w"))) {
fclose(file1);
return -1;
}
/* Start reading in lines */
while (fgets (temp, 1000, file1) != NULL) {
if (strlen(to) > 0) {
/* Replace string */
ret = _replace_string (temp, from, to);
/* Write string to new file */
fputs(temp, file2);
} else {
/* Remove string when to is NULL */
if (!strstr(temp, from))
fputs(temp, file2);
}
}
/* Close source and destination */
fclose (file1);
fclose (file2);
/* Move the file */
rename (filename2, filename1);
return (ret);
}
/* Include enabled languages */
#ifdef LANG_EN_ONLY
#include "lang_en.c"
#elifdef LANG_ALL
#include "lang_bz.c"
#include "lang_cs.c"
#include "lang_da.c"
#include "lang_de.c"
#include "lang_en.c"
#include "lang_es.c"
#include "lang_fi.c"
#include "lang_fr.c"
#include "lang_el.c"
#include "lang_it.c"
#include "lang_hu.c"
#include "lang_la.c"
#include "lang_nl.c"
#include "lang_no.c"
#include "lang_pl.c"
#include "lang_pt.c"
#include "lang_sk.c"
#include "lang_so.c"
#include "lang_sv.c"
#include "lang_tr.c"
#include "lang_vi.c"
#else
#include "lang_de.c"
#include "lang_en.c"
#endif
// returns a pointer to the actual running version number of IPCop.
// Successive updates increase effective version but not VERSION !
char g_title[STRING_SIZE] = "";
char* get_version(void) {
FILE *f_title;
if ((f_title = fopen ("/etc/issue", "r"))) {
fgets (g_title, STRING_SIZE, f_title);
fclose (f_title);
if (g_title[strlen(g_title) - 1] == '\n') g_title[strlen(g_title) - 1] = '\0';
} else {
sprintf (g_title, "%s v%s - %s", NAME, VERSION, SLOGAN);
}
return g_title;
}
/* SmoothWall libsmooth.
*
* This program is distributed under the terms of the GNU General Public
* Licence. See the file COPYING for details.
*
* (c) Lawrence Manning, 2001
* Contains library functions.
*
* $Id: main.c,v 1.6.2.9 2005/12/09 22:31:41 franck78 Exp $
*
*/
#include "libsmooth.h"
extern FILE *flog;
extern char *mylog;
extern char **ctr;
/* reboot(). reboots. */
void reboot(void)
{
mysystem("/etc/halt");
}
/* stripnl(). Replaces \n with \0 */
void stripnl(char *s)
{
char *t = strchr(s, '\n');
if (t) *t = '\0';
}
/* Little wrapper. */
int mysystem(char *command)
{
char mycommand[STRING_SIZE];
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: %s\n", command);
return system(mycommand);
}
void errorbox(char *message)
{
newtWinMessage(ctr[TR_ERROR], ctr[TR_OK], message);
}
void statuswindow(int width, int height, char *title, char *text, ...)
{
newtComponent t, f;
char *buf = NULL;
int size = 0;
int i = 0;
va_list args;
va_start(args, text);
do {
size += 1000;
if (buf) free(buf);
buf = malloc(size);
i = vsnprintf(buf, size, text, args);
} while (i == size);
va_end(args);
newtCenteredWindow(width, height, title);
t = newtTextbox(1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP);
newtTextboxSetText(t, buf);
f = newtForm(NULL, NULL, 0);
free(buf);
newtFormAddComponent(f, t);
newtDrawForm(f);
newtRefresh();
newtFormDestroy(f);
}
int runcommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
statuswindow(60, 4, title, message);
rc = mysystem(command);
newtPopWindow();
return rc;
}
int runhiddencommandwithstatus(char *command, char *message)
{
int rc;
char title[STRING_SIZE];
char mycommand[STRING_SIZE];
sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN);
statuswindow(60, 4, title, message);
snprintf(mycommand, STRING_SIZE, "%s >>%s 2>>%s", command, mylog, mylog);
fprintf(flog, "Running command: ***** HIDDEN *****\n");
rc = system(mycommand);
newtPopWindow();
return rc;
}
/* This one borrowed from redhat installer. */
int runcommandwithprogress(int width, int height, char *title, char *command,
int lines, char *text, ...)
{
newtComponent t, f, s;
char *buf = NULL;
int size = 0;
int i = 0;
va_list args;
int rc = 0;
FILE *p;
char buffer[STRING_SIZE];
int progress = 0;
char mycommand[STRING_SIZE];
va_start(args, text);
do {
size += 1000;
if (buf) free(buf);
buf = malloc(size);
i = vsnprintf(buf, size, text, args);
} while (i == size);
va_end(args);
newtCenteredWindow(width, height, title);
t = newtTextbox(1, 1, width - 2, height - 2, NEWT_TEXTBOX_WRAP);
newtTextboxSetText(t, buf);
f = newtForm(NULL, NULL, 0);
free(buf);
newtFormAddComponent(f, t);
s = newtScale(1, 3, width - 2, lines);
newtScaleSet(s, progress);
newtFormAddComponent(f, s);
newtDrawForm(f);
newtRefresh();
snprintf(mycommand, STRING_SIZE, "%s 2>>%s", command, mylog);
fprintf(flog, "Running command: %s\n", command);
if (!(p = popen(command, "r")))
{
rc = 1;
goto EXIT;
}
setvbuf(p, NULL, _IOLBF, 255);
while (fgets(buffer, STRING_SIZE, p))
{
newtScaleSet(s, ++progress);
newtRefresh();
fprintf(flog, "%s", buffer);
}
rc = pclose(p);
EXIT:
newtFormDestroy(f);
newtPopWindow();
return rc;
}
int checkformodule(char *module)
{
FILE *file;
char buffer[STRING_SIZE];
int result = 0;
if (!(file = fopen("/proc/modules", "r")))
{
fprintf(flog, "Unable to open /proc/modules in checkformodule()\n");
return 0;
}
while (fgets(buffer, STRING_SIZE, file))
{
if (strncmp(buffer, module, strlen(module)) == 0)
{
if (buffer[strlen(module)] == ' ')
{
result = 1;
goto EXIT;
}
}
}
EXIT:
fclose(file);
return result;
}
int _replace_string(char string[], char *from, char *to)
{
int fromlen = strlen(from);
int tolen = strlen(to);
char *start, *p1, *p2;
for(start = string; *start != '\0'; start++)
{
p1 = from;
p2 = start;
while(*p1 != '\0')
{
if(*p1 != *p2)
break;
p1++;
p2++;
}
if(*p1 == '\0')
{
if(fromlen != tolen)
{
memmove(start + tolen, start + fromlen,
strlen(start + fromlen) + 1);
}
for(p1 = to; *p1 != '\0'; p1++)
*start++ = *p1;
return 1;
}
}
return 0;
}
int replace(char filename1[], char *from, char *to)
{
FILE *file1, *file2;
char filename2[1000];
char temp[1000];
int ret = 0;
/* Open the source and destination files */
strcpy (filename2, filename1);
strcat (filename2, ".new");
if (!(file1 = fopen (filename1, "r"))) return 1;
if (!(file2 = fopen (filename2, "w"))) {
fclose(file1);
return -1;
}
/* Start reading in lines */
while (fgets (temp, 1000, file1) != NULL) {
if (strlen(to) > 0) {
/* Replace string */
ret = _replace_string (temp, from, to);
/* Write string to new file */
fputs(temp, file2);
} else {
/* Remove string when to is NULL */
if (!strstr(temp, from))
fputs(temp, file2);
}
}
/* Close source and destination */
fclose (file1);
fclose (file2);
/* Move the file */
rename (filename2, filename1);
return (ret);
}
/* Include enabled languages */
#ifdef LANG_EN_ONLY
#include "lang_en.c"
#elifdef LANG_ALL
#include "lang_bz.c"
#include "lang_cs.c"
#include "lang_da.c"
#include "lang_de.c"
#include "lang_en.c"
#include "lang_es.c"
#include "lang_fi.c"
#include "lang_fr.c"
#include "lang_el.c"
#include "lang_it.c"
#include "lang_hu.c"
#include "lang_la.c"
#include "lang_nl.c"
#include "lang_no.c"
#include "lang_pl.c"
#include "lang_pt.c"
#include "lang_sk.c"
#include "lang_so.c"
#include "lang_sv.c"
#include "lang_tr.c"
#include "lang_vi.c"
#else
#include "lang_de.c"
#include "lang_en.c"
#endif
// returns a pointer to the actual running version number of IPFire.
// Successive updates increase effective version but not VERSION !
char g_title[STRING_SIZE] = "";
char* get_version(void) {
FILE *f_title;
if ((f_title = fopen ("/etc/issue", "r"))) {
fgets (g_title, STRING_SIZE, f_title);
fclose (f_title);
if (g_title[strlen(g_title) - 1] == '\n') g_title[strlen(g_title) - 1] = '\0';
} else {
sprintf (g_title, "%s v%s - %s", NAME, VERSION, SLOGAN);
}
return g_title;
}