libfru 2.0+git20240917.25293b1
FRU Manupulation Library
Loading...
Searching...
No Matches
frugen.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <errno.h>
10#include <stdio.h>
11#include <unistd.h>
12
13#include "fru.h"
14
23
25 fru_exploded_t fru;
26 fru_area_t areas[FRU_MAX_AREAS];
33};
34
38 fru_flags_t flags;
39 bool no_curr_date; // Don't use current timestamp if no 'date' is specified
40};
41
42extern volatile int debug_level;
43
44#define fatal(fmt, args...) do { \
45 fprintf(stderr, fmt, ##args); \
46 fprintf(stderr, "\n"); \
47 exit(1); \
48} while(0)
49
50#define warn(fmt, args...) do { \
51 typeof(errno) e = errno; \
52 fprintf(stderr, "WARNING: "); \
53 errno = e; \
54 fprintf(stderr, fmt, ##args); \
55 fprintf(stderr, "\n"); \
56 errno = e; \
57} while(0)
58
59#define debug(level, fmt, args...) do { \
60 typeof(errno) e = errno; \
61 if(level <= debug_level) { \
62 printf("DEBUG: "); \
63 errno = e; \
64 printf(fmt, ##args); \
65 printf("\n"); \
66 errno = e; \
67 } \
68} while(0)
69
70#define FRU_FIELD_CUSTOM (-1) // Applicable to any area
71typedef struct {
72 field_type_t type;
73 fru_area_type_t area;
74 union {
75 // The named enums are just aliases for debug convenience only
76 fru_chassis_field_t chassis;
77 fru_board_field_t board;
78 fru_prod_field_t product;
79 int index;
80 } field;
81 char *value;
84
85#define DATEBUF_SZ 20
89bool datestr_to_tv(const char *datestr, struct timeval *tv);
93void tv_to_datestr(char *datestr, const struct timeval *tv);
94
117fieldopt_t arg_to_fieldopt(char *arg);
118
138fru_mr_mgmt_type_t fru_mr_mgmt_type_by_name(const char *name);
139
145const char * fru_mr_mgmt_name_by_type(fru_mr_mgmt_type_t type);
146
bool datestr_to_tv(const char *datestr, struct timeval *tv)
Definition frugen.c:109
frugen_format_t
Definition frugen.h:15
@ FRUGEN_FMT_UNSET
Definition frugen.h:16
@ FRUGEN_FMT_LAST
Definition frugen.h:21
@ FRUGEN_FMT_BINARY
Definition frugen.h:19
@ FRUGEN_FMT_FIRST
Definition frugen.h:17
@ FRUGEN_FMT_JSON
Definition frugen.h:18
@ FRUGEN_FMT_TEXTOUT
Definition frugen.h:20
void tv_to_datestr(char *datestr, const struct timeval *tv)
Definition frugen.c:150
volatile int debug_level
Definition frugen.c:39
fieldopt_t arg_to_fieldopt(char *arg)
Definition frugen.c:160
fru_mr_mgmt_type_t fru_mr_mgmt_type_by_name(const char *name)
Definition frugen.c:51
const char * fru_mr_mgmt_name_by_type(fru_mr_mgmt_type_t type)
Definition frugen.c:65
Definition frugen.h:71
char * value
Definition frugen.h:81
fru_board_field_t board
Definition frugen.h:77
fru_chassis_field_t chassis
Definition frugen.h:76
fru_area_type_t area
Definition frugen.h:73
field_type_t type
Definition frugen.h:72
int index
Definition frugen.h:79
int custom_index
Definition frugen.h:82
fru_prod_field_t product
Definition frugen.h:78
Definition frugen.h:35
frugen_format_t format
Definition frugen.h:36
frugen_format_t outformat
Definition frugen.h:37
bool no_curr_date
Definition frugen.h:39
fru_flags_t flags
Definition frugen.h:38
Definition frugen.h:24
bool has_board
Definition frugen.h:28
bool has_internal
Definition frugen.h:31
fru_area_t areas[FRU_MAX_AREAS]
Definition frugen.h:26
bool has_multirec
Definition frugen.h:32
bool has_chassis
Definition frugen.h:27
bool has_bdate
Definition frugen.h:29
fru_exploded_t fru
Definition frugen.h:25
bool has_product
Definition frugen.h:30