static int createYearsArray()

in src/win32/dt_win32.c [630:660]


static int createYearsArray(HKEY hkey_tz, YEARS_ARRAY yearsArray)
{
    DWORD dw = sizeof(DWORD);
    DWORD wYear = 0;
    DWORD dwEnumIndex = 0;
    char yearValueName[255] = {0,};
    DWORD dwErrorCode = ERROR_RESOURCE_NOT_FOUND;

    for (dwErrorCode = ERROR_SUCCESS; dwErrorCode != ERROR_NO_MORE_ITEMS ||
            (dwErrorCode != ERROR_SUCCESS && dwErrorCode != ERROR_NO_MORE_ITEMS);) {
        dw = sizeof(yearValueName);
        dwErrorCode = RegEnumValueA(hkey_tz, dwEnumIndex, yearValueName, &dw, NULL, NULL, NULL, NULL);
        dwEnumIndex++;
        if (strcmp(yearValueName, DYNAMIC_DST_FIRST_ENTRY) == 0
                || strcmp(yearValueName, DYNAMIC_DST_LAST_ENTRY) == 0) {
            continue;
        }
        if (EOF == sscanf_s(yearValueName, "%d", &wYear)) {
            continue;
        }

        InsertYearToArray(wYear, &yearsArray);
    }
    if (dwErrorCode != ERROR_SUCCESS && dwErrorCode != ERROR_NO_MORE_ITEMS) {
        free(yearsArray.years);
        return EXIT_FAILURE;
    }

    qsort_s(yearsArray.years, yearsArray.count, sizeof(DWORD), years_compare, NULL);
    return EXIT_SUCCESS;
}