diff --git a/src/preferences/network/EthernetSettingsView.cpp b/src/preferences/network/EthernetSettingsView.cpp index 09362bdf7a..880073e346 100644 --- a/src/preferences/network/EthernetSettingsView.cpp +++ b/src/preferences/network/EthernetSettingsView.cpp @@ -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()); }