nv.c (225787) | nv.c (229945) |
---|---|
1/*- 2 * Copyright (c) 2009-2010 The FreeBSD Foundation 3 * All rights reserved. 4 * 5 * This software was developed by Pawel Jakub Dawidek under sponsorship from 6 * the FreeBSD Foundation. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2009-2010 The FreeBSD Foundation 3 * All rights reserved. 4 * 5 * This software was developed by Pawel Jakub Dawidek under sponsorship from 6 * the FreeBSD Foundation. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sbin/hastd/nv.c 225787 2011-09-27 08:50:37Z pjd $"); | 31__FBSDID("$FreeBSD: head/sbin/hastd/nv.c 229945 2012-01-10 22:39:07Z pjd $"); |
32 33#include <sys/param.h> 34#include <sys/endian.h> 35 36#include <bitstring.h> 37#include <errno.h> 38#include <stdarg.h> 39#include <stdbool.h> --- 340 unchanged lines hidden (view full) --- 380 381 nv = malloc(sizeof(*nv)); 382 if (nv == NULL) 383 return (NULL); 384 nv->nv_error = 0; 385 nv->nv_ebuf = eb; 386 nv->nv_magic = NV_MAGIC; 387 | 32 33#include <sys/param.h> 34#include <sys/endian.h> 35 36#include <bitstring.h> 37#include <errno.h> 38#include <stdarg.h> 39#include <stdbool.h> --- 340 unchanged lines hidden (view full) --- 380 381 nv = malloc(sizeof(*nv)); 382 if (nv == NULL) 383 return (NULL); 384 nv->nv_error = 0; 385 nv->nv_ebuf = eb; 386 nv->nv_magic = NV_MAGIC; 387 |
388 if (nv_validate(nv, &extra) < 0) { | 388 if (nv_validate(nv, &extra) == -1) { |
389 rerrno = errno; 390 nv->nv_magic = 0; 391 free(nv); 392 errno = rerrno; 393 return (NULL); 394 } 395 /* 396 * Remove extra zeros at the end of the buffer. --- 78 unchanged lines hidden (view full) --- 475void 476nv_add_stringv(struct nv *nv, const char *name, const char *valuefmt, 477 va_list valueap) 478{ 479 char *value; 480 ssize_t size; 481 482 size = vasprintf(&value, valuefmt, valueap); | 389 rerrno = errno; 390 nv->nv_magic = 0; 391 free(nv); 392 errno = rerrno; 393 return (NULL); 394 } 395 /* 396 * Remove extra zeros at the end of the buffer. --- 78 unchanged lines hidden (view full) --- 475void 476nv_add_stringv(struct nv *nv, const char *name, const char *valuefmt, 477 va_list valueap) 478{ 479 char *value; 480 ssize_t size; 481 482 size = vasprintf(&value, valuefmt, valueap); |
483 if (size < 0) { | 483 if (size == -1) { |
484 if (nv->nv_error == 0) 485 nv->nv_error = ENOMEM; 486 return; 487 } 488 size++; 489 nv_add(nv, (const unsigned char *)value, size, NV_TYPE_STRING, name); 490 free(value); 491} --- 130 unchanged lines hidden (view full) --- 622nv_dump(struct nv *nv) 623{ 624 struct nvhdr *nvh; 625 unsigned char *data, *ptr; 626 size_t dsize, size; 627 unsigned int ii; 628 bool swap; 629 | 484 if (nv->nv_error == 0) 485 nv->nv_error = ENOMEM; 486 return; 487 } 488 size++; 489 nv_add(nv, (const unsigned char *)value, size, NV_TYPE_STRING, name); 490 free(value); 491} --- 130 unchanged lines hidden (view full) --- 622nv_dump(struct nv *nv) 623{ 624 struct nvhdr *nvh; 625 unsigned char *data, *ptr; 626 size_t dsize, size; 627 unsigned int ii; 628 bool swap; 629 |
630 if (nv_validate(nv, NULL) < 0) { | 630 if (nv_validate(nv, NULL) == -1) { |
631 printf("error: %d\n", errno); 632 return; 633 } 634 635 NV_CHECK(nv); 636 PJDLOG_ASSERT(nv->nv_error == 0); 637 638 ptr = ebuf_data(nv->nv_ebuf, &size); --- 140 unchanged lines hidden (view full) --- 779 return; 780 } 781 nvh->nvh_type = NV_ORDER_HOST | type; 782 nvh->nvh_namesize = (uint8_t)namesize; 783 nvh->nvh_dsize = (uint32_t)vsize; 784 bcopy(name, nvh->nvh_name, namesize); 785 786 /* Add header first. */ | 631 printf("error: %d\n", errno); 632 return; 633 } 634 635 NV_CHECK(nv); 636 PJDLOG_ASSERT(nv->nv_error == 0); 637 638 ptr = ebuf_data(nv->nv_ebuf, &size); --- 140 unchanged lines hidden (view full) --- 779 return; 780 } 781 nvh->nvh_type = NV_ORDER_HOST | type; 782 nvh->nvh_namesize = (uint8_t)namesize; 783 nvh->nvh_dsize = (uint32_t)vsize; 784 bcopy(name, nvh->nvh_name, namesize); 785 786 /* Add header first. */ |
787 if (ebuf_add_tail(nv->nv_ebuf, nvh, NVH_HSIZE(nvh)) < 0) { | 787 if (ebuf_add_tail(nv->nv_ebuf, nvh, NVH_HSIZE(nvh)) == -1) { |
788 PJDLOG_ASSERT(errno != 0); 789 if (nv->nv_error == 0) 790 nv->nv_error = errno; 791 free(nvh); 792 return; 793 } 794 free(nvh); 795 /* Add the actual data. */ | 788 PJDLOG_ASSERT(errno != 0); 789 if (nv->nv_error == 0) 790 nv->nv_error = errno; 791 free(nvh); 792 return; 793 } 794 free(nvh); 795 /* Add the actual data. */ |
796 if (ebuf_add_tail(nv->nv_ebuf, value, vsize) < 0) { | 796 if (ebuf_add_tail(nv->nv_ebuf, value, vsize) == -1) { |
797 PJDLOG_ASSERT(errno != 0); 798 if (nv->nv_error == 0) 799 nv->nv_error = errno; 800 return; 801 } 802 /* Align the data (if needed). */ 803 vsize = roundup2(vsize, 8) - vsize; 804 if (vsize == 0) 805 return; 806 PJDLOG_ASSERT(vsize > 0 && vsize <= sizeof(align)); | 797 PJDLOG_ASSERT(errno != 0); 798 if (nv->nv_error == 0) 799 nv->nv_error = errno; 800 return; 801 } 802 /* Align the data (if needed). */ 803 vsize = roundup2(vsize, 8) - vsize; 804 if (vsize == 0) 805 return; 806 PJDLOG_ASSERT(vsize > 0 && vsize <= sizeof(align)); |
807 if (ebuf_add_tail(nv->nv_ebuf, align, vsize) < 0) { | 807 if (ebuf_add_tail(nv->nv_ebuf, align, vsize) == -1) { |
808 PJDLOG_ASSERT(errno != 0); 809 if (nv->nv_error == 0) 810 nv->nv_error = errno; 811 return; 812 } 813} 814 815static void --- 151 unchanged lines hidden --- | 808 PJDLOG_ASSERT(errno != 0); 809 if (nv->nv_error == 0) 810 nv->nv_error = errno; 811 return; 812 } 813} 814 815static void --- 151 unchanged lines hidden --- |