36 size_t i, escape_count,
pos;
39 for (
i = 0, escape_count = 0;
i <
str_len;
i++)
45 if (
c ==
'\r' ||
c ==
'\n' ||
c ==
'\\' ||
c ==
'"')
87 static const WCHAR quoted_fmt[] = {
'"',
'%',
's',
'"',
'=',0};
88 static const WCHAR default_name[] = {
'@',
'=',0};
111 size_t len = 0, line_len;
113 static const WCHAR fmt[] = {
'"',
'%',
's',
'"',0};
125 static const WCHAR fmt[] = {
'd',
'w',
'o',
'r',
'd',
':',
'%',
'0',
'8',
'x',0};
133 static const WCHAR hex[] = {
'h',
'e',
'x',
':',0};
134 static const WCHAR hexp_fmt[] = {
'h',
'e',
'x',
'(',
'%',
'x',
')',
':',0};
153 #define MAX_HEX_CHARS 77 158 static const WCHAR fmt[] = {
'%',
'0',
'2',
'x',0};
159 static const WCHAR hex_concat[] = {
'\\',
'\r',
'\n',
' ',
' ',0};
160 size_t num_commas,
i,
pos;
166 num_commas =
size - 1;
172 if (
i == num_commas)
break;
232 static const WCHAR fmt[] = {
'\r',
'\n',
'[',
'%',
's',
']',
'\r',
'\n',0};
244 DWORD max_value_len = 256, value_len;
245 DWORD max_data_bytes = 2048, data_size;
248 WCHAR *value_name, *subkey_name, *subkey_path;
260 value_len = max_value_len;
261 data_size = max_data_bytes;
271 if (data_size > max_data_bytes)
273 max_data_bytes = data_size;
317 static const WCHAR header[] = { 0xfeff,
'W',
'i',
'n',
'd',
'o',
'w',
's',
' ',
318 'R',
'e',
'g',
'i',
's',
't',
'r',
'y',
' ',
'E',
'd',
'i',
't',
'o',
'r',
' ',
319 'V',
'e',
'r',
's',
'i',
'o',
'n',
' ',
'5',
'.',
'0',
'0',
'\r',
'\n',0};
367 if ((
s[0] ==
'/' ||
s[0] ==
'-') && (
s[1] ==
'y' ||
s[1] ==
'Y'))
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define ERROR_FILE_EXISTS
static size_t export_value_name(HANDLE hFile, WCHAR *name, size_t len)
static BOOL is_overwrite_switch(const WCHAR *s)
static WCHAR * escape_string(WCHAR *str, size_t str_len, size_t *line_len)
GLsizei const GLchar ** path
static void write_file(HANDLE hFile, const WCHAR *str)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
void WINAPIV output_message(unsigned int id,...)
BOOL parse_registry_key(const WCHAR *key, HKEY *root, WCHAR **path, WCHAR **long_key)
static const char hex[16]
static HANDLE create_file(const WCHAR *filename, DWORD action)
GLenum GLuint GLenum GLsizei const GLchar * buf
LONG WINAPI RegCloseKey(HKEY hKey)
static void export_data(HANDLE hFile, WCHAR *value_name, DWORD value_len, DWORD type, void *data, size_t size)
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
#define STRING_INVALID_KEY
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
_CRTIMP wchar_t *__cdecl _wcsupr(_Inout_z_ wchar_t *_String)
#define FORMAT_MESSAGE_FROM_SYSTEM
WCHAR * build_subkey_path(WCHAR *path, DWORD path_len, WCHAR *subkey_name, DWORD subkey_len)
static HANDLE get_file_handle(WCHAR *filename, BOOL overwrite_file)
#define STRING_INVALID_SYNTAX
static int export_registry_data(HANDLE hFile, HKEY key, WCHAR *path)
static void export_key_name(HANDLE hFile, WCHAR *name)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define FILE_ATTRIBUTE_NORMAL
static size_t export_hex_data_type(HANDLE hFile, DWORD type)
void * heap_xrealloc(void *buf, size_t size)
static void export_newline(HANDLE hFile)
static void export_dword_data(WCHAR **buf, DWORD *data)
#define FORMAT_MESSAGE_IGNORE_INSERTS
BOOL ask_confirm(unsigned int msgid, WCHAR *reg_info)
static void export_file_header(HANDLE hFile)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define STRING_OVERWRITE_FILE
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static void export_hex_data(HANDLE hFile, WCHAR **buf, DWORD type, DWORD line_len, void *data, DWORD size)
static void export_string_data(WCHAR **buf, WCHAR *data, size_t size)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
int reg_export(int argc, WCHAR *argv[])
void * heap_xalloc(size_t size)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
GLuint GLuint GLsizei GLenum type
void output_writeconsole(const WCHAR *str, DWORD wlen)
static BOOL heap_free(void *mem)