2008-03-04 Samuel Thibault * nbd.c (nbd_read): Initialize piecelen. 2005-09-24 Roland McGrath * store.h (STORE_STD_CLASS): Use __attribute_used__ macro instead of `unused' attribute. 2004-09-03 Alfred M. Szmidt * store.h (__start_store_std_classes, __stop_store_std_classes): Declare using __attribute__ ((weak)). * typed.c (store_find_class): Removed `#pragma weak' for `__stop_store_std_classes' and `__start_store_std_classes'. 2003-08-05 Marcus Brinkmann * zero.c: Do not include . 2003-07-21 Ognyan Kulev * rdwr.c (store_write): Return EINVAL when LEN is not aligned to STORE->block_size, instead of raising assertion failure. (store_read): Likewise. 2003-08-04 Roland McGrath * typed.c (store_find_class): Use dlopen/dlclose on the names found by looking through the list instead of passing list elements directly to dlsym, which is not kosher. 2003-08-02 Ognyan Kulev * module.c (store_module_open): NAME that doesn't contain ':' is not considered invalid argument, but a class name without class-specific portion. * typed.c (store_typed_open): When NAME is empty string, don't invoke store_open (name + 1, ...). 2002-10-01 Ludovic Courtès * store.h: New type store_set_size_meth_t: New type. New prototype store_set_size. (struct store_class): Added a set_size () method. * rdwr.c (store_set_size): New function. * file.c (file_store_set_size): New function. (store_file_class): Add file_store_set_size. * concat.c (concat_set_size): New function. (store_concat_class): concat_set_size. * copy.c (copy_set_size): New function. (store_copy_class): copy_set_size. * device.c (device_set_size): New function. (store_device_class): device_set_size. * memobj.c (memobj_set_size): New function. (store_memobj_class): memobj_set_size. * mvol.c (mvol_set_size): New function. (store_mvol_class): mvol_set_size. * nbd.c (nbd_set_size): New function. (store_nbd_class): nbd_set_size. * remap.c (remap_set_size): New function. (store_remap_class): remap_set_size. * stripe.c (stripe_set_size): New function. (store_stripe_class): stripe_set_size. * unknown.c (unknown_set_size): New function. (store_unknown_class): unknown_set_size. * zero.c (zero_set_size): New function. (store_zero_class): zero_set_size. 2002-11-03 Neal H. Walfield * kids.c: Do not include . Include . (store_set_children): Use memcpy, not bcopy. Calculate SIZE correctly: STORE->children is a struct store **, not a struct store_run *. Reported by Moritz Schulte . 2002-06-07 Roland McGrath * store.h (struct store_enc): Use loff_t instead of off_t. (store_enc_init, store_enc_return, store_return): Likewise. * encode.c (store_std_leaf_encode): Do a sizeof comparison to get `too_big' optimized out when store_enc starts using 64 bit offsets. 2002-05-20 Ognyan Kulev * Makefile: Move inclusion of ../Makeconf before using $(srcdir). 2002-05-16 Roland McGrath * device.c (enforced): Use dev_status_data_t for SIZES. (store_device_create): Likewise. (dev_write): Do some silly magic since device.defs uses int. 2002-05-07 Roland McGrath * module.c (open_class): Add cast to int for %* arg. * kids.c (store_open_children): Dereference pointer in isalnum call. * set.c (store_set_runs): Fix argument type. * kids.c (store_set_children): Likewise. 2002-03-15 Roland McGrath * Makefile (OBJS): Remove hack for part.o. (parted.o parted_p.o parted_pic.o): Targets removed. 2002-03-14 Roland McGrath * Makefile (cleantarg): Append $(store-types:%=libstore_%.a) here. (all): Depend on that list too. (install): Depend on those files in $(libdir). ($(store-types:%=$(libdir)/libstore_%.a): $(libdir)/%: %): New static pattern rule to install them. 2002-03-13 Roland McGrath * Makefile ($(store-types:%=libstore_%.a)): Create object files with the undefined symbol rather than linker scripts. 2002-03-14 Marcus Brinkmann * unzipstore.c (unzip_store): New variable IN_BUF_SIZE to hold allocated space for IN_BUF. Use that instead IN_BUF_LEN for that purpose if appropriate. Always update IN_BUF_LEN after a read. 2002-03-11 Roland McGrath * unzipstore.c: New file, broken out of bunzip2.c. * bunzip2.c: Most code moved to unzipstore.c, which we #include. (DO_UNZIP, UNZIP): New function, macro. * gunzip.c: Most code deleted, now in unzipstore.c, which we #include. (DO_UNZIP, UNZIP): New function, macro. * Makefile (DIST_FILES): New variable, list unzipstore.c here. * Makefile (module-CPPFLAGS): New variable. * module.c (STORE_SONAME_SUFFIX): Macro removed. * Makefile (store-types): Add missing types here. (SRCS): Remove all those from here and use $(store-types:=.c) instead. 2002-02-08 Roland McGrath * Makefile (store-types): New variable. (all): Depend on $(store-types:%=libstore_%.a). (libstore_%.so.$(hurd-version)): New pattern rule. ($(store-types:%=libstore_%.a): libstore_%.a): New static pattern rule to create `-lstore_TYPE' pseudo-objects (linker scripts) for each type. (libstore.so-LDLIBS): New variable, adds -ldl. (GUNZIP_OBJS, BUNZIP2_OBJS): New variables. (UNZIP_OBJS): Variable removed, replaced by those two. (OBJS): Update use. (libstore_gunzip.so.$(hurd-version)): Depend on PIC $(GUNZIP_OBJS). (libstore_bunzip2.so.$(hurd-version)): Depend on PIC $(BUNZIP2_OBJS). * unknown.c: Add STORE_STD_CLASS decl. * bunzip2.c: Likewise. * copy.c: Likewise. * device.c: Likewise. * file.c: Likewise. * gunzip.c: Likewise. * memobj.c: Likewise. * module.c: Likewise. * mvol.c: Likewise. * nbd.c: Likewise. * open.c: Likewise. * part.c: Likewise. * remap.c: Likewise. * stripe.c: Likewise. * stripe.c: Likewise. * task.c: Likewise. * typed.c: Likewise. * typed.c: Likewise. * unknown.c: Likewise. * url.c: Likewise. * zero.c: Likewise. * argp.c (DEFAULT_STORE_TYPE): Macro removed. (DEFAULT_STORE_CLASS): New macro replaces it. (parse_opt): Update the use. 2002-01-19 Roland McGrath * url.c (find_url_class): Function removed. (store_url_open): Use store_typed_open after validating syntax. (store_url_decode): Use store_find_class and store_module_find_class. * typed.c (store_find_class): New function. (store_typed_open): Use it. * url.c (url_decode): Renamed to store_url_decode, made public. (store_url_open_class): Changed use. * store.h: Declare store_url_decode. * decode.c (store_decode): Call store_url_decode for STORAGE_NETWORK as a special case. 2001-12-28 Roland McGrath * Makefile (SRCS): Remove std.c. * module.c: New file. * store.h (store_module_open, store_module_find_class, store_module_decode): Declare them. * argp.c (parse_opt): Leave PARSED->classes null here instead of defaulting to store_std_classes. (find_class): Default null class-list parameter to store_std_classes here instead. If no matches when defaulted, try calling store_module_open_class too. * typed.c (store_typed_open): If no match when search list is store_std_classes, try calling store_module_open_class too. * url.c (find_url_class): Likewise. * decode.c (store_decode): If no match when search list is store_std_classes, try calling store_module_decode too. * store.h (store_concat_class_vectors): Remove decl of nonexistent fn. 2002-03-14 Marcus Brinkmann * rdwr.c (store_read): Truncate amount to be read to size of store. Use memcpy rather than bcopy. (store_write): Return EIO if caller tries to write over the end of the store. * copy.c (copy_read): Do not multiply LEN returned from vm_read with vm_page_size. 2002-03-11 Marcus Brinkmann * stripe.c (store_concat_class): Add store_concat_open. (store_concat_create): Do not multiply NUM_STORES with 2 to get the number of runs. * kids.c (store_allocate_child_encodings): Call allocate_encoding on child store K, not on STORE. (store_encode_children): Likewise. * decode.c (store_std_leaf_decode): Increment ENC->cur_data by NAME_LEN and MISC_LEN as appropriate. 2002-03-05 Roland McGrath * device.c (dev_map): Pass proper OFFSET and SIZE params to device_map. 2002-01-19 Roland McGrath Support explicit open of unknown store (with no name), i.e. -Tunknown. * unknown.c (unknown_allocate_encoding): Return EOPNOTSUPP if STORE->hook is null. (unknown_encode): Likewise. (unknown_cleanup): Do nothing if STORE->hook if is null. (unknown_clone): Likewise. (unknown_validate_name, unknown_open): New functions. (store_unknown_class): Use them. 2002-01-01 Roland McGrath * nbd.c (htonll): Make this a macro using bswap_64 from . 2001-12-31 Roland McGrath * url.c (url_decode): Don't clobber *ENC in the dummy run. * nbd.c (store_nbd_open): Make sure the store's name always starts with the "nbd://" prefix. 2001-12-30 Roland McGrath * nbd.c (nbd_read): Request multiple chunks of up to NBD_IO_MAX each. Handle needing multiple io_read calls to receive a single chunk. 2001-12-29 Roland McGrath * nbd.c (nbdopen): Fix in last change. (nbd_read): Let LEN receive the result count from io_read. * nbd.c (NBD_IO_MAX): New macro. (nbd_write): Write in chunks no larger than NBD_IO_MAX. (nbd_read): Cap AMOUNT to NBD_IO_MAX. * nbd.c (nbd_validate_name): Skip : before port number. (nbdopen): Fix test after connect loop. Use multiple read calls as needed to get the whole connection header. 2001-12-26 Roland McGrath * unknown.c: New file. * Makefile (SRCS): Add it. * store.h (store_unknown_class, store_unknown_decode): Declare them. * create.c (store_create): If store_decode fails with EINVAL, and we were called with the STORE_NO_FILEIO flag bit set, then use store_unknown_decode. 2001-12-23 Roland McGrath * kids.c (store_set_child_flags): Move decrement to avoid ill-defined C behavior that gets a warning. (store_clear_child_flags): Likewise. 2001-10-14 Roland McGrath * Makefile (SRCS): Add url.c to the list. * url.c: New file. (store_url_open): New function. (store_url_open_class): New const variable. * store.h: Declare them. * std.c (store_std_classes): Add &store_url_open_class to the list, move &store_nbd_class after it. * nbd.c (nbd_validate_name): Accept an optional "nbd://" prefix. (nbdopen): Likewise. 2001-10-06 Neal H Walfield * memobj.c: Include "store.h", not . * nbd.c: Likewise. * part.c: Likewise. 2001-10-01 Marcus Brinkmann * part.c: Add const to type. Reported by Jeroen Dekkers. 2001-10-01 Marcus Brinkmann * device.c (dev_error): Add a break to silence gcc warning. (store_device_class): Add const to type. * typed.c (store_typed_open_class): Likewise. * file.c (store_file_class): Likewise. * stripe.c (store_concat_class): Likewise. (store_ileave_class): Likewise. * zero.c (store_zero_class): Likewise. * open.c (store_open_class): Likewise. * remap.c (store_remap_class): Likewise. * task.c (store_task_class): Likewise. * copy.c (store_copy_class): Likewise. * gunzip.c (store_gunzip_class): Likewise. * bunzip2.c (store_bunzip2_class): Likewise. * mvol.c (store_mvol_class): Likewise. * memobj.c (store_memobj_class): Likewise. * nbd.c (store_nbd_class): Likewise. Submitted by Maurizio Boriani . 2001-09-30 Roland McGrath * memobj.c: New file. * Makefile (SRCS): Add it. * store.h (store_memobj_class, store_memobj_create): Declare them. 2001-09-29 Roland McGrath * nbd.c (struct nbd_startup): Replace sizehi, sizelo with just size. (nbdopen): Changed use. 2001-09-28 Roland McGrath * decode.c (store_std_leaf_decode): Actually copy data into MISC. Don't call malloc for it when MISC_LEN is zero, just store null. 2001-09-27 Roland McGrath * nbd.c (store_nbd_open): Divide reported size by block size. * std.c (store_std_classes): Add store_nbd_class. * store.h: Declare it. * nbd.c: New file. * Makefile (SRCS): Add it. * store.h (store_nbd_open, _store_nbd_create): Declare them. 2001-09-16 Roland McGrath * std.c (store_std_classes): Only include store_part_class if [HAVE_PARTED_PARTED_H]. 2001-08-25 Roland McGrath * part.c (store_part_create): Do a run-time check on ped_get_version. 2001-08-25 Neal H Walfield * part.c: New file. * std.c (store_std_classes): Add store_part_class. * store.h (store_part_create): New prototype. (store_part_open): Likewise. 2001-08-25 Roland McGrath * Makefile (parted.o, parted_pic.o): Pass -nostdlib. 2001-08-25 Neal H Walfield * Makefile (libstore.so-LDFLAGS): Renamed from LDFLAGS-libstore.so. 2001-08-24 Roland McGrath * Makefile (SRCS): Add part.c here. (OBJS): Mutate part.o -> parted.o here. (parted.o, parted_p.o, parted_pic.o): New targets. (LDFLAGS-libstore.so): Set to $(PARTED_LIBS). 2001-08-12 Neal H Walfield * copy.c (copy_read): The protocol dictates that *LEN is in bytes, not pages. (copy_write): Be sure that the buffer passed to vm_read is page-aligned. When determining how much to copy, use LEN, not the uninitialized *AMOUNT. (copy_clone): Use memcpy, not bcopy. * derive.c: Include and . (_store_derive): Initialize STORE->wrap_src. * set.c: Do not include . Include , and . (store_set_runs): Use memcpy, not bcopy. (store_set_name): Use strdup, not a strlen, malloc and strcpy. * zero.c (zero_read): When checking if mmap failed, compare against MAP_FAILED, not -1. Use memset, not bzero. 2001-08-03 Roland McGrath * Makefile (HURDLIBS): Define it so we link in libshouldbeinlibc. 2001-04-26 Marcus Brinkmann * set.c: Use explicit comparison to MACH_PORT_NULL. 2001-03-07 Roland McGrath * store.h (store_write, store_write_meth_t): Make buffer arg const*. * copy.c (copy_write): Likewise. * device.c (dev_write): Likewise. * file.c (file_write): Likewise. (file_byte_write): Likewise. * rdwr.c (store_write): Likewise. * remap.c (remap_write): Likewise. * stripe.c (stripe_write): Likewise. * task.c (task_write): Likewise. * zero.c (zero_write): Likewise. * mvol.c (zero_write): Likewise. 2001-01-16 Roland McGrath * store.h (struct store_argp_params): Add member `store_optional'. * argp.c (parse_opt): If store_optional is set, don't make it an error when there are no store arguments and the type doesn't validate that. 2001-01-14 Roland McGrath * encode.c (too_big): New static function. (store_std_leaf_encode): Use it to return EOVERFLOW if a run does not fit in an off_t. 2001-01-09 Marcus Brinkmann * device.c (store_device_create): Protect code of last change with #ifdef DEV_GET_RECORDS, and set sizes_len again before second try. (enforce): Likewise. Move definition of variable err up to top level. 2001-01-09 Marcus Brinkmann * device.c (enforce): First try DEV_GET_RECORDS, and only fall back to DEV_GET_STORE if this fails with D_INVALID_OPERATION. (store_device_create): Likewise, but fall back for any failure. 2001-01-08 Marcus Brinkmann * zero.c (zero_remap): Change type of variables length, old_length to store_offset_t. (zero_decode): Change type of variable size to store_offset_t. (zero_open): Likewise. Use strtoull instead strtoul to parse size argument from name. Use store_offset_t for max_offs and its calculation. (store_zero_create): Use store_offset_t type for size argument. * derive.c (_store_derive): Use store_offset_t as type for variable last_part_base. * stripe.c (addr_adj): Change types of addr argument and return value to store_offset_t. (store_ileave_create): Change type of interleave argument and variables min_end and end to store_offset_t, but type of variable block_size to size_t. (store_concat_create): Change type of variable block_size to size_t. * make.c (_store_create): Change end argument type to store_offset_t. * store.h: New type store_offset_t, define to off64_t. (struct store_run): Change type of start and length to store_offset_t. (struct store): Change type of end, wrap_src, wrap_dst, blocks, size to store_offset_t. Change type of addr arg in store_read_meth_t and store_write_meth_t to store_offset_t, as well as in declarations for store_read and store_write. Change type of argument end in _store_create declaration to store_offset_t. Change type of argument size in store_zero_create to store_offset_t. Change type of argument interleace in store_ileace_create to store_offset_t. * rdwr.c (store_find_first_run): Change type of return value, addr and *base arguments, and variables wrap_src and run_blocks to store_offset_t. (store_next_run): Change type of *base argument to store_offset_t. (store_write): Change type of addr argument and variable base to store_offset_t. (store_read): Likewise, also for addr argument of local function seg_read. Change type of len argument to size_t. * copy.c (copy_read): Change type of addr argument to store_offset_t. (copy_write): Likewise. * device.c (dev_read): Likewise. (dev_write): Likewise. * file.c (file_read): Likewise. (file_write): Likewise. (file_byte_read): Likewise. (file_byte_write): Likewise. * mvol.c (mvol_read): Likewise. (mvol_write): Likewise. * remap.c (remap_read): Likewise. (remap_write): Likewise. * stripe.c (stripe_read): Likewise. (stripe_write): Likewise. * task.c (task_read): Likewise. (task_write): Likewise. * zero.c (zero_read): Likewise. (zero_write): Likewise. * remap.c (store_remap_runs): Change type of addr and len arguments of local function add_run and of local variables addr, length, baddr, blen and len to store_offset_t. (remap_open): Cast -1 to store_offset_t, not off_t. * argp.c (struct store_parsed): Change type of interleave from off_t to store_offset_t. (store_parsed_append_args): Use %Ld instead %ld to print interleave value. (store_parsed_name): Likewise. 2001-01-07 Marcus Brinkmann * copy.c: Include . New macro page_aligned. (copy_write): Cast buf to vm_address_t in call to vm_write. Dereference amount for memcpy. (copy_read): Add len parameter to vm_read, remove redundant following len assignment. 2000-12-20 Roland McGrath * zero.c (zero_open): Check for END being null after strtoul call. If character following number (*END) is b, multiply size by 512; k or K, by 1024; m or M by 1024*1024; g or G by 1024*1024*1024. * store.h (struct store_class): Fix typo in comment. * copy.c (copy_read): When reading whole aligned pages, use vm_read. Use MAP_FAILED in place of (void *) -1. Use memcpy in place of bcopy. (copy_write): When reading whole aligned pages, use vm_write. Use memcpy in place of bcopy. 1999-11-20 Roland McGrath * store.h (struct store_class): Add const to type of `name' member. 1999-11-14 Roland McGrath * device.c (dev_error): New static function. Translate all expected D_* codes into POSIX codes. (dev_read, dev_write, dev_open): Use it. 1999-10-07 Roland McGrath * rdwr.c (store_read, store_write): Fix asserts in last change. 1999-10-03 Roland McGrath * rdwr.c (store_read, store_write): Fix calculations broken in last change, so they again properly account for starting intrarun offset. 1999-09-09 Roland McGrath * rdwr.c (store_write, store_read): Carefully avoid scaling run lengths from blocks to bytes except when we're already sure the run's size in bytes won't overflow size_t. 1999-07-11 Thomas Bushnell, BSG * argp.c (store_parsed_open): Add more braces to clarify if-else structure. * encode.c: Include * zero.c: Likewise. * encode.c (store_encode): Repair syntax. * copy.c (copy_read): Likewise. * enc.c (store_enc_dealloc): Cast first arg of munmap correctly. 1999-07-10 Roland McGrath * rdwr.c: Add #include for munmap decl. * enc.c: Likewise. * copy.c: Likewise. * gunzip.c: Likewise. * bunzip2.c: Likewise. 1999-07-09 Thomas Bushnell, BSG * bunzip2.c (bunzip2): Use mmap instead of vm_allocate. * copy.c (copy_read): Likewise. (copy_clone): Likewise. * encode.c (store_encode): Likewise. * gunzip.c (gunzip): Likewise. * rdwr.c (store_read): Likewise. * zero.c (zero_read): Likewise. 1999-07-08 Roland McGrath * remap.c (remap_open): Recognize "N+" syntax in block list as from block N through the end of the store. 1999-07-03 Thomas Bushnell, BSG * bunzip2.c (bunzip2): Use munmap instead of vm_deallocate. (store_bunzip2_create): Likewise. * rdwr.c (store_read): Likewise. * gunzip.c (gunzip): Likewise. (store_gunzip_create): Likewise. * enc.c (store_enc_dealloc): Likewise. * copy.c (copy_cleanup): Likewise. 1999-05-23 Roland McGrath * remap.c (remap_open): Don't multiply by 512. Offsets and sizes are in blocks, not bytes. * stripe.c (concat_decode): Add __attribute__((unused)) to suppress warning. (ileave_decode): Likewise. * bunzip2.c: Add extern decl for do_bunzip2. 1999-05-16 Roland McGrath * remap.c (remap_decode): Add attribute((unused)) to suppress warning. 1999-05-14 Roland McGrath * remap.c (remap_open, remap_validate_name): New functions, to support parsing block lists a la GRUB. (store_remap_class): Initialize those slots. 1999-05-01 Mark Kettenis * device.c (store_device_create): Deal with devices that return sucessfully from device_get_status, but do not return any sensible information. 1998-09-06 OKUJI Yoshinori * bunzip2.c: New file. * store.h (store_bunzip2_create): New declarations. (store_bunzip2_open): Likewise. (store_bunzip2_class): Likewise. * std.c (store_std_classes): Add store_bunzip2_class. * Makefile (SRCS): Add bunzip2.c. (UNZIP_OBJS): Add do-bunzip2.o. 1998-12-27 Roland McGrath * store.h: Remove defns of STORAGE_*, now in . 1998-12-21 Roland McGrath * open.c (store_open): Like file.c:fiopen, catch EACCES or EROFS and try to open read-only. * file.c (fiopen): Treat EROFS same as EACCES. 1998-10-20 Roland McGrath * flags.c (store_clear_flags): Add braces to silence gcc warning. 1998-10-19 Roland McGrath * rdwr.c (store_read): Add braces to silence gcc warning. * flags.c (store_set_flags): Likewise. * typed.c (store_typed_open): Likewise. * decode.c (store_decode): Likewise. * argp.c (store_parsed_append_args): Likewise. (store_parsed_name): Likewise. (store_parsed_open): Likewise. 1998-09-05 Roland McGrath * argp.c (store_parsed_append_args): Use %d for layer, which is int. Cast to int for %* field width arg. 1997-09-22 Miles Bader * encode.c (store_encode): Allocate the correct amount of memory for the encoding vectors. * make.c (_store_create): Initialize NEW->misc_len. * mvol.c (store_mvol_class): Set correct members. (store_mvol_create): Declare PHYS correctly. : New include. * store.h (store_mvol_create): Declare PHYS correctly. * Makefile (SRCS): Add mvol.c. 1997-08-11 Miles Bader * store.h (store_mvol_create): New declaration. (store_mvol_class): New declaration. * mvol.c: New file. 1997-07-24 Miles Bader * device.c (store_device_create): Treat devices that can't do device_get_status as zero-length. (dev_map): Pass 0 for OFFSET and SIZE arguments to device_map -- mach ignores them, and we often can't supply meaningful values. * make.c (_store_create): If BLOCK_SIZE is zero, make sure there are no runs. * derive.c (_store_derive): Let BSIZE be zero. 1997-07-21 Miles Bader * argp.c (store_parsed_append_args): Correctly unparse complex type names. 1997-07-18 Miles Bader * map.c (store_map): If we can't map STORE directly, and it has a source file, try to map that instead. * remap.c (store_remap): If we are mutating SOURCE, close any source port it has. * store.h (store_map_source): Declaration removed. 1997-07-17 Miles Bader * store.h (store_map): New declaration. (struct store_class): Add map field. * device.c (dev_map): New function. (store_device_class): Use dev_map. * zero.c (zero_map): New function. (store_zero_class): Use zero_map. * file.c (file_map): New function. (store_file_class): Use file_map. * map.c: New file. * Makefile (SRCS): Add map.c. * device.c (dev_read, dev_write): Remove debugging grot. 1997-07-07 Miles Bader * kids.c (store_open_children): Support factored type notation. 1997-07-05 Miles Bader * file.c (file_read, file_write, file_byte_read, file_byte_write): Remove debugging noise. 1997-06-30 Miles Bader * store.h: Doc fix. 1997-06-27 Miles Bader * file.c (store_file_open): Use fiopen to open the file. Set name of newly created store. (fiopen, ficlose, enforced, file_set_flags, file_clear_flags): New functions. (store_file_class): Use new functions. (store_file_byte_class): Fill in rest of functions. * device.c (enforced): Move some checking here from dev_set_flags, and correct the check for the number of stores. (dev_set_flags): Move enforcement checking code to enforce. 1997-06-26 Miles Bader * argp.c (parse_type): Fill in name_prefix field. (store_parsed_open): Apply it to any names we open. 1997-06-22 Miles Bader * argp.c (parse_type): New function. (parse_opt): Use parse_type to parse the -T option. (struct store_parsed): Add NAME_PREFIX field. (store_parsed_free): Free it. (store_parsed_append_args): Emit it. (store_parsed_open): Use it in opens. * typed.c (store_typed_open): If NAME doesn't contain a `:' separator, try to use it as either a class name or a file name. Interpret a trailing or leading `:' as unambiguously referring to a class-name or a filename, respectively. 1997-06-19 Miles Bader * rdwr.c (store_read): Limit reads to the amount available. * store.h (store_typed_open_class): Renamed from store_typed_class. * std.c (store_std_classes): Use store_typed_open_class instead of store_typed_class. * Makefile (SRCS): Remove storeread.c & storecat.c. (storeread, storecat): Rules removed. * storeread.c, storecat.c: Moved to ../utils. 1997-06-18 Miles Bader * store.h (struct store): BLOCKS & SIZE are off_t, not size_t. (store_zero_create): SIZE is off_t, not size_t. * zero.c (store_zero_create, zero_open): Likewise. * storecat.c (main): Update use of argp. * storeread.c (main): DATA is void *. * Makefile (UTILS_OBJS): Variable removed. (UNZIP_OBJS): New variable. (OBJS): Don't use $(UTILS_OBJS). Do use $(UNZIP_OBJS). (VPATH, CPPFLAGS): Search for stuff in ../exec for unzip junk. * derive.c: Include (_store_derive): Assert that block_size & blocks_per_page are powers of two (which should be enforced elsewhere). * make.c (_store_create): Renamed from _make_store. Return an error_t code, and add an additional argument STORE to return the new store; all uses changed. * store.h (_make_store): Likewise. * Makefile (SRCS): Add typed.c, copy.c, and gunzip.c. * typed.c: New file * store.h (store_gunzip_class, store_typed_class): New declarations. * std.c (store_std_classes): Add store_copy_class, store_gunzip_class, and store_typed_class. * kids.c (store_open_children, store_children_name): New functions. * stripe.c (store_concat_open): New function. (store_concat_create): Set the store name if possible. * store.h (store_concat_open, store_children_name, store_open_children): New declaration. * rdwr.c (store_read): Deallocate memory returned when reading part of a multiple-segment read. 1997-06-17 Miles Bader * copy.c, gunzip.c: New files. * store.h (store_copy_class): New declaration. (store_copy_create, store_copy_open, store_buffer_create, store_gunzip_create, store_gunzip_open): New declarations. * decode.c (store_decode): Pass the original value of CLASSES to any decode method, not our search tail. * device.c (dopen): If *MOD_FLAGS already contains STORE_HARD_READONLY, don't ever try to open for reading. Fri Feb 21 23:31:34 1997 Miles Bader * device.c (dopen): Add MOD_FLAGS param, and detect read-only devices. (dev_clear_flags, store_device_open): Use MOD_FLAGS arg to dopen. Wed Feb 19 15:40:18 1997 Miles Bader * storeread.c (doc): Make doc string come after options. * device.c (dev_set_flags): Correctly check for unenforcable runs. * task.c: New file. * Makefile (SRCS): Add task.c. * store.h (store_task_class): New declaration. (store_task_create, _store_task_create, store_open): New declarations. * std.c (store_std_classes): Add &STORE_TASK_CLASS. * xinl.c: Renamed from store.c. * Makefile (SRCS): Change store.c to xinl.c. Mon Oct 21 22:03:19 1996 Thomas Bushnell, n/BSG * store.h: Add extern inline protection. * store.c: New file. * Makefile (SRCS): Add store.c. Tue Oct 8 14:31:51 1996 Miles Bader * kids.c (store_set_child_flags, store_clear_child_flags): New funcs. * store.h (store_set_child_flags, store_clear_child_flags): New decls. * stripe.c (stripe_set_flags, stripe_clear_flags): Remove functions. * remap.c (store_remap_class): Init set_flags & clear_flags fields. * stripe.c (store_ileave_class, store_concat_class): Likewise. * clone.c (store_clone): Copy name field. Mon Oct 7 14:56:27 1996 Miles Bader * device.c (dev_set_flags, dev_clear_flags): New functions. (store_device_class): Add dev_set_flags & dev_clear_flags. (dopen, dclose, enforced): New functions. (store_device_open): Use dopen. * store.h : New include. * stripe.c (stripe_set_flags, stripe_clear_flags): New functions. (store_ileave_create, store_concat_create): Add common backend flags from children to parent's flags. Sat Oct 5 00:23:45 1996 Miles Bader * create.c (store_create): Add special handling of STORE_INACTIVE in FLAGS. Fri Oct 4 23:44:51 1996 Miles Bader * create.c (store_create): Free *STORE when store_set_flags fails. * store.h (STORE_INNOCUOUS, STORE_INACTIVE): New macros. (store_is_securely_returnable): New function. * zero.c (store_zero_create): Set STORE_INNOCUOUS flags. Fri Sep 27 17:01:07 1996 Miles Bader * remap.c (store_remap): Zero SOURCE->end before calling _store_derive. Turn off STORE_ENFORCED flag in source if munging it. * device.c (store_device_open): Set *STORE's name appropriately. Tue Sep 24 15:15:27 1996 Miles Bader * zero.c : New include. (zero_open): When no size is specified, use the maximum off_t value, not the maximum size_t value. Mon Sep 23 12:55:43 1996 Miles Bader * storecat.c (main): Use new PARAMS var for passing args to STORE_ARGP. Thu Sep 19 11:12:44 1996 Miles Bader * argp.c (parse_opt): Correctly check for non-default type. * kids.c (store_decode_children): Change CLASSES to **. * encode.c (store_encode): Make CLASS var const. * file.c (_store_file_create): Make CLASS arg const. * store.h (struct store): Make CLASS field const. (_make_store): Make CLASS arg const. * make.c (_make_store): Make CLASS arg const. * stripe.c (ileave_decode, concat_decode): Make CLASSES arg const. * remap.c (remap_decode): Likewise. * create.c (store_create): Likewise. Wed Sep 18 15:14:51 1996 Miles Bader * argp.c (struct store_parsed): Change CLASSES field to be a pointer to a vector of class pointers. (find_class): Change CLASSES to be a vector of class pointers. * decode.c (store_decode): Change CLASSES to be a vector of class pointers. * store.h (struct store_class, struct store_argp_params, store_create, store_open, store_decode, store_decode_children): Change CLASSES args to be a pointer to a vector of class pointers. (_store_add_std_class): Declaration removed. (STORE_STD_CLASS): Macro removed. * std.c (store_std_classes): Make an initialized array. (_store_add_std_class): Function removed. * device.c (store_device_class): Renamed from dev_class; export. * file.c (store_file_class): Renamed from file_class; export. (store_file_byte_class): Renamed from file_byte_class; export. * zero.c (store_zero_class): Renamed from zero_class; export. * remap.c (store_remap_class): Renamed from remap_class; export. * open.c (store_query_class): Renamed from query_class; export. * stripe.c (store_ileave_class): Renamed from ileave_class; export. (store_concat_class): Renamed from concat_class; export. * zero.c (zero_open, zero_validate_name): New functions. (zero_class): Use them. * argp.c (store_parsed_open): Remove CLASSES argument. (struct store_parsed): Make some fields const. * store.h (store_parsed_open): Remove CLASSES argument. Tue Sep 17 14:48:48 1996 Miles Bader * store.h (struct store_class): Add OPEN and PARSE fields. (store_open): Make NAME const. (struct store_argp_params): New type. * device.c (dev_open): New function. (dev_class): Point to it. * file.c (fhile_open): New function. (file_class): Point to it. * argp.c (options, parse_opt): Add --store-type/-T & (hidden) --machdev/-m options, remove --device/-d option. (struct store_parsed): Rmove DEVICE field, add TYPE, DEFAULT_TYPE and CLASSES fields. (store_parsed_free): Free PARSED->type if it exists. (store_parsed_append_args): Use --store-type=... instead of --device. (store_parsed_open): When --store-type is specified, search CLASSES for that type, and call it's open function. * open.c (store_open): Make NAME const. (query_class): New variable. Fri Sep 13 14:33:24 1996 Miles Bader * argp.c (store_parsed_append_args, store_parsed_open, struct store_parsed): Use `device' instead of `machdev'. * encode.c (store_return): Only call store_enc_dealloc upon failure. (store_std_leaf_allocate_encoding): NUM_OFFSETS is NUM_RUNS * 2. * enc.c (store_enc_return): Don't call store_enc_dealloc. Thu Sep 12 17:23:35 1996 Miles Bader * storecat.c (main): Limit reads to 1M, and iterate until done. Use store_parsed_name to get store name for errors. Add program description. * store.h (STORAGE_REMAP, STORAGE_ZERO): New macros (temporary, to avoid touching hurd/hurd_types.h). 1996-09-12 Miles Bader * remap.c (store_remap): Call _store_derive after changing runs. * argp.c (store_parsed_name): New function. Wed Sep 11 12:38:44 1996 Miles Bader * decode.c (store_with_decoded_runs): New function. (store_std_leaf_decode): Call it. * store.h (store_with_decoded_runs): New declaration. * stripe.c (ileave_class, concat_class): Initialize the REMAP field. (stripe_remap): New function. * store.h (store_remap_create): New declaration. * zero.c (zero_remap): New function. (zero_class): Initialize remap field with zero_remap. * Makefile (SRCS): Add remap.c. * zero.c: New file, from null.c. * null.c: File removed. * store.h (store_zero_create): Renamed from store_null_create. * Makefile (SRCS): Replace null.c by zero.c. Tue Sep 10 17:05:03 1996 Miles Bader * remap.c: New file. * store.h (struct store_class): Add remap field. (store_remap): New declaration. * encode.c (store_return): New function. * enc.c (store_enc_return, store_return): New functions. * store.h (store_enc_return, store_return): New declarations. Mon Sep 9 12:32:11 1996 Miles Bader * rdwr.c (store_write, store_read): Use void * for buffers, not char *. * device.c (dev_write, dev_read): Likewise. * file.c (file_read, file_write, file_byte_read, file_byte_write): Likewise. * stripe.c (stripe_read, stripe_write): Likewise. * null.c (null_read, null_write): Likewise. * store.h (store_write_meth_t, store_read_meth_t, store_read, store_write): Make type of buffer void *, not char *. Sun Sep 8 14:14:05 1996 Miles Bader * device.c (dev_read, dev_write): Don't print debugging messages. * argp.c (options, parse_opt): Change short option names around. Wed Sep 4 13:01:19 1996 Miles Bader * argp.c (parse_opt): --layer isn't implemented, so say so. * storeread.c (main): Add new args to store_*_create calls. * storecat.c (main): Use new interface to store_argp. Wed Sep 3 11:00:00 1996 Miles Bader * argp.c (struct store_parsed): New type. (store_parsed_free, store_parsed_append_args, store_parsed_open): New functions. (parse_opt): Use new store_parsed structure instead of the old store_pars_hook, and just fill in the names rather than doing the open here. Don't take a struct store_argp_params as input any more; instead just take the address of a location in which to return a store_parsed structure. (struct store_parse_hook): Type removed. (free_hook, open_file): Functions removed. : New include. , : Includes removed. (options): --machdev/-m renamed to --device/-D. * store.h (struct store): Make log2_* fields unsigned. (STORE_NO_FILEIO): New macro. (STORE_HARD_READONLY, STORE_ENFORCED): Values changed. (STORE_GENERIC_FLAGS): Add STORE_NO_FILEIO. (struct store_argp_params): Type removed. (store_parsed_Free, store_parsed_open, store_parsed_append_args): New declarations. (struct store_parsed): New incomplete type. Mon Sep 2 18:56:26 1996 Miles Bader * store.h (store_open): New declaration. * open.c: New file. * Makefile (SRCS): Add open.c. Wed Aug 21 14:40:15 1996 Miles Bader * device.c (store_device_open): Don't call store_device_create if device_open fails. Tue Aug 20 14:37:33 1996 Miles Bader * argp.c (free_hook): Free H->params->args if necessary. (parse_opt): Initialize and fill in H->params->args when appropriate. : New include. Mon Aug 19 14:31:33 1996 Miles Bader * store.h (struct store_argp_params): Add return_args, args, & args_len fields. Fri Jul 19 16:16:46 1996 Miles Bader * decode.c (store_std_leaf_decode): Decode name too. Deal with NAME_LENGTH being 0. Sun Jun 16 22:49:55 1996 Miles Bader * argp.c (parse_opt): Use argp_failure. Thu May 23 10:54:06 1996 Miles Bader * argp.c (parse_opt): Honor ARGP_NO_ERRS. : New include. Wed May 22 00:14:18 1996 Miles Bader * argp.c (parse_opt): Use error instead of ERR for non-parsing errors. Rename ERR to PERR. Tue May 21 00:01:02 1996 Miles Bader * storecat.c (main): Delete most everything and use store arg parsing. (options, doc, args_doc): Variables removed. * create.c (store_create): Add FLAGS & CLASSES params. * rdwr.c (store_write): Return an error if STORE is readonly. * decode.c (store_decode): Add CLASSES param, use it instead of big hardwired switch statement. (store_default_leaf_decode): Use typedef for CREATE param. Pass in FLAGS arg when calling it. * encode.c (store_std_leaf_allocate_encoding): Renamed from store_default_leaf_allocate_encoding. Make STORE const. (store_std_leaf_encode): Renamed from store_default_leaf_encode. Make STORE const. Get class id from store->class->id. (store_encode): Use CLASS field instead of METHS field. * clone.c (store_clone): Copy the flags by passing them to _make_store. Use CLASS field instead of METHS field. * file.c (store_file_open, file_decode): New functions. (store_file_create): Always set STORE_ENFORCED. (file_class): Renamed from file_meths. Add more fields. Make std with _STORE_STD_CLASS. (file_byte_class): Renamed from file_byte_meths. , : New includes. * device.c (store_device_open, dev_decode): New functions. (store_device_create): Always set STORE_ENFORCED. (device_class): Renamed from device_meths. Add more fields. Make std with _STORE_STD_CLASS. : New include. * stripe.c (ileave_allocate_encoding, ileave_encode, ileave_decode, concat_allocate_encoding, concat_encode, concat_decode): New functions. (concat_class): New variable. (ileave_class): Renamed from stripe_class. More fields added. * store.h (struct store): Remove CLASS field. METHS field renamed CLASS. (STORE_IMMUTABLE_FLAGS, STORE_GENERIC_FLAGS, STORE_BACKEND_SPEC_BASE, STORE_BACKEND_FLAGS, STORE_READONLY, STORE_HARD_READONLY, STORE_ENFORCED): New macros. (struct store_class): Renamed from store_meths; all uses changed. Add ID, NAME, DECODE, SET_FLAGS, CLEAR_FLAGS, and NEXT fields. (store_std_leaf_decode): Renamed from store_default_leaf_decode. (store_std_leaf_create_t): New type. (_STORE_STD_CLASS): New macro. (struct store_argp_params): READONLY field deleted, FLAGS field added. (store_allocate_child_encodings, store_encode_children, store_decode_children, store_set_flags, store_clear_flags, store_file_open, store_device_open, store_null_create, store_std_classes, _store_add_std_class, store_allocate_child_encodings, store_encode_children, store_decode_children): New declarations (store_decode, store_create, store_device_create, _store_device_create, store_file_create, _store_file_create, store_ileave_create, store_concat_create, _make_store): Declarations updated. * make.c (_make_store): CLASS param removed, METHS param renamed CLASS; all callers changed. FLAGS param added. * stripe.c (store_ileave_create, store_concat_create): Likewise. * file.c (store_file_create, _store_file_create): Likewise. * device.c (store_device_create, _store_device_create): Likewise. * argp.c (open_machdev): Function removed. (parse_opt): Use store_device_open instead of open_machdev. (open_file, parse_opt): Add FLAGS arg to various function calls. * set.c (store_set_children): Function moved to kids.c. * null.c, flags.c, std.c, kids.c: New files. * Makefile (SRCS): Add null.c, flags.c, std.c, & kids.c. Sun May 12 10:12:24 1996 Miles Bader * argp.c (store_parse_opt): Put result in the passed-in params struct. Pass hook to open_{file,machdev}. (open_machdev): Use params to determine readonly-ness. (open_file): New function. * store.h (store_argp): New declaration. (struct store_argp_params): New type. * Makefile (SRCS): Add argp.c. * create.c (store_create): Steal SOURCE instead of cloning it. Sat May 11 01:17:39 1996 Miles Bader * argp.c: New file. * storeread.c (parse_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL. * storecat.c (parse_opt): Likewise. Fri May 10 13:23:36 1996 Miles Bader * store.h (struct store_run): New type. (struct store): RUNS is a vector of runs, not offsets. (_store_device_create, _store_file_create, _make_store, store_set_runs, store_default_leaf_decode): Update declaration. * rdwr.c (store_find_first_run, store_next_run, store_write, store_read): Use store_run, not off_t, vectors; tweak accordingly. Rename variables called `RUNS' to `RUN', because although they're always vectors, they're used more often for their first element. * derive.c (_store_derive): Use store_run, not off_t, vectors; tweak accordingly. * device.c (store_device_create, _store_device_create): Likewise. * set.c (store_set_runs): Likewise. * storecat.c (main): Likewise. * storeread.c (main): Likewise. * make.c (_make_store): Likewise. * stripe.c (store_ileave_create, store_concat_create): Likewise. * file.c (store_file_create, _store_file_create): Likewise. * decode.c (store_default_leaf_decode): Convert the slice of the offset vector we're using into a vector of store_runs to pass to CREATE. Change type of CREATE accordingly. * encode.c (store_default_leaf_encode): Convert from the store_run vector to a off_t vector for encoding. * create.c (store_create): Use the real file_get_storage_info. (fgsi): Function removed. * store.h (struct store): Add CHILDREN & NUM_CHILDREN fields. Rename RUNS_LEN to NUM_RUNS (all uses changed). (store_set_children): New declaration. * make.c (_make_store): Initialize CHILDREN & NUM_CHILDREN. (store_free): Free all children too. * clone.c (store_clone): Clone children too. * set.c (store_set_children): New function. * stripe.c (store_ileave_create, store_concat_create): Use store_set_children. (stripe_clone): Function removed. (stripe_read, stripe_write): Get stripes from CHILDREN, not HOOK. * Makefile (storeread, storecat): Remove explicit dependency on program object file. Put include of ../Makeconf before dependencies. Mon May 6 15:20:53 1996 Miles Bader * store.h: Move big comment describing file_get_storage_info encoding to .