1a1bf3f78SToomas Soome /*
2a1bf3f78SToomas Soome * This file and its contents are supplied under the terms of the
3a1bf3f78SToomas Soome * Common Development and Distribution License ("CDDL"), version 1.0.
4a1bf3f78SToomas Soome * You may only use this file in accordance with the terms of version
5a1bf3f78SToomas Soome * 1.0 of the CDDL.
6a1bf3f78SToomas Soome *
7a1bf3f78SToomas Soome * A full copy of the text of the CDDL should have accompanied this
8a1bf3f78SToomas Soome * source. A copy of the CDDL is also available via the Internet at
9a1bf3f78SToomas Soome * http://www.illumos.org/license/CDDL.
10a1bf3f78SToomas Soome */
11a1bf3f78SToomas Soome
12a1bf3f78SToomas Soome /*
13a1bf3f78SToomas Soome * Copyright 2015 Toomas Soome <tsoome@me.com>
14a1bf3f78SToomas Soome */
15a1bf3f78SToomas Soome
16a1bf3f78SToomas Soome #include "ficl.h"
17a1bf3f78SToomas Soome
18a1bf3f78SToomas Soome void *
ficlMalloc(size_t size)19a1bf3f78SToomas Soome ficlMalloc(size_t size)
20a1bf3f78SToomas Soome {
21a1bf3f78SToomas Soome return (malloc(size));
22a1bf3f78SToomas Soome }
23a1bf3f78SToomas Soome
24a1bf3f78SToomas Soome void *
ficlRealloc(void * p,size_t size)25a1bf3f78SToomas Soome ficlRealloc(void *p, size_t size)
26a1bf3f78SToomas Soome {
27a1bf3f78SToomas Soome return (realloc(p, size));
28a1bf3f78SToomas Soome }
29a1bf3f78SToomas Soome
30a1bf3f78SToomas Soome void
ficlFree(void * p)31a1bf3f78SToomas Soome ficlFree(void *p)
32a1bf3f78SToomas Soome {
33a1bf3f78SToomas Soome free(p);
34a1bf3f78SToomas Soome }
35a1bf3f78SToomas Soome
36a1bf3f78SToomas Soome void
ficlCallbackDefaultTextOut(ficlCallback * callback,char * message)37a1bf3f78SToomas Soome ficlCallbackDefaultTextOut(ficlCallback *callback, char *message)
38a1bf3f78SToomas Soome {
39a1bf3f78SToomas Soome FICL_IGNORE(callback);
40a1bf3f78SToomas Soome
41a1bf3f78SToomas Soome if (message != NULL) {
42*e09118e4SToomas Soome #ifdef _STANDALONE
43a1bf3f78SToomas Soome while (*message != 0)
44a1bf3f78SToomas Soome putchar((unsigned char)*(message++));
45a1bf3f78SToomas Soome #else
46a1bf3f78SToomas Soome (void) fputs(message, stdout);
47a1bf3f78SToomas Soome (void) fflush(stdout);
48a1bf3f78SToomas Soome #endif
49a1bf3f78SToomas Soome }
50a1bf3f78SToomas Soome }
51a1bf3f78SToomas Soome
52a1bf3f78SToomas Soome #if FICL_WANT_FILE
53a1bf3f78SToomas Soome int
ficlFileTruncate(ficlFile * ff,ficlUnsigned size)54a1bf3f78SToomas Soome ficlFileTruncate(ficlFile *ff, ficlUnsigned size)
55a1bf3f78SToomas Soome {
56a1bf3f78SToomas Soome return (ftruncate(fileno(ff->f), size));
57a1bf3f78SToomas Soome }
58a1bf3f78SToomas Soome
59a1bf3f78SToomas Soome int
ficlFileStatus(char * filename,int * status)60a1bf3f78SToomas Soome ficlFileStatus(char *filename, int *status)
61a1bf3f78SToomas Soome {
62a1bf3f78SToomas Soome struct stat statbuf;
63a1bf3f78SToomas Soome
64a1bf3f78SToomas Soome if (stat(filename, &statbuf) == 0) {
65a1bf3f78SToomas Soome *status = statbuf.st_mode;
66a1bf3f78SToomas Soome return (0);
67a1bf3f78SToomas Soome }
68a1bf3f78SToomas Soome *status = ENOENT;
69a1bf3f78SToomas Soome return (-1);
70a1bf3f78SToomas Soome }
71a1bf3f78SToomas Soome
72a1bf3f78SToomas Soome long
ficlFileSize(ficlFile * ff)73a1bf3f78SToomas Soome ficlFileSize(ficlFile *ff)
74a1bf3f78SToomas Soome {
75a1bf3f78SToomas Soome struct stat statbuf;
76a1bf3f78SToomas Soome
77a1bf3f78SToomas Soome if (ff == NULL)
78a1bf3f78SToomas Soome return (-1);
79a1bf3f78SToomas Soome
80a1bf3f78SToomas Soome statbuf.st_size = -1;
81a1bf3f78SToomas Soome if (fstat(fileno(ff->f), &statbuf) != 0)
82a1bf3f78SToomas Soome return (-1);
83a1bf3f78SToomas Soome
84a1bf3f78SToomas Soome return (statbuf.st_size);
85a1bf3f78SToomas Soome }
86a1bf3f78SToomas Soome #endif
87