GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: fxe_file_date_time_set.c Lines: 70 70 100.0 %
Date: 2024-01-10 21:53:23 Branches: 63 63 100.0 %

Line Branch Exec Source
1
/**************************************************************************/
2
/*                                                                        */
3
/*       Copyright (c) Microsoft Corporation. All rights reserved.        */
4
/*                                                                        */
5
/*       This software is licensed under the Microsoft Software License   */
6
/*       Terms for Microsoft Azure RTOS. Full text of the license can be  */
7
/*       found in the LICENSE file at https://aka.ms/AzureRTOS_EULA       */
8
/*       and in the root directory of this software.                      */
9
/*                                                                        */
10
/**************************************************************************/
11
12
13
/**************************************************************************/
14
/**************************************************************************/
15
/**                                                                       */
16
/** FileX Component                                                       */
17
/**                                                                       */
18
/**   File                                                                */
19
/**                                                                       */
20
/**************************************************************************/
21
/**************************************************************************/
22
23
#define FX_SOURCE_CODE
24
25
26
/* Include necessary system files.  */
27
28
#include "fx_api.h"
29
#include "fx_file.h"
30
31
32
FX_CALLER_CHECKING_EXTERNS
33
34
35
/**************************************************************************/
36
/*                                                                        */
37
/*  FUNCTION                                               RELEASE        */
38
/*                                                                        */
39
/*    _fxe_file_date_time_set                             PORTABLE C      */
40
/*                                                           6.1          */
41
/*  AUTHOR                                                                */
42
/*                                                                        */
43
/*    William E. Lamie, Microsoft Corporation                             */
44
/*                                                                        */
45
/*  DESCRIPTION                                                           */
46
/*                                                                        */
47
/*    This function checks for errors in the file date/time set service.  */
48
/*                                                                        */
49
/*  INPUT                                                                 */
50
/*                                                                        */
51
/*    media_ptr                             Media control block pointer   */
52
/*    file_name                             File name pointer             */
53
/*    year                                  Year                          */
54
/*    month                                 Month                         */
55
/*    day                                   Day                           */
56
/*    hour                                  Hour                          */
57
/*    minute                                Minute                        */
58
/*    second                                Second                        */
59
/*                                                                        */
60
/*  OUTPUT                                                                */
61
/*                                                                        */
62
/*    return status                                                       */
63
/*                                                                        */
64
/*  CALLS                                                                 */
65
/*                                                                        */
66
/*    _fx_file_date_time_set                Actual file date/time set     */
67
/*                                            service                     */
68
/*                                                                        */
69
/*  CALLED BY                                                             */
70
/*                                                                        */
71
/*    Application Code                                                    */
72
/*                                                                        */
73
/*  RELEASE HISTORY                                                       */
74
/*                                                                        */
75
/*    DATE              NAME                      DESCRIPTION             */
76
/*                                                                        */
77
/*  05-19-2020     William E. Lamie         Initial Version 6.0           */
78
/*  09-30-2020     William E. Lamie         Modified comment(s),          */
79
/*                                            resulting in version 6.1    */
80
/*                                                                        */
81
/**************************************************************************/
82
458
UINT  _fxe_file_date_time_set(FX_MEDIA *media_ptr, CHAR *file_name,
83
                              UINT year, UINT month, UINT day, UINT hour, UINT minute, UINT second)
