From b4e381a8484404542ed6132b968ca11757e158b1 Mon Sep 17 00:00:00 2001 From: ms Date: Tue, 2 Jan 2007 18:40:12 +0000 Subject: [PATCH 1/1] Ich hab mal ein bisschen die Arbeit vom Cuebernommen :D Aber trotzdem geht die Routine noch kein bisschen. SegFault :( Ansonsten: Busyboy erweitert, PCMCIA Support begonnen zu entfernen git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@375 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- config/rootfiles/common/mc | 32 ++-- config/uClibc/busybox.config | 34 ++-- doc/packages-list.txt | 6 +- lfs/mc | 5 +- src/initscripts/init.d/network | 13 -- src/install+setup/install/main.c | 43 +---- src/install+setup/install/nic.c | 100 ++++-------- src/install+setup/install/probenic.sh | 3 +- src/install+setup/libsmooth/libsmooth.h | 203 ++++++++++++------------ src/install+setup/libsmooth/main.c | 26 +-- src/install+setup/libsmooth/netstuff.c | 86 ++++++++-- 11 files changed, 242 insertions(+), 309 deletions(-) diff --git a/config/rootfiles/common/mc b/config/rootfiles/common/mc index 0888fd0ef7..d151351249 100644 --- a/config/rootfiles/common/mc +++ b/config/rootfiles/common/mc @@ -17,7 +17,7 @@ usr/share/mc/cedit.menu usr/share/mc/edit.indent.rc usr/share/mc/edit.spell.rc #usr/share/mc/extfs -usr/share/mc/extfs/README +#usr/share/mc/extfs/README usr/share/mc/extfs/a usr/share/mc/extfs/apt usr/share/mc/extfs/audio @@ -28,6 +28,7 @@ usr/share/mc/extfs/debd usr/share/mc/extfs/dpkg usr/share/mc/extfs/extfs.ini usr/share/mc/extfs/hp48 +usr/share/mc/extfs/iso9660 usr/share/mc/extfs/lslR usr/share/mc/extfs/mailfs usr/share/mc/extfs/patchfs @@ -51,27 +52,33 @@ usr/share/mc/mc.hint #usr/share/mc/mc.hint.nl #usr/share/mc/mc.hint.pl #usr/share/mc/mc.hint.ru +#usr/share/mc/mc.hint.sr #usr/share/mc/mc.hint.uk #usr/share/mc/mc.hint.zh -#usr/share/mc/mc.hint.sr -#usr/share/mc/mc.menu.sr usr/share/mc/mc.hlp usr/share/mc/mc.lib usr/share/mc/mc.menu +#usr/share/mc/mc.menu.sr #usr/share/mc/syntax usr/share/mc/syntax/Syntax usr/share/mc/syntax/ada95.syntax +usr/share/mc/syntax/aspx.syntax +usr/share/mc/syntax/assembler.syntax usr/share/mc/syntax/c.syntax usr/share/mc/syntax/changelog.syntax +usr/share/mc/syntax/cs.syntax usr/share/mc/syntax/diff.syntax usr/share/mc/syntax/dos.syntax +usr/share/mc/syntax/eiffel.syntax usr/share/mc/syntax/fortran.syntax usr/share/mc/syntax/html.syntax +usr/share/mc/syntax/idl.syntax usr/share/mc/syntax/java.syntax usr/share/mc/syntax/js.syntax usr/share/mc/syntax/latex.syntax usr/share/mc/syntax/lisp.syntax usr/share/mc/syntax/lsm.syntax +usr/share/mc/syntax/lua.syntax usr/share/mc/syntax/m4.syntax usr/share/mc/syntax/mail.syntax usr/share/mc/syntax/makefile.syntax @@ -82,7 +89,9 @@ usr/share/mc/syntax/pascal.syntax usr/share/mc/syntax/perl.syntax usr/share/mc/syntax/php.syntax usr/share/mc/syntax/po.syntax +usr/share/mc/syntax/povray.syntax usr/share/mc/syntax/python.syntax +usr/share/mc/syntax/ruby.syntax usr/share/mc/syntax/sh.syntax usr/share/mc/syntax/slang.syntax usr/share/mc/syntax/smalltalk.syntax @@ -94,20 +103,3 @@ usr/share/mc/syntax/tcl.syntax usr/share/mc/syntax/texinfo.syntax usr/share/mc/syntax/unknown.syntax usr/share/mc/syntax/xml.syntax -#usr/share/mc/term -#usr/share/mc/term/README.xterm -usr/share/mc/term/ansi.ti -usr/share/mc/term/linux.ti -usr/share/mc/term/vt100.ti -usr/share/mc/term/xterm.ad -usr/share/mc/term/xterm.tcap -usr/share/mc/term/xterm.ti -usr/share/mc/extfs/iso9660 -usr/share/mc/syntax/aspx.syntax -usr/share/mc/syntax/assembler.syntax -usr/share/mc/syntax/cs.syntax -usr/share/mc/syntax/eiffel.syntax -usr/share/mc/syntax/idl.syntax -usr/share/mc/syntax/lua.syntax -usr/share/mc/syntax/povray.syntax -usr/share/mc/syntax/ruby.syntax diff --git a/config/uClibc/busybox.config b/config/uClibc/busybox.config index 4d09475494..ddad3075a6 100644 --- a/config/uClibc/busybox.config +++ b/config/uClibc/busybox.config @@ -236,17 +236,17 @@ CONFIG_FEATURE_HUMAN_READABLE=y # # Console Utilities # -# CONFIG_CHVT is not set -# CONFIG_CLEAR is not set +CONFIG_CHVT=y +CONFIG_CLEAR=y # CONFIG_DEALLOCVT is not set # CONFIG_DUMPKMAP is not set -# CONFIG_LOADFONT is not set -# CONFIG_LOADKMAP is not set +CONFIG_LOADFONT=y +CONFIG_LOADKMAP=y # CONFIG_OPENVT is not set # CONFIG_RESET is not set -# CONFIG_SETCONSOLE is not set +CONFIG_SETCONSOLE=y # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set -# CONFIG_SETKEYCODES is not set +CONFIG_SETKEYCODES=y # CONFIG_SETLOGCONS is not set # @@ -266,7 +266,7 @@ CONFIG_FEATURE_HUMAN_READABLE=y # # Editors # -# CONFIG_AWK is not set +CONFIG_AWK=y # CONFIG_FEATURE_AWK_MATH is not set # CONFIG_ED is not set # CONFIG_PATCH is not set @@ -502,7 +502,7 @@ CONFIG_FEATURE_IFCONFIG_STATUS=y # CONFIG_FEATURE_IFCONFIG_SLIP is not set # CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set # CONFIG_FEATURE_IFCONFIG_HW is not set -# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y # CONFIG_IFUPDOWN is not set # CONFIG_FEATURE_IFUPDOWN_IP is not set # CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set @@ -517,10 +517,10 @@ CONFIG_FEATURE_IFCONFIG_STATUS=y # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set # CONFIG_FEATURE_INETD_RPC is not set -# CONFIG_IP is not set -# CONFIG_FEATURE_IP_ADDRESS is not set -# CONFIG_FEATURE_IP_LINK is not set -# CONFIG_FEATURE_IP_ROUTE is not set +CONFIG_IP=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y # CONFIG_FEATURE_IP_TUNNEL is not set # CONFIG_FEATURE_IP_SHORT_FORMS is not set # CONFIG_IPADDR is not set @@ -545,7 +545,7 @@ CONFIG_ROUTE=y # CONFIG_FEATURE_TELNET_AUTOLOGIN is not set # CONFIG_TELNETD is not set # CONFIG_FEATURE_TELNETD_INETD is not set -CONFIG_TFTP=y +# CONFIG_TFTP is not set # CONFIG_FEATURE_TFTP_GET is not set # CONFIG_FEATURE_TFTP_PUT is not set # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set @@ -608,14 +608,14 @@ CONFIG_ASH_JOB_CONTROL=y CONFIG_ASH_ALIAS=y CONFIG_ASH_MATH_SUPPORT=y # CONFIG_ASH_MATH_SUPPORT_64 is not set -# CONFIG_ASH_GETOPTS is not set -# CONFIG_ASH_BUILTIN_ECHO is not set -# CONFIG_ASH_BUILTIN_TEST is not set +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_BUILTIN_ECHO=y +CONFIG_ASH_BUILTIN_TEST=y # CONFIG_ASH_CMDCMD is not set # CONFIG_ASH_MAIL is not set CONFIG_ASH_OPTIMIZE_FOR_SIZE=y # CONFIG_ASH_RANDOM_SUPPORT is not set -# CONFIG_ASH_EXPAND_PRMT is not set +CONFIG_ASH_EXPAND_PRMT=y # CONFIG_HUSH is not set # CONFIG_LASH is not set # CONFIG_MSH is not set diff --git a/doc/packages-list.txt b/doc/packages-list.txt index 044a21b938..303a209601 100644 --- a/doc/packages-list.txt +++ b/doc/packages-list.txt @@ -46,7 +46,6 @@ * ccache-2.4 * cdrtools-2.01 * cftp-0.12 -* clamav-0.88.6 * clamav-0.88.7 * coreutils-5.96 * cups-1.2.2 @@ -84,7 +83,6 @@ * glib-2.9.6 * glibc-2.3.6 * gmp-4.2 -* gnump3d-2.9.8 * gnump3d-2.9.9.9 * gnupg-1.4.5 * grep-2.5.1a @@ -142,7 +140,6 @@ * make-3.80 * man-db-2.4.3 * man-pages-2.34 -* mc-4.6.0 * mc-4.6.1 * memtest86+-1.65 * mingetty_1.07 @@ -195,7 +192,7 @@ * rp-pppoe-3.8 * rrdtool-1.2.15 * rsync-2.6.8 -* samba-3.0.23b +* samba-3.0.23d * screen-4.0.2 * sed-4.1.5 * setserial-2.17 @@ -239,6 +236,5 @@ * xmbmon205 * xvidcore-1.1.0 * yasuc-0.4.1 -* zaptel-1.2.10 * zaptel-1.4.0 * zlib-1.2.3 diff --git a/lfs/mc b/lfs/mc index 4d511a23c3..1d36f91202 100644 --- a/lfs/mc +++ b/lfs/mc @@ -72,8 +72,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --without-x --disable-nls \ - --with-screen=mcslang --with-samba + cd $(DIR_APP) && ./configure --prefix=/usr \ + --without-x --disable-nls \ + --with-samba cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/src/initscripts/init.d/network b/src/initscripts/init.d/network index 85ac8e9062..73ccfc224d 100644 --- a/src/initscripts/init.d/network +++ b/src/initscripts/init.d/network @@ -47,13 +47,6 @@ case "${1}" in # Remove possible leftover files rm -f CONFIG_ROOT/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf} - # This won't actually do anything unless a PCMCIA controller was - # detected at install time, because /etc/pcmcia.conf won't exist. - /etc/rc.d/rc.pcmcia start - # Now, just in case we found a PCMCIA USB controller, we'll need to reload - # the USB here. - /usr/local/bin/resetusb - # The 'for' loop force driver loading order for NIC in 0 1 2 3; do ETHX="eth${NIC}" @@ -83,12 +76,6 @@ case "${1}" in fi done - if [ -d /proc/bus/pccard ]; then - boot_mesg "Initializing PCMCIA cardbus modems" - modprobe serial_cb - evaluate_retval - fi - boot_mesg "Setting up IPFire firewall rules" /etc/rc.d/init.d/firewall start; evaluate_retval diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index 8b808031f6..3ca80da7aa 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -14,7 +14,7 @@ #define CDROM_INSTALL 0 #define URL_INSTALL 1 #define DISK_INSTALL 2 -#define INST_FILECOUNT 5600 +#define INST_FILECOUNT 6600 #define UNATTENDED_CONF "/cdrom/boot/unattended.conf" int raid_disk = 0; @@ -288,23 +288,6 @@ int main(int argc, char *argv[]) fprintf(flog, "Manual FDISK selected.\n"); fdisk = 1; } - if (strstr (line, "nopcmcia") == NULL) { - fprintf(flog, "Initializing PCMCIA controllers.\n"); - pcmcia = initialize_pcmcia(); - if (pcmcia) { - fprintf (flog, "Detected PCMCIA Controller: %s.\n", pcmcia); - sprintf(commandstring, "/sbin/modprobe %s", pcmcia); - mysystem("/sbin/modprobe pcmcia_core"); - mysystem(commandstring); - mysystem("/sbin/modprobe ds"); - /* pcmcia netcard drivers are not available from Boot floppy, - * they will be loaded from Drivers floppy later */ - } else { - fprintf (flog, "Detected No PCMCIA Controller.\n"); - } - } else { - fprintf(flog, "Skipping PCMCIA detection.\n"); - } if (strstr (line, "nousb") == NULL) { fprintf(flog, "Initializing USB controllers.\n"); initialize_usb(); @@ -697,30 +680,6 @@ int main(int argc, char *argv[]) /* Rename uname */ rename ("/harddisk/bin/uname.bak", "/harddisk/bin/uname"); - /* Write PCMCIA Config */ - if (pcmcia) { - handle = fopen("/harddisk/etc/modules.conf", "a"); - if (handle != NULL) { - fprintf (handle, "# PCMCIA Settings\n"); - fprintf (handle, "alias pcmcia-controller %s\n", pcmcia); - fclose(handle); - } - } - - handle = fopen("/harddisk/etc/pcmcia.conf", "w"); - if (handle != NULL) { - if (pcmcia) { - fprintf (handle, "PCMCIA=yes\n"); - fprintf (handle, "PCIC=%s\n", pcmcia); - } else { - fprintf (handle, "PCMCIA=no\n"); - fprintf (handle, "PCIC=\n"); - } - fprintf (handle, "CARDMGR_OPTS=\n"); - fprintf (handle, "SCHEME=\n"); - fclose(handle); - } - /* *always* write disk configuration */ if (!(write_disk_configs(&hdparams))){ errorbox(ctr[TR_ERROR_WRITING_CONFIG]); diff --git a/src/install+setup/install/nic.c b/src/install+setup/install/nic.c index 665e0d0406..0c5c3d545e 100644 --- a/src/install+setup/install/nic.c +++ b/src/install+setup/install/nic.c @@ -24,89 +24,47 @@ extern struct nic nics[]; int networkmenu(struct keyvalue *ethernetkv) { - int i; - int count; - char nics; - char number; - char cbValue; + int rc; char driver[STRING_SIZE] = ""; char driveroptions[STRING_SIZE] = ""; - struct keyvalue *kv = initkeyvalues(); int result = 0; char commandstring[STRING_SIZE]; char address[STRING_SIZE], netmask[STRING_SIZE]; - FILE *handle; + int done; char description[1000]; char message[1000]; char title[STRING_SIZE]; + done = 0; - /* Detect and count nics */ - count = mysystem("/bin/probenic.sh count"); - fprintf(flog, "Number of detected nics: %s\n", count); - -/* sprintf(commandstring, "/bin/probenic.sh"); - sprintf(message, ctr[TR_PROBING_FOR_NICS]); - runcommandwithstatus(commandstring, message); */ - -/* handle = fopen("/nicdriver", "r"); - fgets(nics, STRING_SIZE, handle); - fclose(handle); */ - -/* fprintf(flog, "Detected NIC drivers: %s\n",driver); */ - -/* sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN); - sprintf(message, ctr[TR_FOUND_NIC], NAME, description); - newtWinMessage(title, ctr[TR_OK], message); */ - - newtComponent form, checkbox, rb[count], button; - newtOpenWindow(10, 5, 60, 11, "Checkboxes and Radio buttons"); - - for (i = 1; i <= 2; i++) + while (!done) { - fprintf(flog, "Scan: %d\n", i); - snprintf(commandstring, STRING_SIZE, "/bin/probenic.sh %i", i); - mysystem(commandstring); - if ((handle = fopen("/nicdriver", "r")) == NULL) { - errorbox(ctr[TR_ERROR]); - goto EXIT; - } - fgets(driver, STRING_SIZE, handle); - fclose(handle); - findnicdescription(driver, description); - if ( i == 0 ) - rb[i] = newtRadiobutton(1, i+2, description, 1, NULL); + rc = newtWinTernary(ctr[TR_CONFIGURE_NETWORKING], ctr[TR_PROBE], + ctr[TR_SELECT], ctr[TR_CANCEL], ctr[TR_CONFIGURE_NETWORKING_LONG]); + + if (rc == 0 || rc == 1) + { + probecards(driver, driveroptions); + if (!strlen(driver)) + errorbox(ctr[TR_PROBE_FAILED]); + else + { + findnicdescription(driver, description); + sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN); + sprintf(message, ctr[TR_FOUND_NIC], NAME, description); + newtWinMessage(title, ctr[TR_OK], message); + } + } + else if (rc == 2) + choosecards(driver, driveroptions); else - rb[i] = newtRadiobutton(1, i+2, description, 0, rb[i-1]); - } - - button = newtButton(1, count+3, "OK"); - - form = newtForm(NULL, NULL, 0); - newtFormAddComponent(form, checkbox); - for (i = 1; i <= 2; i++) { - fprintf(flog, "Add: %d\n", i); - newtFormAddComponent(form, rb[i]); + done = 1; + + if (strlen(driver)) + done = 1; } - newtFormAddComponent(form, button); - - newtRunForm(form); - newtFinished(); - - for (i = 1; i <= 2; i++) - if (newtRadioGetCurrent(rb[0]) == rb[i]) - printf("radio button picked: %d\n", i); - newtFormDestroy(form); - - -/* snprintf(commandstring, STRING_SIZE, "/bin/probenic.sh 1"); - mysystem(commandstring); - if ((handle = fopen("/nicdriver", "r")) == NULL) { - errorbox(ctr[TR_ERROR]); + + if (!strlen(driver)) goto EXIT; - } - fgets(driver, STRING_SIZE, handle); - fprintf(flog, "Green nic driver: %s\n", driver); - fclose(handle); */ /* Default is a GREEN nic only. */ /* Smoothie is not untarred yet, so we have to delay actually writing the @@ -134,8 +92,6 @@ int networkmenu(struct keyvalue *ethernetkv) result = 1; EXIT: - freekeyvalues(kv); return result; } - diff --git a/src/install+setup/install/probenic.sh b/src/install+setup/install/probenic.sh index ca033993fd..5008def617 100644 --- a/src/install+setup/install/probenic.sh +++ b/src/install+setup/install/probenic.sh @@ -3,7 +3,8 @@ MODULES=$(/bin/kudzu -qps -t 30 -c NETWORK | grep driver | cut -d ' ' -f 2 | sort) if [ "$1" == "count" ]; then - echo $(echo $MODULES | wc -l) + /bin/kudzu -qps -t 30 -c NETWORK | grep driver | wc -l | awk '{ print $1 }' > /drivercount + exit 0 else NUMBER=$1 fi diff --git a/src/install+setup/libsmooth/libsmooth.h b/src/install+setup/libsmooth/libsmooth.h index 5ed2dfcd21..22d0b073b0 100644 --- a/src/install+setup/libsmooth/libsmooth.h +++ b/src/install+setup/libsmooth/libsmooth.h @@ -1,99 +1,104 @@ -/* 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 prototypes for library functions. - * - * $Id: libsmooth.h,v 1.4.2.3 2005/10/30 23:25:35 franck78 Exp $ - * - */ - -#ifndef ___LIBSMOOTH_H -#define ___LIBSMOOTH_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "langs.h" - -#define STRING_SIZE 1023 - -#define ADDRESS 0 -#define NETADDRESS 1 -#define NETMASK 2 -#define DHCP 3 -#define NETCHANGE_TOTAL 4 - -struct keyvalue -{ - char key[STRING_SIZE]; - char value[STRING_SIZE]; - struct keyvalue *next; -}; - -/* for stuff in net.c */ -struct nic -{ - char *description; - char *modulename; -}; - -/* libsmooth.c */ -void reboot(void); -void stripnl(char *s); -int mysystem(char *command); -void errorbox(char *message); -void statuswindow(int width, int height, char *title, char *text, ...); -int runcommandwithprogress(int width, int height, char *title, char *command, - int lines, char *text, ...); -int runcommandwithstatus(char *command, char *message); -int runhiddencommandwithstatus(char *command, char *message); -int checkformodule(char *module); -int replace(char filename1[], char *from, char *to); -char* get_version(void); - -/* netstuff.c */ -int changeaddress(struct keyvalue *kv, char *colour, int typeflag, - char *defaultdhcphostname); -int gettype(char *type); -int setnetaddress(struct keyvalue *kv, char *colour); -void networkdialogcallbacktype(newtComponent cm, void *data); -int interfacecheck(struct keyvalue *kv, char *colour); -int probecards(char *driver, char *driveroptions); -int choosecards(char *driver, char *driveroptions); -int manualdriver(char *driver, char *driveroptions); -int countcards(void); -int findnicdescription(char *modulename, char *description); - -/* data.c */ -struct keyvalue *initkeyvalues(void); -void freekeyvalues(struct keyvalue *head); -int readkeyvalues(struct keyvalue *head, char *filename); -int writekeyvalues(struct keyvalue *head, char *filename); -int findkey(struct keyvalue *head, char *key, char *value); -void appendkeyvalue(struct keyvalue *head, char *key, char *value); -void replacekeyvalue(struct keyvalue *head, char *key, char *value); - -#endif - +/* 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 prototypes for library functions. + * + * $Id: libsmooth.h,v 1.4.2.3 2005/10/30 23:25:35 franck78 Exp $ + * + */ + +#ifndef ___LIBSMOOTH_H +#define ___LIBSMOOTH_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "langs.h" + +#define STRING_SIZE 1023 + +#define ADDRESS 0 +#define NETADDRESS 1 +#define NETMASK 2 +#define DHCP 3 +#define NETCHANGE_TOTAL 4 + +struct keyvalue +{ + char key[STRING_SIZE]; + char value[STRING_SIZE]; + struct keyvalue *next; +}; + +/* for stuff in net.c */ +struct nic +{ + char *description; + char *modulename; +}; +struct driver +{ + char *description; + char *modulename; +}; + +/* libsmooth.c */ +void reboot(void); +void stripnl(char *s); +int mysystem(char *command); +void errorbox(char *message); +void statuswindow(int width, int height, char *title, char *text, ...); +int runcommandwithprogress(int width, int height, char *title, char *command, + int lines, char *text, ...); +int runcommandwithstatus(char *command, char *message); +int runhiddencommandwithstatus(char *command, char *message); +int checkformodule(char *module); +int replace(char filename1[], char *from, char *to); +char* get_version(void); + +/* netstuff.c */ +int changeaddress(struct keyvalue *kv, char *colour, int typeflag, + char *defaultdhcphostname); +int gettype(char *type); +int setnetaddress(struct keyvalue *kv, char *colour); +void networkdialogcallbacktype(newtComponent cm, void *data); +int interfacecheck(struct keyvalue *kv, char *colour); +int probecards(char *driver, char *driveroptions); +int choosecards(char *driver, char *driveroptions); +int manualdriver(char *driver, char *driveroptions); +int countcards(void); +int findnicdescription(char *modulename, char *description); + +/* data.c */ +struct keyvalue *initkeyvalues(void); +void freekeyvalues(struct keyvalue *head); +int readkeyvalues(struct keyvalue *head, char *filename); +int writekeyvalues(struct keyvalue *head, char *filename); +int findkey(struct keyvalue *head, char *key, char *value); +void appendkeyvalue(struct keyvalue *head, char *key, char *value); +void replacekeyvalue(struct keyvalue *head, char *key, char *value); + +#endif + diff --git a/src/install+setup/libsmooth/main.c b/src/install+setup/libsmooth/main.c index d54a89c60e..ae9948b28a 100644 --- a/src/install+setup/libsmooth/main.c +++ b/src/install+setup/libsmooth/main.c @@ -284,33 +284,11 @@ int replace(char filename1[], char *from, char *to) /* 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] = ""; @@ -321,7 +299,7 @@ char* get_version(void) { 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); + sprintf (g_title, "%s %s - %s", NAME, VERSION, SLOGAN); } return g_title; } diff --git a/src/install+setup/libsmooth/netstuff.c b/src/install+setup/libsmooth/netstuff.c index 81ea3df568..09a39a8f1d 100644 --- a/src/install+setup/libsmooth/netstuff.c +++ b/src/install+setup/libsmooth/netstuff.c @@ -413,30 +413,88 @@ struct nic nics[] = { /* Funky routine for loading all drivers (cept those are already loaded.). */ int probecards(char *driver, char *driveroptions) { + int c; + char **sections; + char drivercount; + int rc; + int choice; + int done = 0; char message[1000]; char commandstring[STRING_SIZE]; FILE *handle; char line[STRING_SIZE]; - sprintf(commandstring, "/bin/probenic.sh 1"); - sprintf(message, ctr[TR_PROBING_FOR_NICS]); - runcommandwithstatus(commandstring, message); + /* Count all nics. */ + mysystem("/bin/probenic.sh count"); + if ((handle = fopen("/drivercount", "r"))) + fgets(line, STRING_SIZE-1, handle); + fclose(handle); + //system("rm -f /drivercount"); + line[strlen(line) - 1] = 0; + drivercount = strtok(line, "."); + fprintf(flog, "Detected %s NICs in your system.\n", drivercount); + if (!drivercount > 0) { + return 1; + } + + sections = malloc(drivercount * sizeof(char *)); + + struct driver drivers[drivercount]; + strcpy(drivers[0].modulename, "pcnet32"); - if ((handle = fopen("/nicdriver", "r"))) + fprintf(flog, "TEST0.\n"); + c = 0; + while (drivers[c - 1].modulename) { - char *driver; - fgets(line, STRING_SIZE-1, handle); - fclose(handle); - line[strlen(line) - 1] = 0; - driver = strtok(line, "."); - fprintf(flog, "Detected NIC driver %s\n",driver); - if (strlen(driver) > 1) { - strcpy(driveroptions, ""); - return 1; - } + sections[c] = drivers[c - 1].description; + fprintf(flog, "TEST1.\n"); + c++; } + sections[c] = NULL; + fprintf(flog, "TEST2.\n"); + strcpy(driver, ""); strcpy(driveroptions, ""); + + done = 0; choice = 1; + while (!done) + { + rc = newtWinMenu(ctr[TR_SELECT_NETWORK_DRIVER], + ctr[TR_SELECT_NETWORK_DRIVER_LONG], 50, 5, 5, 6, + sections, &choice, ctr[TR_OK], ctr[TR_CANCEL], NULL); + if (rc == 0 || rc == 1) + { + if (choice > 0) + { + /* Find module number, load module. */ + c = choice - 1; + + if (!checkformodule(nics[c].modulename)) + { + sprintf(commandstring, "/sbin/modprobe %s", nics[c].modulename); + sprintf(message, ctr[TR_LOOKING_FOR_NIC], nics[c].description); + if (runcommandwithstatus(commandstring, message) == 0) + { + strcpy(driver, nics[c].modulename); + strcpy(driveroptions, ""); + done = 1; + } + else + errorbox(ctr[TR_UNABLE_TO_LOAD_DRIVER_MODULE]); + } + else + errorbox(ctr[TR_THIS_DRIVER_MODULE_IS_ALREADY_LOADED]); + } + else + { + manualdriver(driver, driveroptions); + if (strlen(driver)) + done = 1; + } + } + else + done = 1; + } return 0; } -- 2.39.2