*
* Licensed under the GNU Public License version 3 only, see LICENSE.
*
- * @BAKE cc -std=gnu89 -O2 $@ -o $* $+ # @STOP
+ * @BAKE cc -std=c89 -O2 $@ -o $* $+ # @STOP
*/
+#define _POSIX_C_SOURCE 200809L
+
#include <assert.h>
#include <ctype.h>
#include <errno.h>
map(char * fn) {
struct stat s;
int fd;
- map_t m = {0};
+ map_t m = (map_t) {0};
fd = open(fn, O_RDONLY);
if (fd != -1) {
if (!fstat(fd,&s)
&& s.st_mode & S_IFREG
&& s.st_size) {
- m.len = s.st_size;
- m.str = (char *) mmap(NULL, s.st_size, PROT_READ, MAP_SHARED, fd, 0);
+ m.len = (size_t) s.st_size;
+ m.str = (char *) mmap(NULL, m.len, PROT_READ, MAP_SHARED, fd, 0);
}
close(fd);
}
static char *
find_region(map_t m) {
+ extern char * strndup(const char * s, size_t n); /* for splint */
char * buf = NULL, * start, * stop;
start = find(START, m.str, m.str + m.len);
}
if (stop)
- { buf = strndup(start, (stop - m.str) - (start - m.str)); }
+ { buf = strndup(start, (size_t) (stop - m.str) - (start - m.str)); }
}
return buf;
}
static int
root(char ** rootp) {
- char x[1] = "\0";
+ char x[1] = {'\0'};
char * root = *rootp;
size_t len = strlen(root);
int ret;
char * buf = NULL;
/* changing this to "" creates many additional allocations */
- setlocale(LC_ALL, "C");
+ (void) setlocale(LC_ALL, "C");
if (argc < 2
|| !strcmp(argv[1], "-h")