ocssw V2022
setupflags.c
Go to the documentation of this file.
1 #include <setupflags.h>
2 #include <string.h>
3 #include <stdlib.h>
4 
5 void setupflags(char *flagdef, char *flaguse, uint32_t *flagusemask,
6  uint32_t *required, int *status) {
7  int32_t BITS[32] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
8  0x00000010, 0x00000020, 0x00000040, 0x00000080,
9  0x00000100, 0x00000200, 0x00000400, 0x00000800,
10  0x00001000, 0x00002000, 0x00004000, 0x00008000,
11  0x00010000, 0x00020000, 0x00040000, 0x00080000,
12  0x00100000, 0x00200000, 0x00400000, 0x00800000,
13  0x01000000, 0x02000000, 0x04000000, 0x08000000,
14  0x10000000, 0x20000000, 0x40000000, 0x80000000};
15 
16  int bitNum;
17  char *tmpFlags;
18  char *ptr, *ptr2;
19 
20  *status = 0;
21  *flagusemask = 0;
22  *required = 0;
23 
24  bitNum = 0;
25  tmpFlags = strdup(flagdef);
26  ptr = strtok(tmpFlags, ",");
27  while (ptr) {
28  if (ptr) {
29  if ((ptr2 = strstr(flaguse, ptr))) {
30  ptr2--;
31  if (*ptr2 == '~')
32  *required = *required | BITS[bitNum];
33  else
34  *flagusemask = *flagusemask | BITS[bitNum];
35  }
36  }
37  ptr = strtok(NULL, ",");
38  bitNum++;
39  if (bitNum > 33) {
40  *status = -1;
41  break;
42  }
43  }
44 
45  free(tmpFlags);
46 }
47 
int status
Definition: l1_czcs_hdf.c:32
#define NULL
Definition: decode_rs.h:63
void setupflags(char *flagdef, char *flaguse, uint32_t *flagusemask, uint32_t *required, int *status)
Definition: setupflags.c:5
char * strdup(const char *)