[neomutt-devel] [RFC] Move IDN version string to library

YU Bo tsu.yubo at gmail.com
Thu Apr 26 05:22:05 CEST 2018


Hi, this is my indent to move IDN string to library.
Link:
https://github.com/neomutt/neomutt/issues/1148
---
 mutt/idna.c  | 14 ++++++++++++++
 mutt/idna2.h |  1 +
 version.c    | 15 +--------------
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/mutt/idna.c b/mutt/idna.c
index ceb893f1..32fc4fd1 100644
--- a/mutt/idna.c
+++ b/mutt/idna.c
@@ -35,6 +35,13 @@
 #include "logging.h"
 #include "memory.h"
 #include "string2.h"
+
+#ifdef HAVE_STRINGPREP_H
+#include <stringprep.h>
+#elif defined(HAVE_IDN_STRINGPREP_H)
+#include <idn/stringprep.h>
+#endif
+
 #ifdef HAVE_IDN2_H
 #include <idn2.h>
 #elif defined(HAVE_IDN_IDN2_H)
@@ -67,6 +74,13 @@ bool IdnEncode;
 #endif /* HAVE_LIBIDN */

 #ifdef HAVE_LIBIDN
+
+/* some comment in here */
+const char *mutt_idna_version(void)
+{
+
+}
+
 /**
  * mutt_idna_to_ascii_lz - Convert a domain to Punycode
  * @param input  Domain
diff --git a/mutt/idna2.h b/mutt/idna2.h
index bd20a175..28d98888 100644
--- a/mutt/idna2.h
+++ b/mutt/idna2.h
@@ -33,5 +33,6 @@ extern bool IdnEncode;
 int   mutt_idna_to_ascii_lz(const char *input, char **output, int flags);
 char *mutt_idna_intl_to_local(const char *user, const char *domain, int flags);
 char *mutt_idna_local_to_intl(const char *user, const char *domain);
+char *mutt_idna_version(void);

 #endif /* _MUTT_IDNA_H */
diff --git a/version.c b/version.c
index 36d88084..4793c1b0 100644
--- a/version.c
+++ b/version.c
@@ -35,21 +35,8 @@
 #include <sys/utsname.h>
 #include <unistd.h>
 #include "mutt/mutt.h"
+#include "mutt/idna2.h"
 #include "mutt_curses.h"
-#ifdef HAVE_STRINGPREP_H
-#include <stringprep.h>
-#elif defined(HAVE_IDN_STRINGPREP_H)
-#include <idn/stringprep.h>
-#endif
-#ifdef HAVE_IDN2_H
-#include <idn2.h>
-#elif defined(HAVE_IDN_IDN2_H)
-#include <idn/idn2.h>
-#elif defined(HAVE_IDNA_H)
-#include <idna.h>
-#elif defined(HAVE_IDN_IDNA_H)
-#include <idn/idna.h>
-#endif

 /* #include "protos.h" */
 const char *mutt_make_version(void);
--
2.11.0

Here, i don't know how to implement mutt_idna_version in mutt/idna.c.
Because code example:

```print_version() in version.c

#ifdef HAVE_IDN2_H
  printf("\nlibidn: %s (compiled with %s)", idn2_check_version(NULL), IDN2_VERSION);
#elif defined(HAVE_LIBIDN)
  printf("\nlibidn: %s (compiled with %s)", stringprep_check_version(NULL), STRINGPREP_VERSION);
#endif
```
In my view, idn2_check_version must defined in <idn2.h> or <idna.h> or sth like it. Right?

If we implement *mutt_idna_version()* and where it is called?

And i am missing something?

Thanks,
	Bo,


More information about the neomutt-devel mailing list