libc: move strncpy to core

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Fri, 15 May 2026 10:04:13 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit 5951f6e5e9c9f0174c420b3f0df8b2c61e6a7c00
Author: Skye <[email protected]>
Date:   Fri May 1 11:20:11 2026 +0900

    libc: move strncpy to core
    
    Change-Id: If005a0305cedbab85905536238d0f799f19213e1

diff --git a/apps/plugin.c b/apps/plugin.c
index 6c689b21e6..98aa34c924 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -875,6 +875,7 @@ static const struct plugin_api rockbox_api = {
     gui_synclist_scroll_stop,
     add_event_ex,
     remove_event_ex,
+    strncpy,
 };
 
 static int plugin_buffer_handle;
diff --git a/apps/plugin.h b/apps/plugin.h
index 50fe1508ab..d20857302d 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -62,7 +62,6 @@
 
 #define splash(__ticks, __str) splashf(__ticks, __str)
 
-char* strncpy(char *, const char *, size_t);
 void* plugin_get_buffer(size_t *buffer_size);
 size_t plugin_reserve_buffer(size_t buffer_size);
 int plugin_open(const char *plugin, const char *parameter);
@@ -1038,6 +1037,7 @@ struct plugin_api {
                                             void *event_data,
                                             void *user_data),
                             void *user_data);
+    char* (*strncpy)(char * dst, const char * src, size_t count);
 };
 
 /* plugin header */
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 27bb4bb438..6f187b4f89 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -1119,7 +1119,7 @@ static void transcendFunc(char* func, double* tt, int* ttPower)
             
             /* Save current function context */
             char original_func[3];
-            strncpy(original_func, func, 3);
+            rb->strncpy(original_func, func, 3);
             
             transcendFunc("asin", &arcsin_input, &arcsin_power);
             
diff --git a/apps/plugins/doom/rockmacros.h b/apps/plugins/doom/rockmacros.h
index c749382952..aced29d3b8 100644
--- a/apps/plugins/doom/rockmacros.h
+++ b/apps/plugins/doom/rockmacros.h
@@ -76,6 +76,8 @@ int my_close(int id);
 #define strcmp(a,b)        rb->strcmp((a),(b))
 #undef  strncmp
 #define strncmp(a,b,c)     rb->strncmp((a),(b),(c))
+#undef  strncpy
+#define strncpy(a,b,c)     rb->strncpy((a),(b),(c))
 #undef  strchr
 #define strchr(a,b)        rb->strchr((a),(b))
 #undef  strrchr
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES
index 06adb04426..84495d8585 100644
--- a/apps/plugins/lib/SOURCES
+++ b/apps/plugins/lib/SOURCES
@@ -15,7 +15,6 @@ highscore.c
 simple_viewer.c
 display_text.c
 printcell_helper.c
-strncpy.c
 stdio_compat.c
 
 #if (LCD_DEPTH < 4)
diff --git a/apps/plugins/lua/rockconf.h b/apps/plugins/lua/rockconf.h
index 15d3f16106..0cd3cbc639 100644
--- a/apps/plugins/lua/rockconf.h
+++ b/apps/plugins/lua/rockconf.h
@@ -66,6 +66,7 @@ int splash_scroller(int timeout, const char* str);
 #define strcmp   rb->strcmp
 #define strcpy   rb->strcpy
 #define strlen   rb->strlen
+#define strncpy  rb->strncpy
 #define strtol   rb->strtol
 #define strtoul  rb->strtoul
 #define strstr   rb->strstr
diff --git a/apps/plugins/mikmod/mikmod_supp.h b/apps/plugins/mikmod/mikmod_supp.h
index aa4ede6873..f7d8d26d2a 100644
--- a/apps/plugins/mikmod/mikmod_supp.h
+++ b/apps/plugins/mikmod/mikmod_supp.h
@@ -29,6 +29,8 @@
 #define strcat(a,b)         rb->strcat(a,b)
 #undef strncmp
 #define strncmp(a,b,c)      rb->strncmp(a,b,c)
