Add str2fqdn for converting hostname string into DNS name notation:
www.xxxx.yy.com -> 3www4xxxx2yy3com0
Returned string must be freed after use by the caller.
Signed-off-by: Vadim Kochan <[email protected]>
---
str.c | 37 +++++++++++++++++++++++++++++++++++++
str.h | 1 +
2 files changed, 38 insertions(+)
diff --git a/str.c b/str.c
index 532058a..1d3e7ac 100644
--- a/str.c
+++ b/str.c
@@ -160,3 +160,40 @@ int str2mac(const char *str, uint8_t *mac, size_t len)
return 0;
}
+
+char *str2fqdn(const char *str)
+{
+ size_t slen = strlen(str);
+ size_t flen = 0;
+ char *fqdn;
+ char *tmp;
+ char *dup;
+ int i = 0;
+ int c = 0;
+
+ dup = xstrdup(str);
+ tmp = dup;
+
+ fqdn = xzmalloc(slen + 2);
+
+ while (tmp <= dup + slen && c++ <= slen) {
+ if (tmp[i] == '.' || tmp[i] == '\0') {
+ size_t dlen;
+
+ tmp[i] = '\0';
+ dlen = strlen(tmp);
+ fqdn[flen] = dlen;
+ memcpy(&fqdn[flen + 1], tmp, dlen);
+ flen += dlen + 1;
+ tmp += dlen + 1;
+ i = 0;
+
+ continue;
+ }
+
+ i++;
+ }
+
+ xfree(dup);
+ return fqdn;
+}
diff --git a/str.h b/str.h
index 7879af6..a362c53 100644
--- a/str.h
+++ b/str.h
@@ -14,5 +14,6 @@ extern char *argv2str(int startind, int argc, char **argv);
extern char **argv_insert(char **argv, size_t *count, const char *str);
extern void argv_free(char **argv);
extern int str2mac(const char *str, uint8_t *mac, size_t len);
+extern char *str2fqdn(const char *str);
#endif /* STR_H */
--
2.12.1
--
You received this message because you are subscribed to the Google Groups
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.