Deleted Added
full compact
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 ---