From: Hans Verkuil Date: Mon, 11 Aug 2014 13:25:35 +0000 (+0200) Subject: qv4l2: allow '-d1' option X-Git-Tag: v4l-utils-1.3.90~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ea3b599006cfa1be42514893f08cd470ad6e3a95;p=platform%2Fupstream%2Fv4l-utils.git qv4l2: allow '-d1' option The v4l2-ctl utility supports -d1 to select /dev/video1. qv4l2 requires you to write '-d 1'. I do that wrong all the time, so now qv4l2 supports both versions. Signed-off-by: Hans Verkuil --- diff --git a/utils/qv4l2/qv4l2.cpp b/utils/qv4l2/qv4l2.cpp index 72083f5..8a9dad6 100644 --- a/utils/qv4l2/qv4l2.cpp +++ b/utils/qv4l2/qv4l2.cpp @@ -1590,6 +1590,42 @@ static QString getDeviceName(QString dev, QString &name) return ok ? QString("%1%2").arg(dev).arg(name) : name; } +static bool processShortOption(const QStringList &args, int &i, QString &dev) +{ + if (args[i].length() < 2) + return false; + if (args[i].length() == 2) { + if (i + 1 >= args.size()) { + usageError(args[i].toAscii()); + return false; + } + dev = args[++i]; + return true; + } + dev = args[i].mid(2); + return true; +} + +static bool processLongOption(const QStringList &args, int &i, QString &dev) +{ + int index = args[i].indexOf('='); + + if (index >= 0) { + dev = args[i].mid(index + 1); + if (dev.length() == 0) { + usageError("--device"); + return false; + } + return true; + } + if (i + 1 >= args.size()) { + usageError(args[i].toAscii()); + return false; + } + dev = args[++i]; + return true; +} + int main(int argc, char **argv) { QApplication a(argc, argv); @@ -1606,94 +1642,36 @@ int main(int argc, char **argv) QStringList args = a.arguments(); for (int i = 1; i < args.size(); i++) { - if (args[i] == "-d" || args[i] == "--device") { - ++i; - if (i >= args.size()) { - usageError("-d"); - return 0; - } - - video_device = args[i]; - if (video_device.startsWith("-")) { - usageError("-d"); - return 0; - } - } else if (args[i] == "-V" || args[i] == "--vbi-device") { - ++i; - if (i >= args.size()) { - usageError("-V"); + if (args[i].startsWith("-d")) { + if (!processShortOption(args, i, video_device)) return 0; - } - - vbi_device = args[i]; - if (vbi_device.startsWith("-")) { - usageError("-V"); - return 0; - } - } else if (args[i] == "-r" || args[i] == "--radio-device") { - ++i; - if (i >= args.size()) { - usageError("-r"); - return 0; - } - - radio_device = args[i]; - if (radio_device.startsWith("-")) { - usageError("-r"); - return 0; - } - } else if (args[i] == "-S" || args[i] == "--sdr-device") { - ++i; - if (i >= args.size()) { - usageError("-S"); - return 0; - } - - sdr_device = args[i]; - if (sdr_device.startsWith("-")) { - usageError("-S"); - return 0; - } } else if (args[i].startsWith("--device")) { - QStringList param = args[i].split("="); - if (param.size() == 2) { - video_device = param[1]; - } else { - usageError("--device"); + if (!processLongOption(args, i, video_device)) + return 0; + } else if (args[i].startsWith("-V")) { + if (!processShortOption(args, i, vbi_device)) return 0; - } } else if (args[i].startsWith("--vbi-device")) { - QStringList param = args[i].split("="); - if (param.size() == 2) { - vbi_device = param[1]; - } else { - usageError("--vbi-device"); + if (!processLongOption(args, i, vbi_device)) + return 0; + } else if (args[i].startsWith("-r")) { + if (!processShortOption(args, i, radio_device)) return 0; - } } else if (args[i].startsWith("--radio-device")) { - QStringList param = args[i].split("="); - if (param.size() == 2) { - radio_device = param[1]; - } else { - usageError("--radio-device"); + if (!processLongOption(args, i, radio_device)) + return 0; + } else if (args[i].startsWith("-S")) { + if (!processShortOption(args, i, sdr_device)) return 0; - } } else if (args[i].startsWith("--sdr-device")) { - QStringList param = args[i].split("="); - if (param.size() == 2) { - sdr_device = param[1]; - } else { - usageError("--sdr-device"); + if (!processLongOption(args, i, sdr_device)) return 0; - } } else if (args[i] == "-h" || args[i] == "--help") { usage(); return 0; } else if (args[i] == "-R" || args[i] == "--raw") { raw = true; - - } else { printf("Invalid argument %s\n", args[i].toAscii().data()); return 0;