From 5b3357c54c84b97524f85fe2e09fb201b61c7d69 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Thu, 1 Jan 2009 20:24:07 +0100 Subject: [PATCH] improve parsing argv --- src/helpers.cpp | 65 +++++++++++++++++++++++-------------------------- src/helpers.h | 2 +- src/ncmpcpp.cpp | 6 +---- 3 files changed, 33 insertions(+), 40 deletions(-) diff --git a/src/helpers.cpp b/src/helpers.cpp index 98347e46..1743473d 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -49,20 +49,16 @@ bool ConnectToMPD() return true; } -bool ParseArgv(int argc, char **argv) +void ParseArgv(int argc, char **argv) { using std::cout; using std::endl; - vector v; - v.reserve(argc-1); - for (int i = 1; i < argc; i++) - v.push_back(argv[i]); + bool quit = 0; - bool exit = 0; - for (vector::iterator it = v.begin(); it != v.end() && !exit; it++) + for (int i = 1; i < argc; i++) { - if (*it == "-v" || *it == "--version") + if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { cout << "ncmpcpp version: " << VERSION << endl << "built with support for:" @@ -76,9 +72,9 @@ bool ParseArgv(int argc, char **argv) << " unicode" # endif << endl; - return 1; + exit(0); } - else if (*it == "-?" || *it == "--help") + else if (strcmp(argv[i], "-?") == 0 || strcmp(argv[i], "--help") == 0) { cout << "Usage: ncmpcpp [OPTION]...\n" @@ -92,67 +88,68 @@ bool ParseArgv(int argc, char **argv) << " prev play the previous song\n" << " volume [+-] adjusts volume by [+-]\n" ; - return 1; + exit(0); } if (!ConnectToMPD()) - return 1; + exit(0); - if (*it == "play") + if (strcmp(argv[i], "play") == 0) { Mpd->Play(); - exit = 1; + quit = 1; } - else if (*it == "pause") + else if (strcmp(argv[i], "pause") == 0) { Mpd->Execute("pause \"1\"\n"); - exit = 1; + quit = 1; } - else if (*it == "toggle") + else if (strcmp(argv[i], "toggle") == 0) { Mpd->Execute("pause\n"); - exit = 1; + quit = 1; } - else if (*it == "stop") + else if (strcmp(argv[i], "stop") == 0) { Mpd->Stop(); - exit = 1; + quit = 1; } - else if (*it == "next") + else if (strcmp(argv[i], "next") == 0) { Mpd->Next(); - exit = 1; + quit = 1; } - else if (*it == "prev") + else if (strcmp(argv[i], "prev") == 0) { Mpd->Prev(); - exit = 1; + quit = 1; } - else if (*it == "volume") + else if (strcmp(argv[i], "volume") == 0) { - it++; + i++; Mpd->UpdateStatus(); if (!Mpd->GetErrorMessage().empty()) { cout << "Error: " << Mpd->GetErrorMessage() << endl; - return 1; + exit(0); } - if (it != v.end()) - Mpd->SetVolume(Mpd->GetVolume()+StrToInt(*it)); - exit = 1; + if (i != argc) + Mpd->SetVolume(Mpd->GetVolume()+atoi(argv[i])); + quit = 1; } else { - cout << "ncmpcpp: invalid option " << *it << endl; - return 1; + cout << "ncmpcpp: invalid option: " << argv[i] << endl; + exit(0); } if (!Mpd->GetErrorMessage().empty()) { cout << "Error: " << Mpd->GetErrorMessage() << endl; - return 1; + exit(0); } } - return exit; + if (quit) + exit(0); } bool CaseInsensitiveSorting::operator()(string a, string b) diff --git a/src/helpers.h b/src/helpers.h index 87d29c8e..b25fd521 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -26,7 +26,7 @@ #include "settings.h" bool ConnectToMPD(); -bool ParseArgv(int, char **); +void ParseArgv(int, char **); class CaseInsensitiveSorting { diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 2db65df5..e6bc46e2 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -186,11 +186,7 @@ int main(int argc, char *argv[]) if (argc > 1) { - if (ParseArgv(argc, argv)) - { - Mpd->Disconnect(); - return 0; - } + ParseArgv(argc, argv); } if (!ConnectToMPD())