Index: libstore/device.c =================================================================== RCS file: /cvsroot/hurd/hurd/libstore/device.c,v retrieving revision 1.30 diff -u -r1.30 device.c --- libstore/device.c 3 Dec 2002 17:47:06 -0000 1.30 +++ libstore/device.c 9 Aug 2003 11:28:09 -0000 @@ -1,6 +1,6 @@ /* Mach device store backend - Copyright (C) 1995,96,97,99,2001,02 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,99,2001,02,03 Free Software Foundation, Inc. Written by Miles Bader This file is part of the GNU Hurd. @@ -52,8 +52,8 @@ store_offset_t addr, size_t index, mach_msg_type_number_t amount, void **buf, mach_msg_type_number_t *len) { - return dev_error (device_read (store->port, 0, addr, amount, - (io_buf_ptr_t *)buf, len)); + return dev_error (device_read (store->port, 0, (recnum_t) addr, + amount, (io_buf_ptr_t *)buf, len)); } static error_t @@ -62,7 +62,8 @@ const void *buf, mach_msg_type_number_t len, mach_msg_type_number_t *amount) { - error_t err = dev_error (device_write (store->port, 0, addr, + error_t err = dev_error (device_write (store->port, 0, + (recnum_t) addr, (io_buf_ptr_t)buf, len, (int *) amount)); *amount = *(int *) amount; /* stupid device.defs uses int */ @@ -97,14 +98,41 @@ error_t err = get_privileged_ports (0, &dev_master); if (! err) { +#ifdef KERNEL_SECURITY_TOKEN_VALUE + security_token_t sec_token = KERNEL_SECURITY_TOKEN_VALUE; +#endif if (*mod_flags & STORE_HARD_READONLY) - err = device_open (dev_master, D_READ, (char *)name, device); + err = device_open (dev_master, +#ifdef KERN_INVALID_LEDGER + MACH_PORT_NULL, /* OSF Mach */ +#endif + D_READ, +#ifdef KERNEL_SECURITY_TOKEN_VALUE + sec_token, /* OSF Mach */ +#endif + (char *)name, device); else { - err = device_open (dev_master, D_WRITE | D_READ, (char *)name, device); + err = device_open (dev_master, +#ifdef KERN_INVALID_LEDGER + MACH_PORT_NULL, +#endif + D_WRITE | D_READ, +#ifdef KERNEL_SECURITY_TOKEN_VALUE + sec_token, +#endif + (char *)name, device); if (err == ED_READ_ONLY) { - err = device_open (dev_master, D_READ, (char *)name, device); + err = device_open (dev_master, +#ifdef KERN_INVALID_LEDGER + MACH_PORT_NULL, +#endif + D_READ, +#ifdef KERNEL_SECURITY_TOKEN_VALUE + sec_token, +#endif + (char *)name, device); if (! err) *mod_flags |= STORE_HARD_READONLY; } @@ -292,7 +320,8 @@ run.start = 0; run.length = sizes[DEV_GET_SIZE_DEVICE_SIZE] / block_size; - if (run.length * block_size != sizes[DEV_GET_SIZE_DEVICE_SIZE]) + if (run.length * block_size + != (size_t) sizes[DEV_GET_SIZE_DEVICE_SIZE]) /* Bogus results (which some mach devices return). */ block_size = 0; }