NS_IMETHODIMP nsCommandLine::HandleFlagWithParam(const nsAString& aFlag, bool aCaseSensitive, nsAString& aResult) { nsresult rv; int32_t found; rv = FindFlag(aFlag, aCaseSensitive, &found); NS_ENSURE_SUCCESS(rv, rv); if (found == -1) { aResult.SetIsVoid(true); return NS_OK; } if (found == int32_t(mArgs.Length()) - 1) { return NS_ERROR_INVALID_ARG; } ++found; { // scope for validity of |param|, which RemoveArguments call invalidates const nsString& param = mArgs[found]; if (!param.IsEmpty() && param.First() == '-') { return NS_ERROR_INVALID_ARG; } aResult = param; } RemoveArguments(found - 1, found); return NS_OK; }
NS_IMETHODIMP nsCommandLine::HandleFlagWithParam(const nsAString& aFlag, bool aCaseSensitive, nsAString& aResult) { nsresult rv; int32_t found; rv = FindFlag(aFlag, aCaseSensitive, &found); NS_ENSURE_SUCCESS(rv, rv); if (found == -1) { aResult.SetIsVoid(true); return NS_OK; } if (found == int32_t(mArgs.Length()) - 1) { return NS_ERROR_INVALID_ARG; } ++found; if (mArgs[found].First() == '-') { return NS_ERROR_INVALID_ARG; } aResult = mArgs[found]; RemoveArguments(found - 1, found); return NS_OK; }
NS_IMETHODIMP nsCommandLine::HandleFlag(const nsAString& aFlag, bool aCaseSensitive, bool *aResult) { nsresult rv; int32_t found; rv = FindFlag(aFlag, aCaseSensitive, &found); NS_ENSURE_SUCCESS(rv, rv); if (found == -1) { *aResult = false; return NS_OK; } *aResult = true; RemoveArguments(found, found); return NS_OK; }