diff -r f58b0c778b90 tools/blktap/drivers/block-qcow.c --- a/tools/blktap/drivers/block-qcow.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/blktap/drivers/block-qcow.c Thu Dec 21 10:34:27 2006 +0100 @@ -38,6 +38,8 @@ #include "bswap.h" #include "aes.h" #include "tapdisk.h" + +#define __UNCONST(x) (void *)(unsigned long)(x) #if 1 #define ASSERT(_p) \ @@ -759,7 +761,7 @@ static int decompress_buffer(uint8_t *ou memset(strm, 0, sizeof(*strm)); - strm->next_in = (uint8_t *)buf; + strm->next_in = (uint8_t *)__UNCONST(buf); strm->avail_in = buf_size; strm->next_out = out_buf; strm->avail_out = out_buf_size; @@ -1445,7 +1447,7 @@ int qcow_compress_cluster(struct td_stat } strm.avail_in = s->cluster_size; - strm.next_in = (uint8_t *)buf; + strm.next_in = (uint8_t *)__UNCONST(buf); strm.avail_out = s->cluster_size; strm.next_out = out_buf; diff -r f58b0c778b90 tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xc_linux_build.c Thu Dec 21 10:51:28 2006 +0100 @@ -1079,7 +1079,7 @@ static int xc_linux_build_internal(int x static int xc_linux_build_internal(int xc_handle, uint32_t domid, unsigned int mem_mb, - char *image, + const char *image, unsigned long image_size, struct initrd_info *initrd, const char *cmdline, diff -r f58b0c778b90 tools/libxc/xc_linux_save.c --- a/tools/libxc/xc_linux_save.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xc_linux_save.c Thu Dec 21 10:34:31 2006 +0100 @@ -80,7 +80,7 @@ static xen_pfn_t *live_m2p = NULL; #define BITMAP_SIZE ((max_pfn + BITS_PER_LONG - 1) / 8) #define BITMAP_ENTRY(_nr,_bmap) \ - ((unsigned long *)(_bmap))[(_nr)/BITS_PER_LONG] + ((volatile unsigned long *)(_bmap))[(_nr)/BITS_PER_LONG] #define BITMAP_SHIFT(_nr) ((_nr) % BITS_PER_LONG) @@ -112,7 +112,7 @@ static inline int count_bits ( int nr, v static inline int count_bits ( int nr, volatile void *addr) { int i, count = 0; - unsigned long *p = (unsigned long *)addr; + volatile unsigned long *p = (volatile unsigned long *)addr; /* We know that the array is padded to unsigned long. */ for( i = 0; i < (nr / (sizeof(unsigned long)*8)); i++, p++ ) count += hweight32(*p); @@ -443,7 +443,7 @@ static int canonicalize_pagetable(unsign /* XXX index of the L2 entry in PAE mode which holds the guest LPT */ #define PAE_GLPT_L2ENTRY (495) - pte = ((uint64_t*)spage)[PAE_GLPT_L2ENTRY]; + pte = ((const uint64_t*)spage)[PAE_GLPT_L2ENTRY]; if(((pte >> PAGE_SHIFT) & 0x0fffffff) == live_p2m[pfn]) xen_start = (hvirt_start >> L2_PAGETABLE_SHIFT_PAE) & 0x1ff; @@ -464,9 +464,9 @@ static int canonicalize_pagetable(unsign unsigned long pfn, mfn; if (pt_levels == 2) - pte = ((uint32_t*)spage)[i]; + pte = ((const uint32_t*)spage)[i]; else - pte = ((uint64_t*)spage)[i]; + pte = ((const uint64_t*)spage)[i]; if (i >= xen_start && i < xen_end) pte = 0; diff -r f58b0c778b90 tools/libxc/xc_load_bin.c --- a/tools/libxc/xc_load_bin.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xc_load_bin.c Thu Dec 21 10:34:31 2006 +0100 @@ -98,7 +98,7 @@ struct xen_bin_image_table #define FLAGS_MASK ((~ 0) & (~ XEN_REACTOS_FLAG_ALIGN4K)) #define FLAGS_REQUIRED XEN_REACTOS_FLAG_ADDRSVALID -static struct xen_bin_image_table * +static const struct xen_bin_image_table * findtable(const char *image, unsigned long image_size); static int parsebinimage( @@ -122,11 +122,11 @@ int probe_bin(const char *image, return 0; } -static struct xen_bin_image_table * +static const struct xen_bin_image_table * findtable(const char *image, unsigned long image_size) { - struct xen_bin_image_table *table; - unsigned long *probe_ptr; + const struct xen_bin_image_table *table; + const unsigned long *probe_ptr; unsigned probe_index; unsigned probe_count; @@ -142,13 +142,13 @@ findtable(const char *image, unsigned lo sizeof(unsigned long); /* Search for the magic header */ - probe_ptr = (unsigned long *) image; + probe_ptr = (const unsigned long *) image; table = NULL; for ( probe_index = 0; probe_index < probe_count; probe_index++ ) { if ( XEN_REACTOS_MAGIC3 == *probe_ptr ) { - table = (struct xen_bin_image_table *) probe_ptr; + table = (const struct xen_bin_image_table *) probe_ptr; /* Checksum correct? */ if ( 0 == table->magic + table->flags + table->checksum ) { @@ -165,7 +165,7 @@ static int parsebinimage(const char *ima unsigned long image_size, struct domain_setup_info *dsi) { - struct xen_bin_image_table *image_info; + const struct xen_bin_image_table *image_info; unsigned long start_addr; unsigned long end_addr; @@ -186,13 +186,13 @@ static int parsebinimage(const char *ima /* Sanity check on the addresses */ if ( image_info->header_addr < image_info->load_addr || - ((char *) image_info - image) < + ((const char *) image_info - image) < (image_info->header_addr - image_info->load_addr) ) { ERROR("Invalid header_addr."); return -EINVAL; } - start_addr = image_info->header_addr - ((char *) image_info - image); + start_addr = image_info->header_addr - ((const char *) image_info - image); if ( 0 != image_info->load_end_addr && ( image_info->load_end_addr < image_info->load_end_addr || start_addr + image_size < image_info->load_end_addr ) ) @@ -221,7 +221,7 @@ static int parsebinimage(const char *ima else { dsi->v_end = image_info->load_addr + image_size - - (((char *) image_info - image) - + (((const char *) image_info - image) - (image_info->header_addr - image_info->load_addr)); } dsi->v_kernstart = dsi->v_start; @@ -240,7 +240,7 @@ loadbinimage( unsigned long size; char *va; unsigned long done, chunksz; - struct xen_bin_image_table *image_info; + const struct xen_bin_image_table *image_info; image_info = findtable(image, image_size); if ( NULL == image_info ) @@ -252,7 +252,7 @@ loadbinimage( /* Determine image size */ if ( 0 == image_info->load_end_addr ) { - size = image_size - (((char *) image_info - image) - + size = image_size - (((const char *)image_info - image) - (image_info->header_addr - image_info->load_addr)); } @@ -262,7 +262,7 @@ loadbinimage( } /* It's possible that we need to skip the first part of the image */ - image += ((char *)image_info - image) - + image += ((const char *)image_info - image) - (image_info->header_addr - image_info->load_addr); for ( done = 0; done < size; done += chunksz ) diff -r f58b0c778b90 tools/libxc/xc_load_elf.c --- a/tools/libxc/xc_load_elf.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xc_load_elf.c Thu Dec 21 10:34:31 2006 +0100 @@ -75,7 +75,7 @@ int probe_elf(const char *image, unsigned long image_size, struct load_funcs *load_funcs) { - Elf_Ehdr *ehdr = (Elf_Ehdr *)image; + const Elf_Ehdr *ehdr = (const Elf_Ehdr *)image; if ( !IS_ELF(*ehdr) ) return -EINVAL; @@ -86,7 +86,7 @@ int probe_elf(const char *image, return 0; } -static inline int is_loadable_phdr(Elf_Phdr *phdr) +static inline int is_loadable_phdr(const Elf_Phdr *phdr) { return ((phdr->p_type == PT_LOAD) && ((phdr->p_flags & (PF_W|PF_X)) != 0)); @@ -96,12 +96,12 @@ static inline int is_loadable_phdr(Elf_P * Fallback for kernels containing only the legacy __xen_guest string * and no ELF notes. */ -static int is_xen_guest_section(Elf_Shdr *shdr, const char *shstrtab) +static int is_xen_guest_section(const Elf_Shdr *shdr, const char *shstrtab) { return strcmp(&shstrtab[shdr->sh_name], "__xen_guest") == 0; } -static const char *xen_guest_lookup(struct domain_setup_info *dsi, int type) +static const char *xen_guest_lookup(const struct domain_setup_info *dsi, int type) { const char *xenguest_fallbacks[] = { [XEN_ELFNOTE_ENTRY] = "VIRT_ENTRY=", @@ -134,7 +134,7 @@ static const char *xen_guest_lookup(stru return p + strlen(fallback); } -static const char *xen_guest_string(struct domain_setup_info *dsi, int type) +static const char *xen_guest_string(const struct domain_setup_info *dsi, int type) { const char *p = xen_guest_lookup(dsi, type); @@ -148,7 +148,7 @@ static const char *xen_guest_string(stru return p; } -static unsigned long long xen_guest_numeric(struct domain_setup_info *dsi, +static unsigned long long xen_guest_numeric(const struct domain_setup_info *dsi, int type, int *defined) { const char *p = xen_guest_lookup(dsi, type); @@ -175,19 +175,19 @@ static unsigned long long xen_guest_nume /* * Interface to the Xen ELF notes. */ -#define ELFNOTE_NAME(_n_) ((void*)(_n_) + sizeof(*(_n_))) +#define ELFNOTE_NAME(_n_) ((const void*)(_n_) + sizeof(*(_n_))) #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + (((_n_)->namesz+3)&~3)) #define ELFNOTE_NEXT(_n_) (ELFNOTE_DESC(_n_) + (((_n_)->descsz+3)&~3)) -static int is_xen_elfnote_section(const char *image, Elf_Shdr *shdr) -{ - Elf_Note *note; +static int is_xen_elfnote_section(const char *image, const Elf_Shdr *shdr) +{ + const Elf_Note *note; if ( shdr->sh_type != SHT_NOTE ) return 0; - for ( note = (Elf_Note *)(image + shdr->sh_offset); - note < (Elf_Note *)(image + shdr->sh_offset + shdr->sh_size); + for ( note = (const Elf_Note *)(image + shdr->sh_offset); + note < (const Elf_Note *)(image + shdr->sh_offset + shdr->sh_size); note = ELFNOTE_NEXT(note) ) { if ( !strncmp(ELFNOTE_NAME(note), "Xen", 4) ) @@ -197,15 +197,15 @@ static int is_xen_elfnote_section(const return 0; } -static Elf_Note *xen_elfnote_lookup(struct domain_setup_info *dsi, int type) -{ - Elf_Note *note; +static const Elf_Note *xen_elfnote_lookup(const struct domain_setup_info *dsi, int type) +{ + const Elf_Note *note; if ( !dsi->__elfnote_section ) return NULL; - for ( note = (Elf_Note *)dsi->__elfnote_section; - note < (Elf_Note *)dsi->__elfnote_section_end; + for ( note = (const Elf_Note *)dsi->__elfnote_section; + note < (const Elf_Note *)dsi->__elfnote_section_end; note = ELFNOTE_NEXT(note) ) { if ( strncmp(ELFNOTE_NAME(note), "Xen", 4) ) @@ -218,9 +218,9 @@ static Elf_Note *xen_elfnote_lookup(stru return NULL; } -const char *xen_elfnote_string(struct domain_setup_info *dsi, int type) -{ - Elf_Note *note; +const char *xen_elfnote_string(const struct domain_setup_info *dsi, int type) +{ + const Elf_Note *note; if ( !dsi->__elfnote_section ) return xen_guest_string(dsi, type); @@ -232,10 +232,10 @@ const char *xen_elfnote_string(struct do return (const char *)ELFNOTE_DESC(note); } -unsigned long long xen_elfnote_numeric(struct domain_setup_info *dsi, +unsigned long long xen_elfnote_numeric(const struct domain_setup_info *dsi, int type, int *defined) { - Elf_Note *note; + const Elf_Note *note; *defined = 0; @@ -252,10 +252,10 @@ unsigned long long xen_elfnote_numeric(s { case 4: *defined = 1; - return *(uint32_t*)ELFNOTE_DESC(note); + return *(const uint32_t*)ELFNOTE_DESC(note); case 8: *defined = 1; - return *(uint64_t*)ELFNOTE_DESC(note); + return *(const uint64_t*)ELFNOTE_DESC(note); default: xc_set_error(XC_INVALID_KERNEL, "elfnotes: unknown data size %#x for numeric type note %#x\n", @@ -268,9 +268,9 @@ static int parseelfimage(const char *ima unsigned long image_len, struct domain_setup_info *dsi) { - Elf_Ehdr *ehdr = (Elf_Ehdr *)image; - Elf_Phdr *phdr; - Elf_Shdr *shdr; + const Elf_Ehdr *ehdr = (const Elf_Ehdr *)image; + const Elf_Phdr *phdr; + const Elf_Shdr *shdr; Elf_Addr kernstart = ~0, kernend = 0, vaddr, virt_entry; const char *shstrtab, *p; int h, virt_base_defined, elf_pa_off_defined, virt_entry_defined; @@ -331,12 +331,12 @@ static int parseelfimage(const char *ima /* Look for .notes segment containing at least one Xen note */ for ( h = 0; h < ehdr->e_shnum; h++ ) { - shdr = (Elf_Shdr *)(image + ehdr->e_shoff + (h*ehdr->e_shentsize)); + shdr = (const Elf_Shdr *)(image + ehdr->e_shoff + (h*ehdr->e_shentsize)); if ( !is_xen_elfnote_section(image, shdr) ) continue; - dsi->__elfnote_section = (void *)image + shdr->sh_offset; + dsi->__elfnote_section = (const void *)image + shdr->sh_offset; dsi->__elfnote_section_end = - (void *)image + shdr->sh_offset + shdr->sh_size; + (const void *)image + shdr->sh_offset + shdr->sh_size; break; } @@ -350,16 +350,16 @@ static int parseelfimage(const char *ima "ELF image has no section-header strings table."); return -EINVAL; } - shdr = (Elf_Shdr *)(image + ehdr->e_shoff + + shdr = (const Elf_Shdr *)(image + ehdr->e_shoff + (ehdr->e_shstrndx*ehdr->e_shentsize)); shstrtab = image + shdr->sh_offset; for ( h = 0; h < ehdr->e_shnum; h++ ) { - shdr = (Elf_Shdr *)(image + ehdr->e_shoff + (h*ehdr->e_shentsize)); + shdr = (const Elf_Shdr *)(image + ehdr->e_shoff + (h*ehdr->e_shentsize)); if ( is_xen_guest_section(shdr, shstrtab) ) { - dsi->__xen_guest_string = (char *)image + shdr->sh_offset; + dsi->__xen_guest_string = (const char *)image + shdr->sh_offset; break; } } @@ -462,7 +462,7 @@ static int parseelfimage(const char *ima for ( h = 0; h < ehdr->e_phnum; h++ ) { - phdr = (Elf_Phdr *)(image + ehdr->e_phoff + (h*ehdr->e_phentsize)); + phdr = (const Elf_Phdr *)(image + ehdr->e_phoff + (h*ehdr->e_phentsize)); if ( !is_loadable_phdr(phdr) ) continue; vaddr = phdr->p_paddr - dsi->elf_paddr_offset + dsi->v_start; @@ -514,8 +514,8 @@ loadelfimage( const char *image, unsigned long elfsize, int xch, uint32_t dom, xen_pfn_t *parray, struct domain_setup_info *dsi) { - Elf_Ehdr *ehdr = (Elf_Ehdr *)image; - Elf_Phdr *phdr; + const Elf_Ehdr *ehdr = (const Elf_Ehdr *)image; + const Elf_Phdr *phdr; int h; char *va; @@ -523,7 +523,7 @@ loadelfimage( for ( h = 0; h < ehdr->e_phnum; h++ ) { - phdr = (Elf_Phdr *)(image + ehdr->e_phoff + (h*ehdr->e_phentsize)); + phdr = (const Elf_Phdr *)(image + ehdr->e_phoff + (h*ehdr->e_phentsize)); if ( !is_loadable_phdr(phdr) ) continue; @@ -569,7 +569,8 @@ loadelfsymtab( const char *image, int xch, uint32_t dom, xen_pfn_t *parray, struct domain_setup_info *dsi) { - Elf_Ehdr *ehdr = (Elf_Ehdr *)image, *sym_ehdr; + const Elf_Ehdr *ehdr = (const Elf_Ehdr *)image; + Elf_Ehdr *sym_ehdr; Elf_Shdr *shdr; unsigned long maxva, symva; char *p; diff -r f58b0c778b90 tools/libxc/xg_private.c --- a/tools/libxc/xg_private.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xg_private.c Thu Dec 21 10:54:25 2006 +0100 @@ -11,6 +11,7 @@ #include "xg_private.h" +#define __UNCONST(x) (void *)(unsigned long)(x) int lock_pages(void *addr, size_t len) { int e = 0; @@ -116,7 +117,7 @@ char *xc_inflate_buffer(const char *in_b { if ( out_size != NULL ) *out_size = in_size; - return (char *)in_buf; + return __UNCONST(in_buf); } out_len = (unsigned char)in_buf[in_size-4] + @@ -132,7 +133,7 @@ char *xc_inflate_buffer(const char *in_b return NULL; } - zStream.next_in = (unsigned char *)in_buf; + zStream.next_in = (unsigned char *)__UNCONST(in_buf); zStream.avail_in = in_size; zStream.next_out = (unsigned char *)out_buf; zStream.avail_out = out_len+16; diff -r f58b0c778b90 tools/libxc/xg_private.h --- a/tools/libxc/xg_private.h Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/libxc/xg_private.h Thu Dec 21 10:34:31 2006 +0100 @@ -146,7 +146,7 @@ struct domain_setup_info * You should use the xen_elfnote_* accessors below in order to * pickup the correct one and retain backwards compatibility. */ - void *__elfnote_section, *__elfnote_section_end; + const void *__elfnote_section, *__elfnote_section_end; const char *__xen_guest_string; }; @@ -162,14 +162,14 @@ typedef int (*loadimagefunc)(const char * in the note is returned and *defined is set to non-zero. If no such * note is found then *defined is set to 0 and 0 is returned. */ -extern unsigned long long xen_elfnote_numeric(struct domain_setup_info *dsi, +extern unsigned long long xen_elfnote_numeric(const struct domain_setup_info *dsi, int type, int *defined); /* * If an ELF note of the given type is found then the string contained * in the value is returned, otherwise NULL is returned. */ -extern const char * xen_elfnote_string(struct domain_setup_info *dsi, +extern const char * xen_elfnote_string(const struct domain_setup_info *dsi, int type); struct load_funcs diff -r f58b0c778b90 tools/xenstat/xentop/xentop.c --- a/tools/xenstat/xentop/xentop.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/xenstat/xentop/xentop.c Thu Dec 21 10:34:34 2006 +0100 @@ -269,7 +269,7 @@ static void print(const char *fmt, ...) if (!batch) { if((current_row() < lines()-1)) { va_start(args, fmt); - vwprintw(stdscr, (char *)fmt, args); + vwprintw(stdscr, (const char *)fmt, args); va_end(args); } } else { @@ -283,7 +283,7 @@ static void attr_addstr(int attr, const static void attr_addstr(int attr, const char *str) { attron(attr); - addstr((char *)str); + addstr((const char *)str); attroff(attr); } diff -r f58b0c778b90 tools/xenstore/list.h --- a/tools/xenstore/list.h Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/xenstore/list.h Thu Dec 21 10:34:34 2006 +0100 @@ -12,7 +12,7 @@ #define LIST_POISON2 ((void *) 0x00200200) #define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) /* diff -r f58b0c778b90 tools/xenstore/xenstored_core.c --- a/tools/xenstore/xenstored_core.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/xenstore/xenstored_core.c Thu Dec 21 10:34:34 2006 +0100 @@ -53,6 +53,7 @@ #include "hashtable.h" +#define __UNCONST(x) (void *)(unsigned long)(x) extern int xce_handle; /* in xenstored_domain.c */ @@ -417,7 +418,7 @@ static struct node *read_node(struct con struct node *node; TDB_CONTEXT * context = tdb_context(conn); - key.dptr = (void *)name; + key.dptr = (char *)__UNCONST(name); key.dsize = strlen(name); data = tdb_fetch(context, key); @@ -463,7 +464,7 @@ static bool write_node(struct connection TDB_DATA key, data; void *p; - key.dptr = (void *)node->name; + key.dptr = (char *)__UNCONST(node->name); key.dsize = strlen(node->name); data.dsize = 3*sizeof(uint32_t) @@ -736,11 +737,11 @@ char *canonicalize(struct connection *co const char *prefix; if (!node || strstarts(node, "/")) - return (char *)node; + return __UNCONST(node); prefix = get_implicit_path(conn); if (prefix) return talloc_asprintf(node, "%s/%s", prefix, node); - return (char *)node; + return __UNCONST(node); } bool check_event_node(const char *node) @@ -784,7 +785,7 @@ static void delete_node_single(struct co { TDB_DATA key; - key.dptr = (void *)node->name; + key.dptr = (void *)__UNCONST(node->name); key.dsize = strlen(node->name); if (tdb_delete(tdb_context(conn), key) != 0) { @@ -854,7 +855,7 @@ static int destroy_node(void *_node) if (streq(node->name, "/")) corrupt(NULL, "Destroying root node!"); - key.dptr = (void *)node->name; + key.dptr = (void *)__UNCONST(node->name); key.dsize = strlen(node->name); tdb_delete(node->tdb, key); @@ -1446,7 +1447,7 @@ static void manual_node(const char *name node->name = name; node->perms = &perms; node->num_perms = 1; - node->children = (char *)child; + node->children = (char *)__UNCONST(child); if (child) node->childlen = strlen(child) + 1; diff -r f58b0c778b90 tools/xenstore/xs.c --- a/tools/xenstore/xs.c Wed Dec 20 15:22:46 2006 +0000 +++ b/tools/xenstore/xs.c Thu Dec 21 10:34:34 2006 +0100 @@ -77,6 +77,8 @@ struct xs_handle { pthread_mutex_t request_mutex; }; +#define __UNCONST(x) (void *)(unsigned long)(x) + static int read_message(struct xs_handle *h); static void *read_thread(void *arg); @@ -381,7 +383,7 @@ static void *xs_single(struct xs_handle { struct iovec iovec; - iovec.iov_base = (void *)string; + iovec.iov_base = (void *)__UNCONST(string); iovec.iov_len = strlen(string) + 1; return xs_talkv(h, t, type, &iovec, 1, len); } @@ -440,9 +442,9 @@ bool xs_write(struct xs_handle *h, xs_tr { struct iovec iovec[2]; - iovec[0].iov_base = (void *)path; + iovec[0].iov_base = (void *)__UNCONST(path); iovec[0].iov_len = strlen(path) + 1; - iovec[1].iov_base = (void *)data; + iovec[1].iov_base = (void *)__UNCONST(data); iovec[1].iov_len = len; return xs_bool(xs_talkv(h, t, XS_WRITE, iovec, @@ -513,7 +515,7 @@ bool xs_set_permissions(struct xs_handle unsigned int i; struct iovec iov[1+num_perms]; - iov[0].iov_base = (void *)path; + iov[0].iov_base = (void *)__UNCONST(path); iov[0].iov_len = strlen(path) + 1; for (i = 0; i < num_perms; i++) { @@ -561,9 +563,9 @@ bool xs_watch(struct xs_handle *h, const } pthread_mutex_unlock(&h->request_mutex); - iov[0].iov_base = (void *)path; + iov[0].iov_base = (void *)__UNCONST(path); iov[0].iov_len = strlen(path) + 1; - iov[1].iov_base = (void *)token; + iov[1].iov_base = (void *)__UNCONST(token); iov[1].iov_len = strlen(token) + 1; return xs_bool(xs_talkv(h, XBT_NULL, XS_WATCH, iov, @@ -628,9 +630,9 @@ bool xs_unwatch(struct xs_handle *h, con { struct iovec iov[2]; - iov[0].iov_base = (char *)path; + iov[0].iov_base = (char *)__UNCONST(path); iov[0].iov_len = strlen(path) + 1; - iov[1].iov_base = (char *)token; + iov[1].iov_base = (char *)__UNCONST(token); iov[1].iov_len = strlen(token) + 1; return xs_bool(xs_talkv(h, XBT_NULL, XS_UNWATCH, iov, @@ -740,7 +742,7 @@ char *xs_debug_command(struct xs_handle { struct iovec iov[2]; - iov[0].iov_base = (void *)cmd; + iov[0].iov_base = (void *)__UNCONST(cmd); iov[0].iov_len = strlen(cmd) + 1; iov[1].iov_base = data; iov[1].iov_len = len;