Skip to content
Snippets Groups Projects
Commit db93166f authored by Adam Wujek's avatar Adam Wujek :speech_balloon:
Browse files

userspace/libwr: improve atoidef in util.h, add strtoldef


Add strtoldef for reading hex values.

When not enough parameters were given to the program, str was always pointing
to the element outside argv.

Signed-off-by: default avatarAdam Wujek <adam.wujek@cern.ch>
parent 8f9966a0
Branches
Tags
......@@ -8,7 +8,10 @@
#include <unistd.h>
#include <sys/mman.h>
#define atoidef(str,def) (str)?atoi(str):def
#define atoidef(argc, argv, param_i, def) (argc > (param_i) ? \
atoi(argv[(param_i)]) : (def))
#define strtoldef(argc, argv, param_i, def) (argc > (param_i) ? \
strtol(argv[(param_i)], NULL, 0) : (def))
void shw_udelay_init(void);
void shw_udelay(uint32_t microseconds);
......
......@@ -312,11 +312,11 @@ int main(int argc, char **argv)
if(argc>1)
{
if (strcmp(argv[1], "remove") == 0) {
i=atoidef(argv[2],-1);
i = atoidef(argc, argv, 2, -1);
/* interface number 1..18*/
if ((0 < i && i <= 18)
&& (rtudexp_clear_entries(i - 1,
atoidef(argv[3], 0)
atoidef(argc, argv, 3, 0)
) == 0)) {
/* ok */
isok = 1;
......@@ -330,7 +330,7 @@ int main(int argc, char **argv)
if ((argc > 3)
&& (rtudexp_add_entry(argv[2],
atoi(argv[3]) - 1,
atoidef(argv[4], 0)
atoidef(argc, argv, 4, 0)
) == 0)) {
/* ok */
isok = 1;
......@@ -344,10 +344,10 @@ int main(int argc, char **argv)
&& (rtudexp_vlan_entry(atoi(argv[2]),
atoi(argv[3]) - 1,
argv[4],
atoidef(argv[5], 0),
atoidef(argv[6], 0),
atoidef(argv[7], 0),
atoidef(argv[8], 0)
atoidef(argc, argv, 5, 0),
atoidef(argc, argv, 6, 0),
atoidef(argc, argv, 7, 0),
atoidef(argc, argv, 8, 0)
) == 0)) {
/* ok */
isok = 1;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment