On Thu, Jan 07, 2021 at 11:16:16PM +0000, Adam Barth wrote:
> Previously, this code was passing string constants to functions that did
> not declare their parameters as const. After this patch, the functions now
> declare that they do not modify these arguments, making it safe to pass
> string constants.
Thanks. Unfortunately the patch was mangled by your MUA (line wrapping
and expanded tabs).
Below is a version that applies.
ok tb
Index: lib/libc/gen/fts.c
===================================================================
RCS file: /cvs/src/lib/libc/gen/fts.c,v
retrieving revision 1.59
diff -u -p -r1.59 fts.c
--- lib/libc/gen/fts.c 28 Jun 2019 13:32:41 -0000 1.59
+++ lib/libc/gen/fts.c 7 Jan 2021 23:23:27 -0000
@@ -43,7 +43,7 @@
#define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))
-static FTSENT *fts_alloc(FTS *, char *, size_t);
+static FTSENT *fts_alloc(FTS *, const char *, size_t);
static FTSENT *fts_build(FTS *, int);
static void fts_lfree(FTSENT *);
static void fts_load(FTS *, FTSENT *);
@@ -52,7 +52,7 @@ static void fts_padjust(FTS *, FTSENT *
static int fts_palloc(FTS *, size_t);
static FTSENT *fts_sort(FTS *, FTSENT *, int);
static u_short fts_stat(FTS *, FTSENT *, int, int);
-static int fts_safe_changedir(FTS *, FTSENT *, int, char *);
+static int fts_safe_changedir(FTS *, FTSENT *, int, const char *);
#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' &&
!a[2])))
@@ -901,7 +901,7 @@ fts_sort(FTS *sp, FTSENT *head, int nite
}
static FTSENT *
-fts_alloc(FTS *sp, char *name, size_t namelen)
+fts_alloc(FTS *sp, const char *name, size_t namelen)
{
FTSENT *p;
size_t len;
@@ -1020,7 +1020,7 @@ fts_maxarglen(char * const *argv)
* Assumes p->fts_dev and p->fts_ino are filled in.
*/
static int
-fts_safe_changedir(FTS *sp, FTSENT *p, int fd, char *path)
+fts_safe_changedir(FTS *sp, FTSENT *p, int fd, const char *path)
{
int ret, oerrno, newfd;
struct stat sb;