diff --git a/src/preferences/network/EthernetSettings.cpp b/src/preferences/network/EthernetSettings.cpp deleted file mode 100644 index d3e0464341..0000000000 --- a/src/preferences/network/EthernetSettings.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2004-2007 Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Author: - * Andre Alves Garzia, andre@andregarzia.com - * With code from: - * Axel Dorfler - * Hugo Santos - */ - -#include "EthernetSettings.h" -#include "EthernetSettingsWindow.h" - -EthernetSettings::EthernetSettings() - : BApplication("application/x-vnd.Haiku-EthernetSettings") -{ -} - -EthernetSettings::~EthernetSettings() -{ -} - -void -EthernetSettings::ReadyToRun() -{ - fEthWindow = new EthernetSettingsWindow(); - fEthWindow->Show(); -} - -int -main(int argc, char** argv) -{ - EthernetSettings app; - app.Run(); - - return 0; -} diff --git a/src/preferences/network/EthernetSettingsView.cpp b/src/preferences/network/EthernetSettingsView.cpp index 0dc37232e5..4006b27a77 100644 --- a/src/preferences/network/EthernetSettingsView.cpp +++ b/src/preferences/network/EthernetSettingsView.cpp @@ -115,7 +115,6 @@ EthernetSettingsView::_GatherInterfaces() { void EthernetSettingsView::AttachedToWindow() { - fOKButton->SetTarget(this); fApplyButton->SetTarget(this); fDeviceMenuField->Menu()->SetTargetForItems(this); @@ -167,6 +166,8 @@ EthernetSettingsView::EthernetSettingsView(BRect rect) modemenu->AddItem(staticitem); BMenuItem* dhcpitem = new BMenuItem("DHCP", NULL); modemenu->AddItem(dhcpitem); + BMenuItem* offitem = new BMenuItem("Disconnected", NULL); + modemenu->AddItem(offitem); fDeviceMenuField = new BMenuField(frame, "networkcards", "Adapter:", devmenu); fDeviceMenuField->SetDivider( @@ -233,10 +234,6 @@ EthernetSettingsView::EthernetSettingsView(BRect rect) fSecondaryDNSTextControl->Frame().LeftBottom() + BPoint(0,10)); AddChild(fApplyButton); - fOKButton = new BButton(frame, "ok", "OK", new BMessage(kMsgOK)); - fOKButton->ResizeToPreferred(); - fOKButton->MoveTo(fApplyButton->Frame().RightTop() + BPoint(10,0)); - AddChild(fOKButton); } @@ -249,6 +246,16 @@ void EthernetSettingsView::_ShowConfiguration(BMessage* message) { + + + // Clear the inputs. + fIPTextControl->SetText(""); + fGatewayTextControl->SetText(""); + fNetMaskTextControl->SetText(""); + fPrimaryDNSTextControl->SetText(""); + fSecondaryDNSTextControl->SetText(""); + + const char* name; if (message->FindString("interface", &name) != B_OK) return; @@ -283,33 +290,21 @@ EthernetSettingsView::_ShowConfiguration(BMessage* message) fPrimaryDNSTextControl->SetText( fSettings.ItemAt(i)->fNameservers.ItemAt(0)->String()); } - } else { - return; - } - } - - - - - - - - - + } + } } void EthernetSettingsView::_ApplyControlsToConfiguration() { + if (strcmp(fTypeMenuField->Menu()->FindMarked()->Label(), "Static") == 0) { - printf("we´re in!\n"); int i; for (i = 0; i < fSettings.CountItems(); i++) { if (strcmp(fSettings.ItemAt(i)-> GetName(), fDeviceMenuField->Menu()->FindMarked()->Label()) == 0) { - printf("changing settings for %s", fSettings.ItemAt(i)->GetName()); fSettings.ItemAt(i)-> SetIP(fIPTextControl->Text()); fSettings.ItemAt(i)-> @@ -348,8 +343,11 @@ EthernetSettingsView::_SaveDNSConfiguration() // loop all the adapters. int j; for (j = 0; j < fSettings.ItemAt(i)->fNameservers.CountItems(); j++) { - fprintf(fp, "nameserver\t%s\n", - fSettings.ItemAt(i)->fNameservers.ItemAt(j)->String()); + if (strcmp( + fSettings.ItemAt(i)->fNameservers.ItemAt(j)->String(), "") != 0) { + fprintf(fp, "nameserver\t%s\n", + fSettings.ItemAt(i)->fNameservers.ItemAt(j)->String()); + } } } fclose(fp); @@ -363,37 +361,39 @@ EthernetSettingsView::_SaveAdaptersConfiguration() BPath path; status_t status = _GetPath("interfaces", path); if (status < B_OK) - return; + return; - FILE* fp; - bool isOpen = false; - int i; - for (i = 0; i < fSettings.CountItems(); i++) { - // loop all the adapters. - if (fSettings.ItemAt(i)->GetAutoConfigure() == false) { - if (isOpen == false) { - if ((fp = fopen(path.Path(), "w")) == NULL) - return; - isOpen = true; + FILE* fp = NULL; + // loop over all adapters. open the settings file only once, + // append the settins of each non-autoconfiguring adapter + for (int i = 0; i < fSettings.CountItems(); i++) { + if (fSettings.ItemAt(i)->GetAutoConfigure()) + continue; + + if (fp == NULL) { + fp = fopen(path.Path(), "w"); + if (fp == NULL) { + fprintf(stderr, "failed to open file %s to write " + "configuration: %s\n", path.Path(), strerror(errno)); + return; } - fprintf(fp, - "device %s {\n\t\taddress {\n", fSettings.ItemAt(i)->GetName()); - fprintf(fp, "\t\t\tfamily\tinet\n"); - fprintf(fp, "\t\t\taddress\t%s\n", - fSettings.ItemAt(i)->GetIP()); - fprintf(fp, "\t\t\tgateway\t%s\n", - fSettings.ItemAt(i)->GetGateway()); - fprintf(fp, "\t\t\tmask\t%s\n", - fSettings.ItemAt(i)->GetNetmask()); - fprintf(fp, "\t\t}\n}\n\n"); - - - } - if (isOpen) { - printf("%s saved.\n", path.Path()); - fclose(fp); - } + } + + fprintf(fp, "interface %s {\n\t\taddress {\n", + fSettings.ItemAt(i)->GetName()); + fprintf(fp, "\t\t\tfamily\tinet\n"); + fprintf(fp, "\t\t\taddress\t%s\n", + fSettings.ItemAt(i)->GetIP()); + fprintf(fp, "\t\t\tgateway\t%s\n", + fSettings.ItemAt(i)->GetGateway()); + fprintf(fp, "\t\t\tmask\t%s\n", + fSettings.ItemAt(i)->GetNetmask()); + fprintf(fp, "\t\t}\n}\n\n"); } + if (fp) { + printf("%s saved.\n", path.Path()); + fclose(fp); + } } status_t diff --git a/src/preferences/network/EthernetSettingsView.h b/src/preferences/network/EthernetSettingsView.h index ef105a38fb..95755aa350 100644 --- a/src/preferences/network/EthernetSettingsView.h +++ b/src/preferences/network/EthernetSettingsView.h @@ -21,7 +21,6 @@ class BTextControl; static const uint32 kMsgApply = 'aply'; static const uint32 kMsgClose = 'clse'; -static const uint32 kMsgOK = 'okok'; static const uint32 kMsgField = 'fild'; static const uint32 kMsgInfo = 'info'; @@ -40,7 +39,6 @@ class EthernetSettingsView : public BView { BButton* fCloseButton; BButton* fApplyButton; - BButton* fOKButton; BMenuField* fDeviceMenuField; BMenuField* fTypeMenuField; BTextControl* fIPTextControl; diff --git a/src/preferences/network/Jamfile b/src/preferences/network/Jamfile index 46624d5911..3a775495f7 100644 --- a/src/preferences/network/Jamfile +++ b/src/preferences/network/Jamfile @@ -5,10 +5,10 @@ SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders shared ; Preference Network : - EthernetSettingsWindow.cpp - settings.cpp + NetworkApp.cpp + NetworkWindow.cpp EthernetSettingsView.cpp - EthernetSettings.cpp + settings.cpp : be root $(HAIKU_NETWORK_LIBS) ; diff --git a/src/preferences/network/NetworkApp.cpp b/src/preferences/network/NetworkApp.cpp new file mode 100644 index 0000000000..e47942b824 --- /dev/null +++ b/src/preferences/network/NetworkApp.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2004-2007 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Author: + * Andre Alves Garzia, andre@andregarzia.com + * With code from: + * Axel Dörfler + * Hugo Santos + */ + +#include "NetworkApp.h" +#include "NetworkWindow.h" + +NetworkApp::NetworkApp() + : BApplication("application/x-vnd.Haiku-Network") +{ +} + +NetworkApp::~NetworkApp() +{ +} + +void +NetworkApp::ReadyToRun() +{ + fEthWindow = new NetworkWindow(); + fEthWindow->Show(); +} + +int +main(int argc, char** argv) +{ + NetworkApp app; + app.Run(); + + return 0; +} diff --git a/src/preferences/network/EthernetSettings.h b/src/preferences/network/NetworkApp.h similarity index 57% rename from src/preferences/network/EthernetSettings.h rename to src/preferences/network/NetworkApp.h index 54b107edbd..e74c7a6bcc 100644 --- a/src/preferences/network/EthernetSettings.h +++ b/src/preferences/network/NetworkApp.h @@ -9,24 +9,24 @@ * Hugo Santos */ -#ifndef ETHERNET_SETTINGS_H -#define ETHERNET_SETTINGS_H +#ifndef NETWORK_APP_H +#define NETWORK_APP_H #include #include #include -#include "EthernetSettingsWindow.h" +#include "NetworkWindow.h" -class EthernetSettings : public BApplication { +class NetworkApp : public BApplication { public: - EthernetSettings(); - virtual ~EthernetSettings(); + NetworkApp(); + virtual ~NetworkApp(); virtual void ReadyToRun(); private: - EthernetSettingsWindow *fEthWindow; + NetworkWindow *fEthWindow; }; -#endif /* ETHERNET_SETTINGS_H */ +#endif /* NETWORK_APP_H */ diff --git a/src/preferences/network/EthernetSettingsWindow.cpp b/src/preferences/network/NetworkWindow.cpp similarity index 69% rename from src/preferences/network/EthernetSettingsWindow.cpp rename to src/preferences/network/NetworkWindow.cpp index 2a966d5dfe..d0731359f8 100644 --- a/src/preferences/network/EthernetSettingsWindow.cpp +++ b/src/preferences/network/NetworkWindow.cpp @@ -11,12 +11,12 @@ #include -#include "EthernetSettingsWindow.h" +#include "NetworkWindow.h" #include "EthernetSettingsView.h" -EthernetSettingsWindow::EthernetSettingsWindow() -: BWindow(BRect(50, 50, 269, 302), "Ethernet Settings", +NetworkWindow::NetworkWindow() +: BWindow(BRect(50, 50, 269, 302), "Network", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE) { @@ -29,7 +29,7 @@ B_TITLED_WINDOW, B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS void -EthernetSettingsWindow::MessageReceived(BMessage* message) +NetworkWindow::MessageReceived(BMessage* message) { switch (message->what) { case kMsgInfo: @@ -41,13 +41,13 @@ EthernetSettingsWindow::MessageReceived(BMessage* message) } -EthernetSettingsWindow::~EthernetSettingsWindow() +NetworkWindow::~NetworkWindow() { } bool -EthernetSettingsWindow::QuitRequested() +NetworkWindow::QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; diff --git a/src/preferences/network/EthernetSettingsWindow.h b/src/preferences/network/NetworkWindow.h similarity index 65% rename from src/preferences/network/EthernetSettingsWindow.h rename to src/preferences/network/NetworkWindow.h index 2691e8053c..4e0dd3be9b 100644 --- a/src/preferences/network/EthernetSettingsWindow.h +++ b/src/preferences/network/NetworkWindow.h @@ -8,16 +8,16 @@ * Axel Dorfler * Hugo Santos */ -#ifndef ETHERNET_SETTINGS_WINDOW_H -#define ETHERNET_SETTINGS_WINDOW_H +#ifndef NETWORK_WINDOW_H +#define NETWORK_WINDOW_H #include #include "EthernetSettingsView.h" -class EthernetSettingsWindow : public BWindow { +class NetworkWindow : public BWindow { public: - EthernetSettingsWindow(); - virtual ~EthernetSettingsWindow(); + NetworkWindow(); + virtual ~NetworkWindow(); virtual bool QuitRequested(); virtual void MessageReceived(BMessage* mesage); @@ -27,4 +27,4 @@ class EthernetSettingsWindow : public BWindow { }; -#endif /* ETHERNET_SETTINGS_WINDOW_H */ +#endif /* NETWORK_WINDOW_H */ diff --git a/src/preferences/network/settings.cpp b/src/preferences/network/settings.cpp index b0de4d0f60..ce86719e16 100644 --- a/src/preferences/network/settings.cpp +++ b/src/preferences/network/settings.cpp @@ -60,7 +60,7 @@ Settings::_PrepareRequest(struct ifreq& request) void -Settings::ReadConfiguration() +Settings::ReadConfiguration() { ifreq request; @@ -172,37 +172,39 @@ Settings::ReadConfiguration() line[sizeof(name) - 1] == '\t')) + register FILE *fp = fopen("/etc/resolv.conf", "r"); + if (fp == NULL) { + fprintf(stderr, "failed to open '/etc/resolv.conf' to " + "read nameservers: %s\n", strerror(errno)); + return; + } + int nserv = 0; char buf[1024]; - register FILE *fp; - register char *cp, **pp; - register int n; + register char *cp; //, **pp; +// register int n; int MAXNS = 2; - if ((fp = fopen("/etc/resolv.conf", "r")) != NULL) { - /* read the config file */ - while (fgets(buf, sizeof(buf), fp) != NULL) { - /* skip comments */ + // read the config file + while (fgets(buf, sizeof(buf), fp) != NULL) { + // skip comments if (*buf == ';' || *buf == '#') continue; - - /* read nameservers to query */ - if (MATCH(buf, "nameserver") && nserv < MAXNS) { - char sbuf[2]; - - cp = buf + sizeof("nameserver") - 1; - while (*cp == ' ' || *cp == '\t') - cp++; - cp[strcspn(cp, ";# \t\n")] = '\0'; - if ((*cp != '\0') && (*cp != '\n')) { + // read nameservers to query + if (MATCH(buf, "nameserver") && nserv < MAXNS) { +// char sbuf[2]; + cp = buf + sizeof("nameserver") - 1; + while (*cp == ' ' || *cp == '\t') + cp++; + cp[strcspn(cp, ";# \t\n")] = '\0'; + if ((*cp != '\0') && (*cp != '\n')) { fNameservers.AddItem(new BString(cp)); - nserv++; - } + nserv++; + } } - continue; - } - fclose(fp); - + continue; } + + fclose(fp); }