| 359 | */ |
| 360 | #ifndef RT_KLIBC_USING_USER_STRNCPY |
| 361 | char *rt_strncpy(char *dst, const char *src, rt_size_t n) |
| 362 | { |
| 363 | #ifdef RT_KLIBC_USING_LIBC_STRNCPY |
| 364 | return strncpy(dst, src, n); |
| 365 | #else |
| 366 | if (n != 0) |
| 367 | { |
| 368 | char *d = dst; |
| 369 | const char *s = src; |
| 370 | |
| 371 | do |
| 372 | { |
| 373 | if ((*d++ = *s++) == 0) |
| 374 | { |
| 375 | /* NUL pad the remaining n-1 bytes */ |
| 376 | while (--n != 0) |
| 377 | { |
| 378 | *d++ = 0; |
| 379 | } |
| 380 | |
| 381 | break; |
| 382 | } |
| 383 | } while (--n != 0); |
| 384 | } |
| 385 | |
| 386 | return (dst); |
| 387 | #endif /* RT_KLIBC_USING_LIBC_STRNCPY */ |
| 388 | } |
| 389 | #endif /* RT_KLIBC_USING_USER_STRNCPY */ |
| 390 | RTM_EXPORT(rt_strncpy); |
| 391 |
no outgoing calls