/* Copyright (C) 2014-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk3madso.ctr */ /** @file dk3madso.c The dk3madso module. */ #line 65 "dk3madso.ctr" #include "dk3ma.h" #if DK3_HAVE_STDLIB_H #include #endif #if DK3_HAVE_UNISTD_H #include #endif #if DK3_HAVE_STRING_H #include #endif #if DK3_HAVE_ERRNO_H #include #endif #include "dk3str.h" #line 87 "dk3madso.ctr" int dk3ma_d_to_c8_string(char *rb, size_t sz, double va) { int back = 0; #if DK3_HAVE_SNPRINTF || DK3_HAVE__SNPRINTF || DK3_ON_WINDOWS int res; if ((NULL != rb) && (0 < sz)) { #if DK3_HAVE_SNPRINTF res = snprintf(rb, sz, "%g", va); #else res = _snprintf(rb, sz, "%g", va); #endif if (0 < res) { /* Anything written? */ if ((size_t)res < sz) { /* Buffer large enough? */ rb[res] = '\0'; rb[sz - 1] = '\0'; back = 1; } else { /* Buffer too small! */ rb[sz - 1] = '\0'; } } else { /* Nothing written! */ rb[0] = '\0'; } } #else char buf[128]; if ((NULL != rb) && (0 < sz)) { sprintf(buf, "%g", va); if (dk3str_c8_len(buf) < sz) { dk3str_c8_cpy(rb, buf); back = 1; } else { rb[0] = '\0'; } } #endif return back; } int dk3ma_d_to_string(dkChar *rb, size_t sz, double va) { #if DK3_CHAR_SIZE > 1 char buf[128]; char *cptr; dkChar *dptr; int back = 0; if ((NULL != rb) && (0 < sz)) { if (dk3ma_d_to_c8_string(buf, sizeof(buf), va)) { if (dk3str_c8_len(buf) < sz) { back = 1; dptr = rb; cptr = buf; while(*cptr) { *(dptr++) = (dkChar)(*(cptr++)); } *dptr = dkT('\0'); } else { rb[0] = dkT('\0'); } } else { rb[0] = dkT('\0'); } } return back; #else return (dk3ma_d_to_c8_string(rb, sz, va)); #endif }