84
{
85
86
UINT status;
87
88
89
    /* Check for a NULL media or file name pointer.  */
90

458
    if ((media_ptr == FX_NULL) || (file_name == FX_NULL))
91
    {
92
2
        return(FX_PTR_ERROR);
93
    }
94
95
    /* Check for invalid year.  */
96

456
    if ((year < FX_BASE_YEAR) || (year > FX_MAXIMUM_YEAR))
97
    {
98
2
        return(FX_INVALID_YEAR);
99
    }
100
101
    /* Check for invalid day.  */
102
454
    if (day < 1)
103
    {
104
13
        return(FX_INVALID_DAY);
105
    }
106
107
    /* Check for invalid day.  */
108



441
    switch (month)
109
    {
110
111
7
    case 1:
112
    {
113
114
        /* Check for 31 days.  */
115
7
        if (day > 31)
116
        {
117
1
            return(FX_INVALID_DAY);
118
        }
119
6
        break;
120
    }
121
122
4
    case 2:
123
    {
124
125
        /* Check for leap year.  */
126
4
        if ((year % 4) == 0)
127
        {
128
129
            /* Leap year, February has 29 days.  */
130
2
            if (day > 29)
131
            {
132
1
                return(FX_INVALID_DAY);
133
            }
134
        }
135
        else
136
        {
137
138
            /* Otherwise, non-leap year.  February has
139
               28 days.  */
140
2
            if (day > 28)
141
            {
142
1
                return(FX_INVALID_DAY);
143
            }
144
        }
145
2
        break;
146
    }
147
148
2
    case 3:
149
    {
150
151
        /* Check for 31 days.  */
152
2
        if (day > 31)
153
        {
154
1
            return(FX_INVALID_DAY);
155
        }
156
1
        break;
157
    }
158
159
2
    case 4:
160
    {
161
162
        /* Check for 30 days.  */
163
2
        if (day > 30)
164
        {
165
1
            return(FX_INVALID_DAY);
166
        }
167
1
        break;
168
    }
169
170
2
    case 5:
171
    {
172
173
        /* Check for 31 days.  */
174
2
        if (day > 31)
175
        {
176
1
            return(FX_INVALID_DAY);
177
        }
178
1
        break;
179
    }
180
181
2
    case 6:
182
    {
183
184
        /* Check for 30 days.  */
185
2
        if (day > 30)
186
        {
187
1
            return(FX_INVALID_DAY);
188
        }
189
1
        break;
190
    }
191
192
2
    case 7:
193
    {
194
195
        /* Check for 31 days.  */
196
2
        if (day > 31)
197
        {
198
1
            return(FX_INVALID_DAY);
199
        }
200
1
        break;
201
    }
202
203
2
    case 8:
204
    {
205
206
        /* Check for 31 days.  */
207
2
        if (day > 31)
208
        {
209
1
            return(FX_INVALID_DAY);
210
        }
211
1
        break;
212
    }
213
214
2
    case 9:
215
    {
216
217
        /* Check for 30 days.  */
218
2
        if (day > 30)
219
        {
220
1
            return(FX_INVALID_DAY);
221
        }
222
1
        break;
223
    }
224
225
2
    case 10:
226
    {
227
228
        /* Check for 31 days.  */
229
2
        if (day > 31)
230
        {
231
1
            return(FX_INVALID_DAY);
232
        }
233
1
        break;
234
    }
235
236
2
    case 11:
237
    {
238
239
        /* Check for 30 days.  */
240
2
        if (day > 30)
241
        {
242
1
            return(FX_INVALID_DAY);
243
        }
244
1
        break;
245
    }
246
247
411
    case 12:
248
    {
249
250
        /* Check for 31 days.  */
251
411
        if (day > 31)
252
        {
253
1
            return(FX_INVALID_DAY);
254
        }
255
410
        break;
256
    }
257
258
1
    default:
259
260
        /* Invalid month.  */
261
1
        return(FX_INVALID_MONTH);
262
    }
263
264
    /* Check for invalid hour.  */
265
427
    if (hour > FX_MAXIMUM_HOUR)
266
    {
267
2
        return(FX_INVALID_HOUR);
268
    }
269
270
    /* Check for invalid minute.  */
271
425
    if (minute > FX_MAXIMUM_MINUTE)
272
    {
273
1
        return(FX_INVALID_MINUTE);
274
    }
275
276
    /* Check for invalid second.  */
277
424
    if (second > FX_MAXIMUM_SECOND)
278
    {
279
1
        return(FX_INVALID_SECOND);
280
    }
281
282
    /* Check for a valid caller.  */
283

423
    FX_CALLER_CHECKING_CODE
284
285
    /* Call actual file date/time set service.  */
286
15
    status =  _fx_file_date_time_set(media_ptr, file_name,
287
                                     year, month, day,
288
                                     hour, minute, second);
289
290
    /* Return status to the caller.  */
291
15
    return(status);
292
}
293