Reverse oreder of soleq args.

This commit is contained in:
Dianne Skoll
2022-12-23 10:56:13 -05:00
parent 3a250ce765
commit af88e393f9
2 changed files with 60 additions and 50 deletions

View File

@@ -300,7 +300,7 @@ BuiltinFunc Func[] = {
{ "shell", 1, 2, 0, FShell },
{ "shellescape", 1, 1, 1, FShellescape },
{ "slide", 2, NO_MAX, 0, FSlide },
{ "soleq", 2, 2, 1, FSoleq },
{ "soleq", 1, 2, 1, FSoleq },
{ "stdout", 0, 0, 1, FStdout },
{ "strlen", 1, 1, 1, FStrlen },
{ "substr", 2, 3, 1, FSubstr },
@@ -3606,35 +3606,45 @@ solstice_equinox_for_year(int y, int which)
static int
FSoleq(func_info *info)
{
int y, m, d, dse;
int y, dse, which, ret;
RetVal.type = ERR_TYPE;
if (ARG(0).type == INT_TYPE) {
y = ARGV(0);
if (y < BASE) {
return E_2LOW;
} else if (y > BASE+YR_RANGE) {
return E_2HIGH;
}
} else if (HASDATE(ARG(0))) {
FromDSE(DATEPART(ARG(0)), &y, &m, &d); /* We just want the year */
} else {
return E_BAD_TYPE;
}
ASSERT_TYPE(1, INT_TYPE);
if (ARGV(1) < 0) {
dse = NO_DATE;
ASSERT_TYPE(0, INT_TYPE);
which = ARGV(0);
if (which < 0) {
return E_2LOW;
} else if (ARGV(1) > 3) {
} else if (which > 3) {
return E_2HIGH;
}
dse = solstice_equinox_for_year(y, ARGV(1));
if (HASDATE(ARG(0)) && (dse / MINUTES_PER_DAY) < DATEPART(ARG(0))) {
dse = solstice_equinox_for_year(y+1, ARGV(1));
if (Nargs > 1) {
if (ARG(1).type == INT_TYPE) {
y = ARGV(1);
if (y < BASE) {
return E_2LOW;
} else if (y > BASE+YR_RANGE) {
return E_2HIGH;
}
} else if (HASDATE(ARG(1))) {
dse = DATEPART(ARG(1));
FromDSE(dse, &y, NULL, NULL); /* We just want the year */
} else {
return E_BAD_TYPE;
}
} else {
/* If no second argument, default to today */
dse = DSEToday;
FromDSE(dse, &y, NULL, NULL); /* We just want the year */
}
ASSERT_TYPE(1, INT_TYPE);
ret = solstice_equinox_for_year(y, which);
if (dse != NO_DATE && (ret / MINUTES_PER_DAY) < dse) {
ret = solstice_equinox_for_year(y+1, which);
}
RetVal.type = DATETIME_TYPE;
RETVAL = dse;
RETVAL = ret;
return OK;
}

View File

@@ -2,37 +2,37 @@ BANNER Solstice/Equinox Tests
SET $AddBlankLines 0
# Test solstice and equinox functions
MSG March Solstice 2022 is [localtoutc(soleq(2022,0))] UTC
MSG June Equinox 2022 is [localtoutc(soleq(2022,1))] UTC
MSG September Solstice 2022 is [localtoutc(soleq(2022,2))] UTC
MSG December Equinox 2022 is [localtoutc(soleq(2022,3))] UTC
MSG March Solstice 2022 is [localtoutc(soleq(0,2022))] UTC
MSG June Equinox 2022 is [localtoutc(soleq(1,2022))] UTC
MSG September Solstice 2022 is [localtoutc(soleq(2,2022))] UTC
MSG December Equinox 2022 is [localtoutc(soleq(3,2022))] UTC
MSG March Solstice 2023 is [localtoutc(soleq(2023,0))] UTC
MSG June Equinox 2023 is [localtoutc(soleq(2023,1))] UTC
MSG September Solstice 2023 is [localtoutc(soleq(2023,2))] UTC
MSG December Equinox 2023 is [localtoutc(soleq(2023,3))] UTC
MSG March Solstice 2023 is [localtoutc(soleq(0,2023))] UTC
MSG June Equinox 2023 is [localtoutc(soleq(1,2023))] UTC
MSG September Solstice 2023 is [localtoutc(soleq(2,2023))] UTC
MSG December Equinox 2023 is [localtoutc(soleq(3,2023))] UTC
MSG March Solstice 2024 is [localtoutc(soleq(2024,0))] UTC
MSG June Equinox 2024 is [localtoutc(soleq(2024,1))] UTC
MSG September Solstice 2024 is [localtoutc(soleq(2024,2))] UTC
MSG December Equinox 2024 is [localtoutc(soleq(2024,3))] UTC
MSG March Solstice 2024 is [localtoutc(soleq(0,2024))] UTC
MSG June Equinox 2024 is [localtoutc(soleq(1,2024))] UTC
MSG September Solstice 2024 is [localtoutc(soleq(2,2024))] UTC
MSG December Equinox 2024 is [localtoutc(soleq(3,2024))] UTC
MSG March Solstice 2025 is [localtoutc(soleq(2025,0))] UTC
MSG June Equinox 2025 is [localtoutc(soleq(2025,1))] UTC
MSG September Solstice 2025 is [localtoutc(soleq(2025,2))] UTC
MSG December Equinox 2025 is [localtoutc(soleq(2025,3))] UTC
MSG March Solstice 2025 is [localtoutc(soleq(0,2025))] UTC
MSG June Equinox 2025 is [localtoutc(soleq(1,2025))] UTC
MSG September Solstice 2025 is [localtoutc(soleq(2,2025))] UTC
MSG December Equinox 2025 is [localtoutc(soleq(3,2025))] UTC
MSG March Solstice 2026 is [localtoutc(soleq(2026,0))] UTC
MSG June Equinox 2026 is [localtoutc(soleq(2026,1))] UTC
MSG September Solstice 2026 is [localtoutc(soleq(2026,2))] UTC
MSG December Equinox 2026 is [localtoutc(soleq(2026,3))] UTC
MSG March Solstice 2026 is [localtoutc(soleq(0,2026))] UTC
MSG June Equinox 2026 is [localtoutc(soleq(1,2026))] UTC
MSG September Solstice 2026 is [localtoutc(soleq(2,2026))] UTC
MSG December Equinox 2026 is [localtoutc(soleq(3,2026))] UTC
MSG March Solstice 2030 is [localtoutc(soleq(2030,0))] UTC
MSG June Equinox 2030 is [localtoutc(soleq(2030,1))] UTC
MSG September Solstice 2030 is [localtoutc(soleq(2030,2))] UTC
MSG December Equinox 2030 is [localtoutc(soleq(2030,3))] UTC
MSG March Solstice 2030 is [localtoutc(soleq(0,2030))] UTC
MSG June Equinox 2030 is [localtoutc(soleq(1,2030))] UTC
MSG September Solstice 2030 is [localtoutc(soleq(2,2030))] UTC
MSG December Equinox 2030 is [localtoutc(soleq(3,2030))] UTC
MSG March Solstice 2050 is [localtoutc(soleq(2050,0))] UTC
MSG June Equinox 2050 is [localtoutc(soleq(2050,1))] UTC
MSG September Solstice 2050 is [localtoutc(soleq(2050,2))] UTC
MSG December Equinox 2050 is [localtoutc(soleq(2050,3))] UTC
MSG March Solstice 2050 is [localtoutc(soleq(0,2050))] UTC
MSG June Equinox 2050 is [localtoutc(soleq(1,2050))] UTC
MSG September Solstice 2050 is [localtoutc(soleq(2,2050))] UTC
MSG December Equinox 2050 is [localtoutc(soleq(3,2050))] UTC