* don't know which option to pass to fopen() in order to create a file if it
doesn't exist, so I just used a BFile instead... this should fix part of ticket #1423, if someone wants to look into the gateway retrieval (settings.cpp) to fix the other half of the bug, that would be great git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22366 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -345,22 +345,28 @@ EthernetSettingsView::_SaveConfiguration()
|
||||
void
|
||||
EthernetSettingsView::_SaveDNSConfiguration()
|
||||
{
|
||||
FILE* fp = fopen("/etc/resolv.conf", "w");
|
||||
if (fp == NULL)
|
||||
BFile file("/etc/resolv.conf",
|
||||
B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY);
|
||||
if (file.InitCheck() < B_OK) {
|
||||
fprintf(stderr, "failed to open /etc/resolv.conf for writing: %s\n",
|
||||
strerror(file.InitCheck()));
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(fp, "# Generated by Network Preflet\n");
|
||||
BString content("# Generated by Network Preflet\n");
|
||||
// loop over all adapters
|
||||
for (int i = 0; i < fSettings.CountItems(); i++) {
|
||||
Settings* settings = fSettings.ItemAt(i);
|
||||
for (int j = 0; j < settings->fNameservers.CountItems(); j++) {
|
||||
if (settings->fNameservers.ItemAt(j)->Length() > 0) {
|
||||
fprintf(fp, "nameserver\t%s\n",
|
||||
settings->fNameservers.ItemAt(j)->String());
|
||||
content << "nameserver\t"
|
||||
<< settings->fNameservers.ItemAt(j)->String()
|
||||
<< "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
file.Write(content.String(), content.Length());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user