dav/xattrtool.c

changeset 687
9922a349a61a
parent 663
888aa263c0f1
child 700
165811ea12ab
equal deleted inserted replaced
686:ab159748055c 687:9922a349a61a
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

mercurial