1 #ifndef PRECOMPOSE_UNICODE_H
2 #define PRECOMPOSE_UNICODE_H
10 typedef struct dirent_prec_psx
{
11 ino_t d_ino
; /* Posix */
12 size_t max_name_len
; /* See below */
13 unsigned char d_type
; /* available on all systems git runs on */
16 * See http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html
17 * NAME_MAX + 1 should be enough, but some systems have
18 * NAME_MAX=255 and strlen(d_name) may return 508 or 510
19 * Solution: allocate more when needed, see precompose_utf8_readdir()
21 char d_name
[NAME_MAX
+1];
26 iconv_t ic_precompose
;
28 struct dirent_prec_psx
*dirent_nfc
;
31 const char *precompose_argv_prefix(int argc
, const char **argv
, const char *prefix
);
32 const char *precompose_string_if_needed(const char *in
);
33 void probe_utf8_pathname_composition(void);
35 PREC_DIR
*precompose_utf8_opendir(const char *dirname
);
36 struct dirent_prec_psx
*precompose_utf8_readdir(PREC_DIR
*dirp
);
37 int precompose_utf8_closedir(PREC_DIR
*dirp
);
39 #ifndef PRECOMPOSE_UNICODE_C
40 #define dirent dirent_prec_psx
41 #define opendir(n) precompose_utf8_opendir(n)
42 #define readdir(d) precompose_utf8_readdir(d)
43 #define closedir(d) precompose_utf8_closedir(d)
45 #endif /* PRECOMPOSE_UNICODE_C */
47 #endif /* PRECOMPOSE_UNICODE_H */