diff options
author | bubulle <bubulle@alioth.debian.org> | 2010-04-06 18:12:47 +0000 |
---|---|---|
committer | bubulle <bubulle@alioth.debian.org> | 2010-04-06 18:12:47 +0000 |
commit | c038a4e9c09ba4ac77d885ac0afee418f41b8891 (patch) | |
tree | f5b2444727ff995f46dabbbf94863e9926501444 /source4/lib/registry/patchfile_preg.c | |
parent | 9e2f5a6ab663f7a111832217c527508c75ddae8a (diff) | |
download | samba-c038a4e9c09ba4ac77d885ac0afee418f41b8891.tar.gz |
Revert to 3.4.7...for now?
git-svn-id: svn://svn.debian.org/svn/pkg-samba/trunk/samba@3416 fc4039ab-9d04-0410-8cac-899223bdd6b0
Diffstat (limited to 'source4/lib/registry/patchfile_preg.c')
-rw-r--r-- | source4/lib/registry/patchfile_preg.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/source4/lib/registry/patchfile_preg.c b/source4/lib/registry/patchfile_preg.c index 30a9aea2a5..e9801bb425 100644 --- a/source4/lib/registry/patchfile_preg.c +++ b/source4/lib/registry/patchfile_preg.c @@ -27,26 +27,27 @@ struct preg_data { int fd; TALLOC_CTX *ctx; + struct smb_iconv_convenience *ic; }; -static WERROR preg_read_utf16(int fd, char *c) +static WERROR preg_read_utf16(struct smb_iconv_convenience *ic, int fd, char *c) { uint16_t v; if (read(fd, &v, 2) < 2) { return WERR_GENERAL_FAILURE; } - push_codepoint(c, v); + push_codepoint(ic, c, v); return WERR_OK; } -static WERROR preg_write_utf16(int fd, const char *string) +static WERROR preg_write_utf16(struct smb_iconv_convenience *ic, 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(&string[i], &size); + v = next_codepoint_convenience(ic, &string[i], &size); if (write(fd, &v, 2) < 2) { return WERR_GENERAL_FAILURE; } @@ -66,19 +67,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->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, ";"); + 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, ";"); SIVAL(&buf, 0, value_type); write(data->fd, &buf, sizeof(uint32_t)); - preg_write_utf16(data->fd, ";"); + preg_write_utf16(data->ic, data->fd, ";"); SIVAL(&buf, 0, value_data.length); write(data->fd, &buf, sizeof(uint32_t)); - preg_write_utf16(data->fd, ";"); + preg_write_utf16(data->ic, data->fd, ";"); write(data->fd, value_data.data, value_data.length); - preg_write_utf16(data->fd, "]"); + preg_write_utf16(data->ic, data->fd, "]"); return WERR_OK; } @@ -168,6 +169,7 @@ _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); @@ -226,7 +228,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, while(1) { uint32_t value_type, length; - if (!W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr))) { + if (!W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr))) { break; } if (*buf_ptr != '[') { @@ -237,7 +239,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Get the path */ buf_ptr = buf; - while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && + while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && *buf_ptr != ';' && buf_ptr-buf < buf_size) { buf_ptr++; } @@ -246,7 +248,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Get the name */ buf_ptr = buf; - while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && + while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && *buf_ptr != ';' && buf_ptr-buf < buf_size) { buf_ptr++; } @@ -263,7 +265,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, /* Read past delimiter */ buf_ptr = buf; - if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && *buf_ptr == ';') && buf_ptr-buf < buf_size) { DEBUG(0, ("Error in PReg file.\n")); ret = WERR_GENERAL_FAILURE; @@ -277,7 +279,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd, } /* Read past delimiter */ buf_ptr = buf; - if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) && *buf_ptr == ';') && buf_ptr-buf < buf_size) { DEBUG(0, ("Error in PReg file.\n")); ret = WERR_GENERAL_FAILURE; @@ -295,7 +297,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(fd, buf_ptr)) && + if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, 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)); |