/*
 * Copyright (c) 2018-2021 mcumgr authors
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <stdio.h>
#include <string.h>

#include <zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h>
#include <zephyr/mgmt/mcumgr/grp/img_mgmt/image.h>

int
img_mgmt_ver_str(const struct image_version *ver, char *dst)
{
	int rc = 0;
	int rc1 = 0;

	rc = snprintf(dst, IMG_MGMT_VER_MAX_STR_LEN, "%hu.%hu.%hu",
		(uint16_t)ver->iv_major, (uint16_t)ver->iv_minor,
		ver->iv_revision);

	if (rc >= 0 && ver->iv_build_num != 0) {
		rc1 = snprintf(&dst[rc], IMG_MGMT_VER_MAX_STR_LEN - rc, ".%u",
			ver->iv_build_num);
	}

	if (rc1 >= 0 && rc >= 0) {
		rc = rc + rc1;
	} else {
		/* If any failed then all failed */
		rc = -1;
	}

	return rc;
}
