33 #include <stdio.h> |
33 #include <stdio.h> |
34 #include <stdlib.h> |
34 #include <stdlib.h> |
35 #include <string.h> |
35 #include <string.h> |
36 #include <errno.h> |
36 #include <errno.h> |
37 |
37 |
|
38 #ifdef _WIN32 |
|
39 #include <Windows.h> |
|
40 #endif |
|
41 |
38 #include "libxattr.h" |
42 #include "libxattr.h" |
39 |
43 |
40 int attrtool_list(int argc, char **argv, int values); |
44 int attrtool_list(int argc, char **argv, int values); |
41 int attrtool_get(int argc, char **argv, int raw); |
45 int attrtool_get(int argc, char **argv, int raw); |
42 int attrtool_set(int argc, char **argv); |
46 int attrtool_set(int argc, char **argv); |
49 fprintf(stderr, " get <file> <name>\n"); |
53 fprintf(stderr, " get <file> <name>\n"); |
50 fprintf(stderr, " set <file> <name> <value>\n"); |
54 fprintf(stderr, " set <file> <name> <value>\n"); |
51 fprintf(stderr, " remove <file> <name>\n"); |
55 fprintf(stderr, " remove <file> <name>\n"); |
52 } |
56 } |
53 |
57 |
|
58 int xattr_tool_main(int argc, char **argv); |
|
59 |
|
60 #ifdef _WIN32 |
|
61 static char* wchar2utf8(const wchar_t *wstr, size_t wlen) { |
|
62 size_t maxlen = wlen * 4; |
|
63 char *ret = malloc(maxlen + 1); |
|
64 int ret_len = WideCharToMultiByte( |
|
65 CP_UTF8, |
|
66 0, |
|
67 wstr, |
|
68 wlen, |
|
69 ret, |
|
70 maxlen, |
|
71 NULL, |
|
72 NULL); |
|
73 ret[ret_len] = 0; |
|
74 return ret; |
|
75 } |
|
76 |
|
77 int wmain(int argc, wchar_t **argv) { |
|
78 char **argv_utf8 = calloc(argc, sizeof(char*)); |
|
79 for(int i=0;i<argc;i++) { |
|
80 argv_utf8[i] = wchar2utf8(argv[i], wcslen(argv[i])); |
|
81 } |
|
82 |
|
83 int ret = xattr_tool_main(argc, argv_utf8); |
|
84 |
|
85 for(int i=0;i<argc;i++) { |
|
86 free(argv_utf8[i]); |
|
87 } |
|
88 free(argv_utf8); |
|
89 |
|
90 return ret; |
|
91 } |
|
92 #else |
54 int main(int argc, char **argv) { |
93 int main(int argc, char **argv) { |
|
94 return xattr_tool_main(argc, argv); |
|
95 } |
|
96 #endif |
|
97 |
|
98 int xattr_tool_main(int argc, char **argv) { |
55 if(argc < 3) { |
99 if(argc < 3) { |
56 print_usage(argv[0]); |
100 print_usage(argv[0]); |
57 return 1; |
101 return 1; |
58 } |
102 } |
59 |
103 |