shithub: femtolisp

Download patch

ref: ea47856f32ee8063d5fe7eb3b1fe5b6094320db2
parent: 783f049aa71a90b0ea02918e04b30a6b45b6a75e
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Mon Nov 11 14:23:47 EST 2024

fixed some of the strings not marked with const

--- a/3rd/mp/strtomp.c
+++ b/3rd/mp/strtomp.c
@@ -1,9 +1,9 @@
 #include "platform.h"
 
-static char*
-frompow2(char *a, mpint *b, int s)
+static const char*
+frompow2(const char *a, mpint *b, int s)
 {
-	char *p, *next;
+	const char *p, *next;
 	mpdigit x;
 	uint32_t i;
 
@@ -27,10 +27,10 @@
 	return next;
 }
 
-static char*
-from8(char *a, mpint *b)
+static const char*
+from8(const char *a, mpint *b)
 {
-	char *p, *next;
+	const char *p, *next;
 	mpdigit x, y;
 	int i;
 
@@ -64,8 +64,8 @@
 	1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000
 };
 
-static char*
-from10(char *a, mpint *b)
+static const char*
+from10(const char *a, mpint *b)
 {
 	uint32_t x, y;
 	mpint *pow, *r;
@@ -103,10 +103,10 @@
 }
 
 mpint*
