projects
/
cascardo
/
declara.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Nova versão do IRPF 2021.
[cascardo/declara.git]
/
lib
/
util.h
diff --git
a/lib/util.h
b/lib/util.h
index
758d67b
..
689ffb9
100644
(file)
--- a/
lib/util.h
+++ b/
lib/util.h
@@
-19,15
+19,22
@@
#ifndef _UTIL_H
#define _UTIL_H
#ifndef _UTIL_H
#define _UTIL_H
-int set_llong(char *str, long long *val);
-int set_int(char **args, int argc, int *val);
-int set_string(char **args, int argc, char **str);
+#include <errno.h>
-#define SET_INT_(suffix, command, attr) \
+int set_llong(char *arg, long long *val);
+int set_int(char *arg, int *val);
+int set_string(char *arg, char **str);
+
+#define SET_VAL_(suffix, command, attr, type, param, func, help_) \
static int run_##suffix(struct declaracao *dec, char **args, int argc) \
{ \
static int run_##suffix(struct declaracao *dec, char **args, int argc) \
{ \
- int val; \
- int r = set_int(args, argc, &val); \
+ type val; \
+ int r; \
+ if (argc != 2) { \
+ dec_set_error(dec, "Comando %s espera um parâmetro "#param".", args[0]); \
+ return -EINVAL; \
+ } \
+ r = func(args[1], &val); \
if (r) \
return r; \
dec->attr = val; \
if (r) \
return r; \
dec->attr = val; \
@@
-36,25
+43,12
@@
static int run_##suffix(struct declaracao *dec, char **args, int argc) \
static struct cmd cmd_##suffix = { \
.name = #command, \
.run = run_##suffix, \
static struct cmd cmd_##suffix = { \
.name = #command, \
.run = run_##suffix, \
+ .help = help_, \
};
};
+#define SET_INT_(suffix, cmd, attr) SET_VAL_(suffix, cmd, attr, int, inteiro, set_int, NULL)
+#define SET_STRING_(suffix, cmd, attr) SET_VAL_(suffix, cmd, attr, char *, texto, set_string, NULL)
#define SET_INT(attr) SET_INT_(attr, attr, attr)
#define SET_INT(attr) SET_INT_(attr, attr, attr)
-
-#define SET_STRING_(suffix, command, attr) \
-static int run_##suffix(struct declaracao *dec, char **args, int argc) \
-{ \
- char *val; \
- int r = set_string(args, argc, &val); \
- if (r) \
- return r; \
- dec->attr = val; \
- return 0; \
-} \
-static struct cmd cmd_##suffix = { \
- .name = #command, \
- .run = run_##suffix, \
-}
-
#define SET_STRING(attr) SET_STRING_(attr, attr, attr)
static inline long long reais(long long val)
#define SET_STRING(attr) SET_STRING_(attr, attr, attr)
static inline long long reais(long long val)
@@
-71,4
+65,9
@@
static inline int centavos(long long val)
return (int) (-val % 100LL);
}
return (int) (-val % 100LL);
}
+#define FMT_R "R$ %lld,%02d"
+#define R(l) reais(l), centavos(l)
+
+int dumpfile(int fd, char *filename);
+
#endif
#endif