Used to ensure that an AI component conforms to the YYMMDD or YYMM00 formats.
62{
63
64
65#define YY ( (data[0] - '0') * 10 + (data[1] - '0') )
66
67
68 size_t pos;
69 char yyyymmdd[8];
71
72 assert(data);
73
74
75
76
77
81 0,
82 data_len
83 );
84
85
86
87
88
89 for (pos = 0; pos < 6; pos++) {
93 pos,
94 1
95 );
96 }
97
98 memcpy(yyyymmdd + 2, data, 6);
99
100
101
102
103
105 yyyymmdd[0] = '1'; yyyymmdd[1] = '9';
107 yyyymmdd[0] = '2'; yyyymmdd[1] = '0';
108 } else {
109 yyyymmdd[0] = '2'; yyyymmdd[1] = '1';
110 }
111
113
117
119 assert(!err_pos || !err_len || ret ==
GS1_LINTER_OK || (*err_pos + *err_len <= 8));
120
123 ret,
124 *err_pos - 2,
125 *err_len
126 );
127
129
130}
#define GS1_LINTER_UNLIKELY(x)
Implementation may provide hint to the compiler that the expression is likely to be false.
Definition gs1syntaxdictionary-utils.h:76
#define GS1_LINTER_RETURN_ERROR(error, position, length)
Return from a linter indicating that a problem was detected with the given data.
Definition gs1syntaxdictionary-utils.h:103
#define GS1_LINTER_RETURN_OK
Return from a linter indicating that no problem was detected with the given data.
Definition gs1syntaxdictionary-utils.h:88
GS1_SYNTAX_DICTIONARY_API gs1_lint_err_t gs1_lint_yyyymmd0(const char *data, size_t data_len, size_t *err_pos, size_t *err_len)
Definition lint_yyyymmd0.c:54
gs1_lint_err_t
Linter return codes other than GS1_LINTER_OK indicate an error condition.
Definition gs1syntaxdictionary.h:76
@ GS1_LINTER_ILLEGAL_DAY
The date contains an illegal day of the month.
Definition gs1syntaxdictionary.h:114
@ GS1_LINTER_DATE_TOO_LONG
The date is too long for YYMMDD format.
Definition gs1syntaxdictionary.h:106
@ GS1_LINTER_ILLEGAL_MONTH
The date contains an illegal month of the year.
Definition gs1syntaxdictionary.h:113
@ GS1_LINTER_DATE_TOO_SHORT
The date is too short for YYMMDD format.
Definition gs1syntaxdictionary.h:105
@ GS1_LINTER_OK
No issues were detected by the linter.
Definition gs1syntaxdictionary.h:77
@ GS1_LINTER_NON_DIGIT_CHARACTER
A non-digit character was found where a digit is expected.
Definition gs1syntaxdictionary.h:78
#define CURRENT_YEAR
20YY: For converting YY to 19YY, 20YY, 21YY, etc. for leap year validation
Definition lint_yymmd0.c:38