1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
espec - Sinclair Spectrum emulator
Copyright (C) 2003 Ian Cowburn (ianc@noddybox.demon.co.uk)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------
Usual library wrappers and utils
*/
#ifndef ESPEC_UTIL_H
#define ESPEC_UTIL_H
#include <stdlib.h>
/* ---------------------------------------- INTERFACES
*/
/* Returns result from malloc(size), calling Exit() if it fails.
*/
void *Malloc(size_t size);
/* Returns result from realloc(p,size), calling Exit() if it fails.
*/
void *Realloc(void *p, size_t size);
/* Copies a string. The result must be freed.
*/
char *StrCopy(const char *source);
/* Safely copies a string. The destination is returned.
*/
char *SafeStrCopy(char *destination,
const char *source,
size_t destination_size);
/* Returns the filename portion of path. Note returned pointer is pointing
inside of path.
*/
const char *Basename(const char *path);
/* Returns the directory portion of path. Note returned pointer is internal
static storage. If there are no directory seperators in path, "." is
returned.
*/
const char *Dirname(const char *path);
/* Writes the passed text to debug.txt. Note this is interface is not
able to be switched on/off, so debug is only used in a transient way
(once the bug is fixed, calls to this should be removed).
*/
void Debug(const char *format,...);
/* See if the passed strings match, case insensitive, up to the passed length.
Returns TRUE if they match, otherwise FALSE. If nul is hit before the
length then just up to that is checked.
*/
int StartsWith(const char *a, const char *b, size_t len);
#endif
/* END OF FILE */
|