-strtomp(char *a, char **pp, int base, mpint *b)
+strtomp(const char *a, char **pp, int base, mpint *b)
 {
 	int sign;
-	char *e;
+	const char *e;
 
 	if(b == nil){
 		b = mpnew(0);
@@ -163,7 +163,7 @@
 	}
 
 	if(pp != nil)
-		*pp = e;
+		*pp = (char*)e;
 
 	// if no characters parsed, there wasn't a number to convert
 	if(e == a)
--- a/flisp.c
+++ b/flisp.c
@@ -162,13 +162,13 @@
 // symbol table ---------------------------------------------------------------
 
 int
-fl_is_keyword_name(char *str, size_t len)
+fl_is_keyword_name(const char *str, size_t len)
 {
 	return (str[0] == ':' || str[len-1] == ':') && str[1] != '\0';
 }
 
 static symbol_t *
-mk_symbol(char *str)
+mk_symbol(const char *str)
 {
 	symbol_t *sym;
 	size_t len = strlen(str);
@@ -189,7 +189,7 @@
 }
 
 static symbol_t **
-symtab_lookup(symbol_t **ptree, char *str)
+symtab_lookup(symbol_t **ptree, const char *str)
 {
 	int x;
 	while(*ptree != nil && (x = strcmp(str, (*ptree)->name)) != 0)
@@ -198,7 +198,7 @@
 }
 
 value_t
-symbol(char *str)
+symbol(const char *str)
 {
 	symbol_t **pnode;
 
@@ -253,7 +253,7 @@
 	return &dest[i+1];
 }
 
-char *
+const char *
 symbol_name(value_t v)
 {
 	if(ismanaged(v)){
--- a/flisp.h
+++ b/flisp.h
@@ -176,8 +176,8 @@
 
 /* symbol table */
 value_t gensym(void);
-value_t symbol(char *str);
-char *symbol_name(value_t v);
+value_t symbol(const char *str);
+const char *symbol_name(value_t v);
 
 /* read, eval, print main entry points */
 value_t fl_toplevel_eval(value_t expr);
@@ -189,7 +189,7 @@
 value_t fl_list2(value_t a, value_t b);
 value_t fl_listn(size_t n, ...);
 int fl_isnumber(value_t v);
-int fl_is_keyword_name(char *str, size_t len);
+int fl_is_keyword_name(const char *str, size_t len);
 value_t alloc_vector(size_t n, int init);
 
 /* safe casts */
--- a/posix/mp.h
+++ b/posix/mp.h
@@ -97,7 +97,7 @@
 mpint*	mpnrand(mpint *n, void (*gen)(uchar*, int), mpint *b);
 
 /* conversion */
-mpint*	strtomp(char*, char**, int, mpint*);	/* ascii */
+mpint*	strtomp(const char*, char**, int, mpint*);	/* ascii */
 char*	mptoa(mpint*, int, char*, int);
 mpint*	letomp(uchar*, uint, mpint*);	/* byte array, little-endian */
 int	mptole(mpint*, uchar*, uint, uchar**);
--- a/print.c
+++ b/print.c
@@ -18,7 +18,7 @@
 }
 
 static void
-outs(char *s, ios_t *f)
+outs(const char *s, ios_t *f)
 {
 	ios_puts(s, f);
 	FL(hpos) += u8_strwidth(s);
@@ -25,7 +25,7 @@
 }
 
 static void
-outsn(char *s, ios_t *f, size_t n)
+outsn(const char *s, ios_t *f, size_t n)
 {
 	ios_write(f, s, n);
 	FL(hpos) += u8_strwidth(s);
@@ -59,7 +59,7 @@
 }
 
 void
-fl_print_str(char *s, ios_t *f)
+fl_print_str(const char *s, ios_t *f)
 {
 	outs(s, f);
 }
@@ -113,7 +113,7 @@
 }
 
 static void
-print_symbol_name(ios_t *f, char *name)
+print_symbol_name(ios_t *f, const char *name)
 {
 	int i, escape = 0, charescape = 0;
 
@@ -390,7 +390,7 @@
 void
 fl_print_child(ios_t *f, value_t v)
 {
-	char *name;
+	const char *name;
 	if(FL(print_level) >= 0 && FL(p_level) >= FL(print_level) && (iscons(v) || isvector(v) || isclosure(v))){
 		outc('#', f);
 		return;
@@ -502,7 +502,7 @@
 }
 
 static void
-print_string(ios_t *f, char *str, size_t sz)
+print_string(ios_t *f, const char *str, size_t sz)
 {
 	char buf[512];
 	size_t i = 0;
--- a/print.h
+++ b/print.h
@@ -3,5 +3,5 @@
 void fl_print(ios_t *f, value_t v);
 void print_traverse(value_t v);
 void fl_print_chr(char c, ios_t *f);
-void fl_print_str(char *s, ios_t *f);
+void fl_print_str(const char *s, ios_t *f);
 void fl_print_child(ios_t *f, value_t v);
--- a/read.c
+++ b/read.c
@@ -27,7 +27,7 @@
 #endif
 
 static int64_t
-strtoll_mp(char *nptr, char **rptr, int base, mpint **mp)
+strtoll_mp(const char *nptr, char **rptr, int base, mpint **mp)
 {
 	int64_t x;
 	mpint *m;
@@ -63,7 +63,7 @@
 }
 
 static uint64_t
-strtoull_mp(char *nptr, char **rptr, int base, mpint **mp)
+strtoull_mp(const char *nptr, char **rptr, int base, mpint **mp)
 {
 	uint64_t x;
 	mpint *m;
@@ -93,7 +93,7 @@
 #define RS value2c(ios_t*, FL(readstate)->source)
 
 int
-isnumtok_base(char *tok, value_t *pval, int base)
+isnumtok_base(const char *tok, value_t *pval, int base)
 {
 	char *end;
 	int64_t i64;
@@ -153,13 +153,13 @@
 }
 
 int
-isnumtok(char *tok, value_t *pval)
+isnumtok(const char *tok, value_t *pval)
 {
 	return isnumtok_base(tok, pval, 0);
 }
 
 static int
-read_numtok(char *tok, value_t *pval, int base)
+read_numtok(const char *tok, value_t *pval, int base)
 {
 	return isnumtok_base(tok, pval, base);
 }
--- a/read.h
+++ b/read.h
@@ -1,8 +1,8 @@
 #pragma once
 
 value_t fl_read_sexpr(value_t f);
-int isnumtok_base(char *tok, value_t *pval, int base);
-int isnumtok(char *tok, value_t *pval);
+int isnumtok_base(const char *tok, value_t *pval, int base);
+int isnumtok(const char *tok, value_t *pval);
 
 // defines which characters are ordinary symbol characters.
 // exceptions are '.', which is an ordinary symbol character