afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome/*
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * This file and its contents are supplied under the terms of the
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * Common Development and Distribution License ("CDDL"), version 1.0.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * You may only use this file in accordance with the terms of version
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * 1.0 of the CDDL.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome *
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * A full copy of the text of the CDDL should have accompanied this
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * source. A copy of the CDDL is also available via the Internet at
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * http://www.illumos.org/license/CDDL.
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome */
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome/*
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome * Copyright 2015 Toomas Soome <tsoome@me.com>
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome */
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#include "ficl.h"
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomevoid *
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlMalloc(size_t size)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (malloc(size));
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomevoid *
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlRealloc(void *p, size_t size)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (realloc(p, size));
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomevoid
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlFree(void *p)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome free(p);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomevoid
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlCallbackDefaultTextOut(ficlCallback *callback, char *message)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome FICL_IGNORE(callback);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome if (message != NULL) {
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#ifdef STAND
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome while (*message != 0)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome putchar((unsigned char)*(message++));
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#else
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome (void) fputs(message, stdout);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome (void) fflush(stdout);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#endif
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#if FICL_WANT_FILE
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomeint
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlFileTruncate(ficlFile *ff, ficlUnsigned size)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (ftruncate(fileno(ff->f), size));
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomeint
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlFileStatus(char *filename, int *status)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome struct stat statbuf;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome if (stat(filename, &statbuf) == 0) {
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome *status = statbuf.st_mode;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (0);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome }
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome *status = ENOENT;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (-1);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomelong
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas SoomeficlFileSize(ficlFile *ff)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome struct stat statbuf;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome if (ff == NULL)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (-1);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome statbuf.st_size = -1;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome if (fstat(fileno(ff->f), &statbuf) != 0)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (-1);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome return (statbuf.st_size);
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome#endif