git.droids-corp.org
/
libcmdline.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cmdline: big rework and clean of cmdline library
[libcmdline.git]
/
src
/
lib
/
cmdline_parse_ipaddr.c
diff --git
a/src/lib/cmdline_parse_ipaddr.c
b/src/lib/cmdline_parse_ipaddr.c
index
276d644
..
eab2319
100644
(file)
--- a/
src/lib/cmdline_parse_ipaddr.c
+++ b/
src/lib/cmdline_parse_ipaddr.c
@@
-93,13
+93,6
@@
#include "cmdline_parse.h"
#include "cmdline_parse_ipaddr.h"
#include "cmdline_parse.h"
#include "cmdline_parse_ipaddr.h"
-struct cmdline_token_ops cmdline_token_ipaddr_ops = {
- .parse = cmdline_parse_ipaddr,
- .complete_get_nb = NULL,
- .complete_get_elt = NULL,
- .get_help = cmdline_get_help_ipaddr,
-};
-
#define INADDRSZ 4
#define IN6ADDRSZ 16
#define INADDRSZ 4
#define IN6ADDRSZ 16
@@
-289,8
+282,9
@@
inet_pton6(const char *src, unsigned char *dst)
return (1);
}
return (1);
}
-int
-cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res)
+static int
+cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res,
+ unsigned ressize)
{
struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk;
unsigned int token_len = 0;
{
struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk;
unsigned int token_len = 0;
@@
-299,18
+293,14
@@
cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res)
char *prefix, *prefix_end;
long prefixlen;
char *prefix, *prefix_end;
long prefixlen;
- if (
! *buf
)
+ if (
res && ressize < sizeof(cmdline_ipaddr_t)
)
return -1;
return -1;
- while (!cmdline_isendoftoken(buf[token_len]))
- token_len++;
-
/* if token is too big... */
/* if token is too big... */
- if (token_len >= INET6_ADDRSTRLEN+4)
+ token_len = snprintf(ip_str, sizeof(ip_str), "%s", buf);
+ if (token_len >= sizeof(ip_str))
return -1;
return -1;
- snprintf(ip_str, token_len+1, "%s", buf);
-
/* convert the network prefix */
if (tk2->ipaddr_data.flags & CMDLINE_IPADDR_NETWORK) {
prefix = strrchr(ip_str, '/');
/* convert the network prefix */
if (tk2->ipaddr_data.flags & CMDLINE_IPADDR_NETWORK) {
prefix = strrchr(ip_str, '/');
@@
-343,8
+333,9
@@
cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res)
}
}
-int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf,
- unsigned int size)
+static int
+cmdline_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf,
+ unsigned int size)
{
struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk;
{
struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk;
@@
-373,3
+364,12
@@
int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf,
}
return 0;
}
}
return 0;
}
+
+struct cmdline_token_ops cmdline_token_ipaddr_ops = {
+ .parse = cmdline_parse_ipaddr,
+ .complete_start = NULL,
+ .complete_iterate = NULL,
+ .complete_end = NULL,
+ .help = cmdline_help_ipaddr,
+};
+