NMT: Allow NULL (B'0000') to be used as country selector in traffic area

This commit is contained in:
Andreas Eversberg 2017-05-28 09:35:47 +02:00
parent 57d4d1739e
commit e653475ff7
3 changed files with 12 additions and 3 deletions

View File

@ -71,7 +71,9 @@ void nmt_value2digits(uint64_t value, char *digits, int num)
digit = (value >> ((num - 1 - i) << 2)) & 0xf;
if (digit == 10)
digits[i] = '0';
else if (digit == 0 || digit > 10)
else if (digit == 0)
digits[i] = 'N';
else if (digit > 10)
digits[i] = '?';
else
digits[i] = digit + '0';
@ -88,8 +90,10 @@ uint64_t nmt_digits2value(const char *digits, int num)
digit = *digits++;
if (digit >= '1' && digit <= '9')
value |= digit - '0';
else
else if (digit == '0')
value |= 10;
else
value |= 0;
}
return value;

View File

@ -168,7 +168,10 @@ error_ta:
goto error_ta;
if (*p < '0' || *p > '9')
goto error_ta;
traffic_area[0] = rc + '0';
if (rc == -1)
traffic_area[0] = 'N';
else
traffic_area[0] = rc + '0';
traffic_area[1] = *p;
traffic_area[2] = '\0';
}

View File

@ -284,6 +284,8 @@ static struct nmt_country {
{ 2, "RU2", "", "" },
{ 3, "RU3", "", "" },
{ 4, "RU4", "", "" },
{ 4, "RU4", "", "" },
{ -1, "NULL", "", "" },
{ 0, NULL, NULL, NULL }
};