summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/interfaces.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings/interfaces.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/noncore/settings/networksettings/interfaces.cpp b/noncore/settings/networksettings/interfaces.cpp
index 1287d90..eef42df 100644
--- a/noncore/settings/networksettings/interfaces.cpp
+++ b/noncore/settings/networksettings/interfaces.cpp
@@ -336,27 +336,27 @@ bool Interfaces::removeAllInterfaceOptions(){
336 * @return bool true if it is successfull. 336 * @return bool true if it is successfull.
337 */ 337 */
338bool Interfaces::setMapping(QString interface){ 338bool Interfaces::setMapping(QString interface){
339 interface = interface.simplifyWhiteSpace(); 339 interface = interface.simplifyWhiteSpace();
340 interface = interface.replace(QRegExp(" "), ""); 340 interface = interface.replace(QRegExp(" "), "");
341 return setStanza(MAPPING, interface, currentMapping); 341 return setStanza(MAPPING, interface, currentMapping);
342} 342}
343 343
344/** 344/**
345 * Adds a new Mapping to the interfaces file with interfaces. 345 * Adds a new Mapping to the interfaces file with interfaces.
346 * @param interface the name(s) of the interfaces to set to this mapping 346 * @param interface the name(s) of the interfaces to set to this mapping
347 */ 347 */
348void Interfaces::addMapping(QString interfaces){ 348void Interfaces::addMapping(QString option){
349 interfaces.append(""); 349 interfaces.append("");
350 interfaces.append(QString(MAPPING " %1").arg(interfaces)); 350 interfaces.append(QString(MAPPING " %1").arg(option));
351} 351}
352 352
353/** 353/**
354 * Set a map option within a mapping. 354 * Set a map option within a mapping.
355 * @param map map to use 355 * @param map map to use
356 * @param value value to go with map 356 * @param value value to go with map
357 * @return bool true if it is successfull. 357 * @return bool true if it is successfull.
358 */ 358 */
359bool Interfaces::setMap(QString map, QString value){ 359bool Interfaces::setMap(QString map, QString value){
360 return setOption(currentMapping, map, value); 360 return setOption(currentMapping, map, value);
361} 361}
362 362
@@ -395,62 +395,69 @@ QString Interfaces::getScript(bool &error){
395 * @param interator interator to place at location of stanza if successfull. 395 * @param interator interator to place at location of stanza if successfull.
396 * @return bool true if the stanza is found. 396 * @return bool true if the stanza is found.
397 */ 397 */
398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){ 398bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){
399 bool found = false; 399 bool found = false;
400 iterator = interfaces.end(); 400 iterator = interfaces.end();
401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 401 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
402 QString line = (*it).simplifyWhiteSpace(); 402 QString line = (*it).simplifyWhiteSpace();
403 if(line.contains(stanza) && line.contains(option)){ 403 if(line.contains(stanza) && line.contains(option)){
404 if(found == true){ 404 if(found == true){
405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1()); 405 qDebug(QString("Interfaces: Found multiple stanza's for search: %1 %2").arg(stanza).arg(option).latin1());
406 } 406 }
407 qDebug("Found");
407 found = true; 408 found = true;
408 iterator = it; 409 iterator = it;
409 } 410 }
410 } 411 }
411 return !found; 412 return found;
412} 413}
413 414
414/** 415/**
415 * Sets a value of an option in a stanza 416 * Sets a value of an option in a stanza
416 * @param start the start of the stanza 417 * @param start the start of the stanza
417 * @param option the option to use when setting value. 418 * @param option the option to use when setting value.
418 * @return bool true if successfull, false otherwise. 419 * @return bool true if successfull, false otherwise.
419 */ 420 */
420bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){ 421bool Interfaces::setOption(QStringList::Iterator start, QString option, QString value){
421 if(start == interfaces.end()) 422 if(start == interfaces.end())
422 return false; 423 return false;
423 424
424 bool found = false; 425 bool found = false;
425 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { 426 for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
426 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ 427 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
427 if(!found && value != ""){ 428 if(!found && value != ""){
428 // Got to the end of the stanza without finding it, so append it. 429 // Got to the end of the stanza without finding it, so append it.
429 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value)); 430 interfaces.insert(--it, QString("\t%1 %2").arg(option).arg(value));
430 } 431 }
432 found = true;
431 break; 433 break;
432 } 434 }
433 if((*it).contains(option)){ 435 if((*it).contains(option) && it != start){
434 // Found it in stanza so replace it. 436 // Found it in stanza so replace it.
435 if(found) 437 if(found)
436 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); 438 qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1());
437 found = true; 439 found = true;
438 if(value == "") 440 if(value == "")
439 (*it) = ""; 441 (*it) = "";
440 else 442 else
441 (*it) = QString("\t%1 %2").arg(option).arg(value); 443 (*it) = QString("\t%1 %2").arg(option).arg(value);
442 } 444 }
443 } 445 }
444 return true; 446 if(!found){
447 QStringList::Iterator p = start;
448 interfaces.insert(++p, QString("\t%1 %2").arg(option).arg(value));
449 found = true;
450 }
451 return found;
445} 452}
446 453
447/** 454/**
448 * Removes all options in a stanza 455 * Removes all options in a stanza
449 * @param start the start of the stanza 456 * @param start the start of the stanza
450 * @return bool true if successfull, false otherwise. 457 * @return bool true if successfull, false otherwise.
451 */ 458 */
452bool Interfaces::removeAllOptions(QStringList::Iterator start){ 459bool Interfaces::removeAllOptions(QStringList::Iterator start){
453 if(start == interfaces.end()) 460 if(start == interfaces.end())
454 return false; 461 return false;
455 462
456 QStringList::Iterator it = start; 463 QStringList::Iterator it = start;