diff options
Diffstat (limited to 'source4/lib/registry')
-rw-r--r-- | source4/lib/registry/patchfile_preg.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/source4/lib/registry/patchfile_preg.c b/source4/lib/registry/patchfile_preg.c index e9801bb425..30a9aea2a5 100644 --- a/source4/lib/registry/patchfile_preg.c +++ b/source4/lib/registry/patchfile_preg.c @@ -27,27 +27,26 @@ struct preg_data { int fd; TALLOC_CTX *ctx; - struct smb_iconv_convenience *ic; }; -static WERROR preg_read_utf16(struct smb_iconv_convenience *ic, int fd, char *c) +static WERROR preg_read_utf16(int fd, char *c) { uint16_t v; if (read(fd, &v, 2) < 2) { return WERR_GENERAL_FAILURE; } - push_codepoint(ic, c, v); + push_codepoint(c, v); return WERR_OK; } -static WERROR preg_write_utf16(struct smb_iconv_convenience *ic, int fd, const char *string) +static WERROR preg_write_utf16(int fd, const char *string) { codepoint_t v; uint16_t i; size_t size; for (i = 0; i < strlen(string); i+=size) { - v = next_codepoint_convenience(ic, &string[i], &size); + v = next_codepoint(&string[i], &size); if (write(fd, &v, 2) < 2) { return WERR_GENERAL_FAILURE; } @@ -67,19 +66,19 @@ static WERROR reg_preg_diff_set_value(void *_data, const char *key_name, struct preg_data *data = (struct preg_data *)_data; uint32_t buf; - preg_write_utf16(data->ic, data->fd, "["); - preg_write_utf16(data->ic, data->fd, key_name); - preg_write_utf16(data->ic, data->fd, ";"); - preg_write_utf16(data->ic, data->fd, value_name); - preg_write_utf16(data->ic, data->fd, ";"); + preg_write_utf16(data->fd, "["); + preg_write_utf16(data->fd, key_name); + preg_write_utf16(data->fd, ";"); + preg_write_utf16(data->fd, value_name); + preg_write_utf16(data->fd, ";"); SIVAL(&buf, 0, value_type); write(data->fd, &buf, sizeof(uint32_t)); - preg_write_utf16(data->ic, data->fd, ";"); + preg_write_utf16(data->fd, ";"); SIVAL(&buf, 0, value_data.length); write(data->fd, &buf, sizeof(uint32_t)); - preg_write_utf16(data->ic, data->fd, ";"); + preg_write_utf16(data->fd, ";"); write(data->fd, value_data.data, value_data.length); - preg_write_utf16(data->ic, data->fd, "]"); + preg_write_utf16(data->fd, "]"); return WERR_OK; } @@ -169,7 +168,6 @@ _PUBLIC_ WERROR reg_preg_diff_save(TALLOC_CTX *ctx, const char *filename, write(data->fd, (uint8_t *)&preg_header,8); data->ctx = ctx; - data->ic = ic; *callbacks = talloc(ctx, struct reg_diff_callbacks); @@ -228,7 +226,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, while(1) { uint32_t value_type, length; - if (!W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr))) { + if (!W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr))) { break; } if (*buf_ptr != '[') { @@ -239,7 +237,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Get the path */ buf_ptr = buf; - while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && + while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && *buf_ptr != ';' && buf_ptr-buf < buf_size) { buf_ptr++; } @@ -248,7 +246,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Get the name */ buf_ptr = buf; - while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && + while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && *buf_ptr != ';' && buf_ptr-buf < buf_size) { buf_ptr++; } @@ -265,7 +263,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Read past delimiter */ buf_ptr = buf; - if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && *buf_ptr == ';') && buf_ptr-buf < buf_size) { DEBUG(0, ("Error in PReg file.\n")); ret = WERR_GENERAL_FAILURE; @@ -279,7 +277,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, } /* Read past delimiter */ buf_ptr = buf; - if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && *buf_ptr == ';') && buf_ptr-buf < buf_size) { DEBUG(0, ("Error in PReg file.\n")); ret = WERR_GENERAL_FAILURE; @@ -297,7 +295,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Check if delimiter is in place (whine if it isn't) */ buf_ptr = buf; - if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && *buf_ptr == ']') && buf_ptr-buf < buf_size) { DEBUG(0, ("Warning: Missing ']' in PReg file, expected ']', got '%c' 0x%x.\n", *buf_ptr, *buf_ptr)); |