+#undef strncpy
+#define strncpy(a,b,c)      rb->strncpy(a,b,c)
 #undef strcasecmp
 #define strcasecmp(a,b)     rb->strcasecmp(a,b)
 #undef strstr
diff --git a/apps/plugins/puzzles/rbcompat.h b/apps/plugins/puzzles/rbcompat.h
index c438a6e110..2b146e72d1 100644
--- a/apps/plugins/puzzles/rbcompat.h
+++ b/apps/plugins/puzzles/rbcompat.h
@@ -65,6 +65,7 @@ double acos_wrapper(double x);
 #define strcmp rb->strcmp
 #define strcpy rb->strcpy
 #define strlen rb->strlen
+#define strncpy rb->strncpy
 #define strtol rb->strtol
 #define strtoq strtoq_wrapper
 #define strtouq strtouq_wrapper
diff --git a/apps/plugins/sdl/include/SDL_config_rockbox.h b/apps/plugins/sdl/include/SDL_config_rockbox.h
index 5a88378b89..542aeb535c 100644
--- a/apps/plugins/sdl/include/SDL_config_rockbox.h
+++ b/apps/plugins/sdl/include/SDL_config_rockbox.h
@@ -169,6 +169,7 @@
 #define strncat rb->strlcat /* hack */
 #endif
 #define strncmp rb->strncmp
+#define strncpy rb->strncpy
 #ifndef strncat
 #define strpbrk strpbrk_wrapper
 #endif
diff --git a/apps/plugins/sdl/progs/duke3d/Game/src/cvars.c b/apps/plugins/sdl/progs/duke3d/Game/src/cvars.c
index db9ede288b..71b761cee9 100644
--- a/apps/plugins/sdl/progs/duke3d/Game/src/cvars.c
+++ b/apps/plugins/sdl/progs/duke3d/Game/src/cvars.c
@@ -1,3 +1,4 @@
+#include "duke3d.h"
 #include "cvars.h"
 #include "cvar_defs.h"
 #include <stdlib.h>
diff --git a/apps/plugins/xworld/engine.c b/apps/plugins/xworld/engine.c
index d99d9df6c6..0aa5f72118 100644
--- a/apps/plugins/xworld/engine.c
+++ b/apps/plugins/xworld/engine.c
@@ -325,7 +325,7 @@ void engine_saveGameState(struct Engine* e, uint8_t slot, const char *desc) {
         file_writeUint16BE(&f, CUR_VER);
         file_writeUint16BE(&f, 0);
         char hdrdesc[32];
-        strncpy(hdrdesc, desc, sizeof(hdrdesc) - 1);
+        rb->strncpy(hdrdesc, desc, sizeof(hdrdesc) - 1);
         file_write(&f, hdrdesc, sizeof(hdrdesc));
         /* contents */
         struct Serializer s;
diff --git a/firmware/SOURCES b/firmware/SOURCES
index b80dc1a272..3bcdefbddc 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -356,6 +356,7 @@ libc/strcmp.c
 libc/strcpy.c
 libc/strcspn.c
 libc/strncmp.c
+libc/strncpy.c
 libc/strrchr.c
 libc/strstr.c
 libc/mktime.c
diff --git a/firmware/libc/include/string.h b/firmware/libc/include/string.h
index 6217fff15c..0c5180ce44 100644
--- a/firmware/libc/include/string.h
+++ b/firmware/libc/include/string.h
@@ -34,6 +34,7 @@ char    *_EXFUN(strerror,(int));
 size_t   _EXFUN(strlen,(const char *));
 char    *_EXFUN(strncat,(char *, const char *, size_t));
 int      _EXFUN(strncmp,(const char *, const char *, size_t));
+char    *_EXFUN(strncpy, (char *, const char *, size_t));
 char    *_EXFUN(strpbrk,(const char *, const char *));
 char    *_EXFUN(strrchr,(const char *, int));
 size_t   _EXFUN(strspn,(const char *, const char *));
diff --git a/apps/plugins/lib/strncpy.c b/firmware/libc/strncpy.c
similarity index 100%
rename from apps/plugins/lib/strncpy.c
rename to firmware/libc/strncpy.c
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs