xref: /titanic_53/usr/src/common/ficl/ficlplatform/unix.c (revision e09118e474abe7cd4a2d6d9c34c01e4be81ad76e)
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